I recently bought an AMD RX 550 graphics card to drive a 4K display for use with Mageia Linux 6. Not surprisingly, it did not work out of the box. The Mageia 6 kernel (4.9.43 as of Aug 2017) needs to be updated to avoid the amdgpu module from crashing, and needs further kernel updates (AMD’s DC/DAL, not yet in the mainline kernel as of Aug 2017) in order to use several new features, such as HDMI 2.0.
Update Feb 2018: All this stuff is now part of the mainline kernel as of version 4.15 (released Jan 28, 2018). Use kernel 4.15 or newer instead.
NULL pointer dereference when loading amdgpu kernel module
This appears to be a bug in the amdgpu module that’s been fixed in newer kernel versions. I don’t know whether this affects just the RX 550 or all Polaris devices. There are two ways to avoid this bug: blacklist the amdgpu module, or update the kernel. The former prevents the crash, but also prevents using the driver. The latter isn’t difficult: The kernel for Mageia Cauldron (4.12.8 as of Aug 2017) is new enough to work.
With the new kernel (amdgpu kernel module), the rest of the display driver works properly.
But if you’re trying to use a 4K @ 60 Hz display over HDMI 2.0 or use one of the new features not supported by the mainline kernel, then there is more to do. For me, I was trying to use 4K @ 60 Hz over HDMI.
AMD display code (DC/DAL)
Although the amdgpu module in a sufficiently-new mainline kernel works, it is missing some new features. Last I heard, some of these features already exist in the form of some patches (named DC or DAL) AMD has been trying to merge into the mainline kernel. These features include HDMI 2.0 (to support high-resolution displays over HDMI), audio over HDMI and DisplayPort, and display output for the new Vega GPUs.
Without DC, I could only use my 4K display at 3840×2160 30Hz over HDMI (3840×2160 60Hz over DisplayPort is not affected and works even without the DC/DAL patches).
Thus, I built a Mageia kernel package based on AMD’s amd-staging branch of the kernel. I used the Mageia cauldron SRPM, so this kernel includes all of Mageia’s kernel patches too.
I’m currently running this kernel (4.12.0) on my Mageia 6 system. 3840×2160 60 Hz now works over HDMI. HDMI audio also works, but requires a amdgpu.audio=1 parameter. This can be done by adding amdgpu.audio=1 to the kernel commandline, or adding options amdgpu audio=1 to /etc/modprobe.conf (or, equivalently, added to a file in /etc/modprobe.d/).
The kernel binary RPMs (for i586 and x86_64) are here: https://blog.stuffedcow.net/wp-content/uploads/amdgpu/RPMS/ (You probably want the kernel-amdgpu-desktop-4.12.0-1*.rpm, and possibly the corresponding -devel package.)
If you wish to build from source, the source RPMs are here: https://blog.stuffedcow.net/wp-content/uploads/amdgpu/SRPMS/
Leave a Reply