Description:
The linux614 kernel package (version 6.14.4-1) does not include the amdkfd.ko kernel module. This module is essential for enabling ROCm (Radeon Open Compute platform) and allowing AMD GPUs to be used for compute tasks. Its absence prevents userspace ROCm libraries and applications (such as Ollama with GPU acceleration, PyTorch/TensorFlow on ROCm, etc.) from detecting or utilizing compatible AMD GPUs for compute.
Steps to Reproduce:
Install the linux614 kernel (version 6.14.4-1).
Boot into the linux614 kernel.
Verify the absence of the amdkfd.ko module:
lsmod | grep kfd (shows no output)
sudo modprobe amdkfd (results in modprobe: FATAL: Module amdkfd not found in directory /lib/modules/6.14.4-1-MANJARO)
find /lib/modules/6.14.4-1-MANJARO/ -name “amdkfd.ko*” (shows no output)
Confirm the module is not listed as part of the installed package:
pacman -Ql linux614 | grep amdkfd (shows no output)
pacman -Ql linux614 | grep amdgpu (shows amdgpu.ko.zst is present, but no amdkfd.ko.zst)
Expected Behavior:
The linux614 kernel package should include the amdkfd.ko.zst module as part of the amdgpu driver, typically located in /usr/lib/modules/$(uname -r)/kernel/drivers/gpu/drm/amd/amdgpu/. This module should load (either automatically or manually via modprobe amdkfd) to enable ROCm GPU compute functionality.
Actual Behavior:
The amdkfd.ko.zst module is missing from the linux614 package and the installed kernel modules directory. Attempts to load it fail, and ROCm-dependent applications cannot use the GPU for compute, falling back to CPU or failing to detect compatible devices. For example, rocminfo fails to properly enumerate compute capabilities, often with HSA_STATUS_ERROR_OUT_OF_RESOURCES or similar errors if amdkfd is not available.
Hardware:
CPU: AMD Ryzen 5800XT
GPU: AMD Radeon RX 6700 XT (gfx1031)
System Information:
uname -r: 6.14.4-1-MANJARO
Output of pacman -Qi linux614:
Name : linux614
Version : 6.14.4-1
Description : The Linux 6.14 kernel and modules
Architecture : x86_64
URL : https://www.kernel.org/
Licenses : GPL-2.0-only
Groups : None
Provides : linux=6.14.4 KSMBD-MODULE VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE
Depends On : coreutils initramfs kmod
Optional Deps : wireless-regdb: to set the correct wireless channels of your country [installed]
linux-firmware: firmware images needed for some devices [installed]
Required By : linux614-virtualbox-host-modules
Optional For : base
Conflicts With : None
Replaces : virtualbox-guest-modules wireguard
Installed Size : 146.02 MiB
Packager : Manjaro Build Server build@manjaro.org
Build Date : Sat 26 Apr 2025 01:52:09 AM EDT
Install Date : Wed 14 May 2025 12:35:11 PM EDT
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature
Any help is appreciated, happy to follow up with any additional details. Thank you
Thanks for the follow-up. I was expecting that amdkfd.ko would be included with the amdgpu driver because it’s needed for the ROCm compute stack. The amdkfd.ko module is essential for ROCm userspace libraries to interface with AMD GPUs. Upstream kernel development includes amdkfd as a configurable part of the amdgpu driver (via CONFIG_DRM_AMDGPU_KFD), and including it is a common practice for distributions aiming to provide out-of-the-box ROCm support.
Regarding other distributions or kernel versions, while some like Ubuntu may also leverage DKMS packages (e.g., rocm-dkms from AMD’s repositories) to provide amdkfd, this is an alternative mechanism to ensure its availability. If Manjaro’s older kernel packages (linux510, linux612) also omit amdkfd.ko, it probably reflects a consistent packaging decision for those series. However, unlike distributions that readily offer official DKMS solutions, Manjaro users are then left without a straightforward path to enable ROCm if the module isn’t in the primary kernel package.
The core issue is that the current linux614 package, by omitting amdkfd.ko, prevents ROCm functionality. Incorporating amdkfd.ko into the linux614 package by enabling the relevant kernel configuration option during the build process seems to be the most direct solution, and I’ve tried pretty hard already to find a better one. Do you know of a package that might be able to help? I haven’t been able to find one, but I’m willing to try to create it if that’s what’s needed.