How to load different version of radeon driver?

Continuing the discussion from F34 hanging after boot:

From the bugzilla entry, it is suggested that the problem might be on the radeon driver.

How can I find and load different version of the radeon driver to see if it helps?

00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri [Radeon R7 Graphics] (pro
g-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device d000
	Flags: bus master, fast devsel, latency 0, IRQ 46, IOMMU group 0
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	Memory at d0000000 (64-bit, prefetchable) [size=8M]
	I/O ports at f000 [size=256]
	Memory at feb00000 (32-bit, non-prefetchable) [size=256K]
	Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: radeon
	Kernel modules: radeon, amdgpu

I just searched AMD’s website and found this:

https://www.amd.com/en/support/kb/release-notes/rn-rad-lin-15-11

Unfortunately, it says it only works with Linux kernels up to version 3.19

I think your card is one of the “Southern Islands” series:

It looks like there has been recent support added for them in the Linux open source amdgpu driver:

https://www.phoronix.com/scan.php?page=news_item&px=GCN-1.0-GPU-Reset-AMDGPU

Arch’s Wiki has some notes on how to enable the experimental support for southern islands cards:

ArchWiki - AMDGPU

You might try passing si_support=1 to the amdgpu driver. I think you would need to create a .conf file under /etc/modprobe.d containing the following line:

options amdgpu si_support=1
2 Likes

Thanks for looking into my issue!

Yes, I am trying to use amdgpu instead of radeon to see if it makes a difference.

I created /etc/modprobe.d/amdgpu.conf
options amdgpu si_support=1

But lspci -v still shows radeon is still in use.

According to ArchWiki:

Specify the correct module order

Even when AMDGPU support for SI/CIK has been enabled by the kernel, the radeon driver may be loaded before the amdgpu driver.

Make sure amdgpu has been set as first module in the Mkinitcpio#MODULES array, e.g. MODULES=(amdgpu radeon) .

Fedora uses dracut instead of mkinitcpio. I have no idea how this module ordering can be specified in dracut.

2 Likes

The only thing I’m aware of is the rd.driver.pre= kernel parameter (see man dracut.cmdline). I think you’d have to be sure the amdgpu kernel module (and your custom .conf file) is included in dracut.

Also, it looks like the radeon module also takes the si_support=1 parameter. If the system requires both modules, you may need to specify that option for both of them.

1 Like

I tried:

rd-driver.pre=amdgpu rd.driver.blacklist=radeon boot parameters
and created /etc/modprobe.d/amdgpu.conf
options amdgpu si_support=1
options radeon si_support=1

After reboot, lspci -v still reporting:
Kernel driver in use: radeon

And gdm still hanging on start.

Did you regenerate the initramfs? I think for rd.driver.pre to work, the module(s) must be in the initramfs. Also, it looks like you might have misspelled rd.driver.pre.

I successfully load the amdgpu driver with

$ cat /proc/cmdline 
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.11.21-300.fc34.x86_64 root=UUID=bda68cec-a76d-4e6a-be52-fefcff9f76a6 ro rootflags=subvol=root amdgpu.dc=0 radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1

So it turns out A10-K7850K is using Sea Islands graphics instead of South Islands graphics.

Now my lspci -v reads:

00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri [Radeon R7 Graphics] (prog-if 00 [VGA cont
roller])
	Subsystem: Gigabyte Technology Co., Ltd Device d000
	Flags: bus master, fast devsel, latency 0, IRQ 48, IOMMU group 0
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	Memory at d0000000 (64-bit, prefetchable) [size=8M]
	I/O ports at f000 [size=256]
	Memory at feb00000 (32-bit, non-prefetchable) [size=256K]
	Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [270] Secondary PCI Express
	Capabilities: [2b0] Address Translation Service (ATS)
	Capabilities: [2c0] Page Request Interface (PRI)
	Capabilities: [2d0] Process Address Space ID (PASID)
	Kernel driver in use: amdgpu
	Kernel modules: radeon, amdgpu

And GDM started OK.

Thank you very much for your continued support!

2 Likes

very cool ! I have a Pitcairn series Radeon as well and a Kaveri CPU !

1 Like

How can I reproduce this on my system ?? I’m using an AMD A6-7310 APU on my laptop.

You need to find out if yoour chip is Sea Islands of Southern Islands. And add the kernel boot parameter accordingly.

What command should I use to know that ??

The most secure way to find out is by testing the two set of parameters - and see which one worked.

I determine it by looking in these charts, especially sections 5-10.

https://www.x.org/wiki/RadeonFeature/

3 Likes