The amdgpu-dkms
module is a crucial component for AMD GPU users on Linux systems. It provides the necessary drivers for AMD Radeon GPUs based on the Graphics Core Next (GCN), Radeon DNA (RDNA), and Compute DNA (CDNA) architectures. Building and configuring amdgpu-dkms
on Linux Kernel 6.12 involves several steps to ensure compatibility, proper installation, and optimal performance. This guide offers a comprehensive approach to successfully build and troubleshoot the amdgpu-dkms
module on Kernel 6.12.
Linux Kernel 6.12, released on November 17, 2024, introduces a range of new features and enhancements, including support for real-time computing via PREEMPT_RT, improved hardware compatibility, and enhanced security measures. However, these updates can also lead to compatibility issues with existing drivers and modules, such as amdgpu-dkms
, especially if they rely on specific kernel APIs or structures that have been modified or deprecated.
Before proceeding with the build process, ensure that your system meets the necessary prerequisites:
Verify that Linux Kernel 6.12 is compatible with the amdgpu-dkms
module. As newer kernel versions may not be immediately supported by AMDGPU drivers, consult AMD’s release notes or documentation to confirm compatibility.
Install the required build tools and dependencies using the following commands:
sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r)
These packages include essential tools for compiling and installing kernel modules, ensuring that your system is prepared for the build process.
If you choose to build the kernel from source, download the Linux Kernel 6.12 source code from the official website:
wget https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.12.tar.xz
tar -xvf linux-6.12.tar.xz
cd linux-6.12
Configure the kernel to include necessary options for your hardware and the amdgpu-dkms
module:
make defconfig
make menuconfig
Within the menuconfig
interface, ensure that AMDGPU support is enabled. Save and exit the configuration once completed.
Compile and install the kernel using the following commands:
make -j$(nproc)
sudo make modules_install
sudo make install
After installation, update your GRUB configuration and initramfs:
sudo update-grub
sudo update-initramfs -u
sudo reboot
Reboot your system to boot into the newly installed kernel.
Before installing amdgpu-dkms
, confirm that your current kernel version is supported by the module. Refer to AMD’s release notes or documentation for compatibility information.
Install the amdgpu-dkms
module using the following command:
sudo apt install amdgpu-dkms
Alternatively, you can install the AMD GPU driver package:
For the open-source driver:
sudo ./amdgpu-install -y
For the proprietary driver:
sudo ./amdgpu-pro-install -y
If the automatic installation fails, you may need to manually build the DKMS module:
sudo dkms install -m amdgpu -v <version>
Replace <version>
with the specific version of the amdgpu-dkms
module.
In case of errors, examine the logs for detailed information:
cat /var/log/amdgpu-install.log
cat /var/log/dkms/amdgpu/<version>/make.log
Common issues include missing kernel headers or version incompatibility. Ensure that the kernel headers for your current kernel are installed:
sudo apt install linux-headers-$(uname -r)
Linux Kernel 6.12 may have introduced changes to internal APIs, macros, or structures that amdgpu-dkms
relies on. For example, functions like drm_dp_mst_hpd_irq
might have been deprecated or modified, leading to build failures.
Users have reported build failures with error messages such as:
implicit declaration of function ‘drm_dp_mst_hpd_irq’; did you mean ‘drm_dp_mst_dpcd_write’?
cc1: some warnings being treated as errors
These errors indicate that the driver code is referencing outdated kernel functions or that stricter compiler flags are causing warnings to be treated as errors.
Errors like:
Error! Bad return status for module build on kernel: 6.12.6-200.fc41.x86_64
suggest that the kernel headers are missing or incompatible. Ensure that the correct kernel headers are installed using:
sudo apt install linux-headers-$(uname -r)
AMD’s ROCm (Radeon Open Compute) stack and the amdgpu-dkms
module may not immediately support the latest kernel releases. For instance, ROCm 6.2 does not officially support kernel versions 6.11 or 6.12.
If compatibility issues persist with kernel 6.12, consider downgrading to a supported kernel version, such as 6.5 or earlier. Check AMD’s release notes for a compatibility matrix:
Advanced users can manually patch the amdgpu-dkms
source code to address compatibility issues. This may involve replacing deprecated function calls or updating structures to align with the new kernel APIs.
Check for available patches in:
Modify the Makefile
for amdgpu-dkms
to remove the -Werror
flag, allowing the build to proceed despite warnings:
sudo nano /var/lib/dkms/amdgpu/<version>/build/Makefile
Locate and remove or comment out the line that adds the -Werror
flag.
The upstream Linux kernel includes a built-in amdgpu
driver. While it may lack some proprietary features, it often suffices for basic GPU functionality. To use it:
amdgpu-dkms
package:
sudo apt remove amdgpu-dkms
amdgpu
module is loaded:
sudo modprobe amdgpu
Verify that the compiler version matches the one used to build the kernel:
cat /proc/version
If there’s a mismatch, consider installing the compatible compiler version or rebuilding the kernel with the current compiler.
Ensure that the kernel headers are properly installed for your current kernel version:
sudo apt install --reinstall linux-headers-$(uname -r)
After installation, attempt to rebuild the amdgpu-dkms
module:
sudo dkms install -m amdgpu -v <version>
Confirm that the amdgpu
module is loaded:
lsmod | grep amdgpu
Ensure that your GPU is recognized by the system:
lspci -k | grep -EA3 'VGA|3D|Display'
If you installed the Vulkan driver, verify its functionality:
vulkaninfo --summary
AMD is likely to release updated drivers that support Linux Kernel 6.12. Monitor the ROCm GitHub repository and AMD’s official channels for updates:
If you possess the necessary skills, consider contributing patches to the ROCm project or the upstream kernel to enhance compatibility and support for newer kernel versions.
Distributions like Arch Linux or Fedora Rawhide often incorporate the latest kernel and driver updates more rapidly, potentially resolving compatibility issues quicker than other distributions.
Stay informed and seek assistance through community forums and discussions:
Building and configuring the amdgpu-dkms
module on Linux Kernel 6.12 requires careful preparation and troubleshooting to overcome compatibility challenges introduced by the newer kernel version. By ensuring that all prerequisites are met, following a systematic build process, and addressing common issues through the provided workarounds, you can achieve a successful installation of the amdgpu-dkms
module.
Stay engaged with the AMD community and monitor official channels for updates and patches that enhance compatibility with Linux Kernel 6.12. Leveraging community resources and contributing to open-source initiatives can also accelerate the resolution of compatibility issues, benefiting both individual users and the broader Linux ecosystem.