Amdgpu and radeon Kernel Modules

So I am running a AMD R7 250E GPU which is a GCN 1.0 card that has support for the amdgpu kernel module, but for some reason it’s not using this kernel, so I was wondering how I could set it up so it uses the amdgpu kernel instead.
However I heard that blacklisting the kernel or changing the config file no longer works on modern
kernels, I even heard about cases where the system was bricked by changing this configuration.

My specs are:
OS: Manjaro Linux x86_64
Kernel: 5.10.2-2-MANJARO
DE: Xfce 4.14
CPU: AMD FX-4300 (4) @ 3.800GHz
GPU: AMD ATI Radeon HD 7750/8740 / R7 250E
This is my GPU: Sapphire Ultimate R7 250 Specs | TechPowerUp GPU Database

If anyone can help it would be greatly appreciated.
Thank you all for the help, I would not be able to do it without it (I know it’s a bit generic but it’s true :crazy_face:)

For the complete solution also run:
sudo nano /etc/mkinitcpio.conf

Then add MODULES=(amdgpu radeon) to the file

At last run:
sudo mkinitcpio -P
Reboot and it should be good

Hello @Intergalactic_Apple :wink:

This GPU is is support by the radeon module, but there is also experimental support for the amdgpu module. You can enable it like here described:


Hi, thanks for the response! :slightly_smiling_face:

Does experimental support for amdgpu means that the kernel is quite possibly unstable?
And also how to I access the kernel command line to set the module parameters like described in the link you sent?

Don’t have to be unstable… Gentoo Wiki has a great and clean feature table:

GCN1 is “Southern Islands”.

Maybe this is more clear, how to set it up:

1 Like

Ok. thanks this is a bit more cleaner, but the problem now is that I don’t have any files on my modprobe.d folder or at least it doesn’t seems to be any.
Maybe I am interpreting things wrong, this commands are supposed to be imputed on the terminal?
With only the MODULES=(amdgpu radeon) that has to be on the mkinitcpio.conf file.
Is that right?

Yes these config files need to be created.

Yes… this for the terminal:

Maybe this is cleaner:
su && \
echo -e "options amdgpu si_support=1\noptions amdgpu cik_support=1" > /etc/modprobe.d/amdgpu.conf \
echo -e "options radeon si_support=0\noptions radeon cik_support=0" > /etc/modprobe.d/radeon.conf
su -c 'echo -e "options amdgpu si_support=1\noptions amdgpu cik_support=1" > /etc/modprobe.d/amdgpu.conf echo -e "options radeon si_support=0\noptions radeon cik_support=0" > /etc/modprobe.d/radeon.conf'

For this:

You can type:

sudo nano /etc/mkinitcpio.conf

and add the modules there.

Ok just one more question before I try this:
If I execute this commands without creating the files, will it create them for me, or I have to create them first?

su &&
echo -e “options amdgpu si_support=1\noptions amdgpu cik_support=1” > /etc/modprobe.d/amdgpu.conf
echo -e “options radeon si_support=0\noptions radeon cik_support=0” > /etc/modprobe.d/radeon.conf

It should create it… sorry, my failure… this works:

su -c 'echo -e "options amdgpu si_support=1\noptions amdgpu cik_support=1" > /etc/modprobe.d/amdgpu.conf && echo -e "options radeon si_support=0\noptions radeon cik_support=0" > /etc/modprobe.d/radeon.conf'

Ok I will try this now, and will update you on the results.

Wait there’s one more thing on the modules there is one that is empty with only this MODULES=" ", is this the one where I have to put this MODULES=(amdgpu radeon) on?

Old method:

MODULES="amdgpu radeon"

New method:

MODULES=(amdgpu radeon)

Thats all…

If sudo mkinitcpio -P shows no errors then it is ok.

There was 2 errors that were about kernel 5.7 maybe because I don’t have them installed.

==> Building image from preset: /etc/mkinitcpio.d/linux57.preset: 'default'
  -> -k /boot/vmlinuz-5.7-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.7-x86_64.img
==> ERROR: '/lib/modules/5.7.19-2-MANJARO' is not a valid kernel module directory
==> Building image from preset: /etc/mkinitcpio.d/linux57.preset: 'fallback'
  -> -k /boot/vmlinuz-5.7-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.7-x86_64-fallback.img -S autodetect
==> ERROR: '/lib/modules/5.7.19-2-MANJARO' is not a valid kernel module directory

Here it is

I assume you have removed already the kernel 5.7?

If yes, then remove all residual files from your /boot folder and sub-folders containing “5.7” in the filenames by "rm" command via terminal.


sudo mkinitcpio -P

Don’t expect me to repeat this. :crazy_face:

I think I removed it because it was causing some freezing issues.
How do I remove this residual files?

On the boot folders there are only 2 files mentioning 5.7.

initramfs-5.7-x86_64.img and initramfs-5.7-x86_64-fallback.img

Should I delete them? Are you sure it’s safe to remove it?

1 Like

Please run this again:

I saw that i forgot && between the commands. Sorry, where is my brain today??? :crazy_face:

1 Like

Do I have to run this again too?
sudo nano /etc/mkinitcpio.conf
MODULES=(amdgpu radeon)
Also is this command supposed to give any output?

If sudo nano /etc/mkinitcpio.conf only shows MODULES=(amdgpu radeon) then this is a problem :face_with_monocle:

It should look like this:

# vim:set ft=sh
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
MODULES=(amdgpu radeon)

# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries

# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.

# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No raid, lvm2, or encrypted root is needed.
#    HOOKS=(base)
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect block filesystems)
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev block filesystems)
##   This setup assembles a pata mdadm array with an encrypted root FS.
##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
#    HOOKS=(base udev block mdadm encrypt filesystems)
##   This setup loads an lvm2 volume group on a usb device.
#    HOOKS=(base udev block lvm2 filesystems)
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS="base udev resume autodetect modconf block keyboard keymap mdadm_udev lvm2 filesystems fsck"

# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.

# Additional options for the compressor

The file is identical to this one, so I guess it’s all good?
I was asking if I had to redo this two things again.
And if

su -c ‘echo -e “options amdgpu si_support=1\noptions amdgpu cik_support=1” > /etc/modprobe.d/amdgpu.conf && echo -e “options radeon si_support=0\noptions radeon cik_support=0” > /etc/modprobe.d/radeon.conf’

Was supposed to give any output

I thought that installing amdgpu-experimental was equivalent to all this process? And a way to avoid all this “mess”.

But the learning experience is worthwhile I guess :smile:

1 Like