15.1-RELEASE drm-kmod kernel panic / black screen with amdgpu / radeonkms (AMD E2-6110)

I have an Acer Aspire E15 running FreeBSD 15.1-RELEASE. I tried to get the correct graphics driver installed by first installing the drm-kmod metapackage and, when loading amdgpu or radeonkms from that resulted in a kernel panic, tried drm-515-kmod (via pkg) and later built graphics/drm-612-kmod from ports. All of these resulted in a kernel panic, black screen, or a combination of the two except if I load amdgpu.ko from graphics/drm-612-kmod which only hangs but doesn't panic with the following output:

Code:
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
<6>[drm] Initalizing kernel modesetting (MULLINS 0x1002:0x9852 0x1025:0x0865 0x00).
<6>[drm] register mmio base: 0XF0C00000
<6>[drm] register mmio size: 262144

After this, I am forced to hard reset the system. I can ssh in as my user but not run any commands.

This laptop has an AMD E2-6110 APU and it is from the era between radeonkms and amdgpu so I am not sure what to use for it. Since radeonkms.ko still causes a kernel panic even after I've built and installed drm-612-kmod but amdgpu.ko doesn't, I am thinking amdgpu.ko is the right driver, though why its being so difficult I don't know.

Edit: I have also built and installed drm-66-kmod from source and this has the same result as the binary version; kldload amdgpu causes a kernel panic.

Here are some maybe helpful information about the system and the port:

Code:
# uname -a
FreeBSD acer-aspire 15.1-RELEASE-p2 FreeBSD 15.1-RELEASE-p2 releng/15.1-n283596-aadd58dddcbc GENERIC amd64
# cd /usr/src && git branch
* releng/15.1
# pkg info -x drm-612-kmod
drm-612-kmod-6.12.85.1501000_1
# pciconf -lv | grep -B 4 VGA
vgapci0@pci0:0:1:0:     class=0x030000 rev=0x00 hdr=0x00 vendor=0x1002 device=0x9852 subvendor=0x1025 subdevice=0x0865
    vendor     = 'Advanced Micro Devices, Inc. [AMD/ATI]'
    device     = 'Mullins [Radeon R2 Graphics]'
    class      = display
    subclass   = VGA

I also have all of the AMD/Radeon GPU firmware as far as I know. I can't paste the entire list because it reaches the size limit.
 
Please post the output of:
pkg rquery '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t
pkg query '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t
pkg repositories

After some searching based on your CPU ID, and also based on radeon(4):
Code:
SUPPORTED HARDWARE
     The radeon driver supports PCI, AGP, and PCIe video cards based on the fol-
     lowing ATI/AMD chips (note: list is non-exhaustive):

[...]
     MULLINS	 MULLINS APUs
I'd say radeonkms seems more likely, at least in a first attempt (and a self built graphics/drm-612-kmod). If you haven't done so, I suggest you do not load radeonkms in /etc/rc.conf and use kldload(8) on the command line manually for the time being.
 
Please post the output of:
pkg rquery '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t
pkg repositories

Code:
hunter@acer-aspire:~ % pkg rquery '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t
FreeBSD-ports        gpu-firmware-radeon-kmod-mullins  20260519.1500068
FreeBSD-ports-kmods  gpu-firmware-radeon-kmod-mullins  20220511.1501000
hunter@acer-aspire:~ % pkg repositories
FreeBSD-ports: {
    url             : "pkg+https://pkg.FreeBSD.org/FreeBSD:15:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
FreeBSD-ports-kmods: {
    url             : "pkg+https://pkg.FreeBSD.org/FreeBSD:15:amd64/kmods_latest_1",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
FreeBSD-base: {
    url             : "pkg+https://pkg.FreeBSD.org/FreeBSD:15:amd64/base_release_1",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkgbase-15"
  }

I have the 2026 version of the Mullins GPU firmware installed:

Code:
% pkg info -x gpu-firmware-radeon-kmod-mullins
gpu-firmware-radeon-kmod-mullins-20260519.1500068

I also think you're right about radeonkms. If I load radeonkms in 6.6 or 6.12, it just makes the screen black and I can still type in a command like "reboot" to reboot without needing to hard reset.
 
pkg rquery '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t
Sorry, that should have been ("query" instead of "rquery"):
pkg query '%R %n %v' gpu-firmware-radeon-kmod-mullins | column -t

Rich (BB code):
% pkg info -x gpu-firmware-radeon-kmod-mullins 
gpu-firmware-radeon-kmod-mullins-20260519.1500068
Gives the info I was looking for. I'm not a graphics specialist and I don't know if for firmware the specific match to your running kernel matters: in your case the kernel of 15.1-RELEASE. However, "1500068" indicates it is for 15.0-RELEASE: that is mostly not what you want. To get the right version for all AMD Radeon firmware I suggest you build /graphics/gpu-firmware-radeon-kmod locally, that should show the right version 20260519.1501502 20260519.1501000.
(gpu-firmware-radeon-kmod - log shows you got the right dated-version.)

Verify that you have upgraded to the latest pacth, I have:
Code:
[1-0] % freebsd-version -kru
15.1-RELEASE-p2
15.1-RELEASE-p2
15.1-RELEASE-p2

Be aware that any kernel-sensitive package (aka "kmods") that does not have the correct OS string 1501xxx for your 15.1-RELEASE in its version string can be potentially disrupting when a kernel module of such a package is being kldloaded.

( Your pkg .conf settings are as expected.)
 
Hi hunter0one
Both the amdgpu and radeon driver support your APU, but for amdgpu you will have to force it (compat.linuxkpi.amdgpu_si_support="1" and compat.linuxkpi.radeon_si_support="0" not sure if on /boot/loader.conf or if /etc/sysctl.conf is enough).
Regarding the firmware and drm packages, as the _1 repo does not have the right kmod packages for 15.1, change to the kmods_latest repo (i.e. remove the _1 from kmods_latest_1 on your /etc/pkg/FreeBSD.conf) do a # pkg update -f and then:
  • # pkg remove -g gpu-firmware-* (to remove all existing firmware packages)
  • # pkg install gpu-firmware-radeon-kmod-mullins or # pkg install gpu-firmware-amd-kmod-mullins (depending on whether you want radeon or amdgpu)
  • (at this time ensure that the firmware package version ends with: .1501502 and not .1500068)
  • To ensure you don't kernel panic more times than necessary remove radeon or amdgpu from your kld_list (i.e. # sysrc kld_list-="radeon" and/or # sysrc kld_list-="amdgpu"), if you use a login manager I suggest disabling that also
  • # pkg remove -g drm-* (to remove all existing drm packages)
  • # pkg install drm-66-kmod or # pkg install drm-612-kmod (go with 612 if you want to try amdgpu). Note that 66 is the lowest you can go with amdgpu (and maybe radeon) on the current mesa version (i.e. 26.1.0+)
  • (at this time ensure that the drm package version ends with: .1501502 and not .1500068)
  • Reboot
  • You will be left at the command prompt but there should be no kernel panic (yei), if you had a login manager just switch to VT1 to 8
  • Load the driver you want to use (either # kldload radeon or # kldload amdgpu), if you have a kernel panic try the other driver (if you get a kernel panic on both try a different drm version and post the log here)
  • Assuming you had no kernel panic restart your login manager or start X11 or wayland and see if you have a graphical session with hardware acceleration (i.e glxgears from the mesa-demos package)
  • If everything checks out add the driver to your kld_list (i.e.: # sysrc kld_list+="radeon" or # sysrc kld_list+="amdgpu") and reboot
Note: do not try to kldunload a driver you will get a panic

Edited to mention that if you don't want to change to kmods_latest your only option is to compile from source (making sure that /usr/src is pointing to at least releng/15.1 but prefereable to your release/15.1.0 tag [-p1, -p2], /usr/ports must be on the main branch and up to date and you will have to compile either the graphics/drm-66-kmod or the graphics/drm-612-kmod port and install from there i.e. # cd /usr/ports/graphics/drm-612-kmod && make pkg && pkg install work/pkg/*.pkg).

Hope this helps.
 
I built gpu-firmware-amd-radeon-kmod-mullins and its showing as 20260519.1501000 rather than 1501502. Are you meant to checkout a specific branch of ports if on a release? I just followed what the handbook said here, which would be the equivalent of having latest right? (I have latest pkg repos as well)

Either way, with the built gpu-firmware-radeon-kmod-mullins-20260519.1501000 and trying drm-612-kmod again (running kldload radeonkms), it blackens the screen and reboots automatically. As a matter of fact, it may have been rebooting on its own before and I didn't realize it.

I am on 15.1-RELEASE-p2 as well, as seen here:
Code:
# freebsd-version -kru
15.1-RELEASE-p2
15.1-RELEASE-p2
15.1-RELEASE-p2

I could not find a value compat.linuxkpi.radeon_si_support or compat.linuxkpi.amdgpu_si_support anywhere, trying to set it failed because sysctl says "unknown oid 'compat.linuxkpi.radeon_si_support'".

Additionally, I was going to remove the _1 from kmods_latest but this meant removing _${VERSION_MINOR} from the file, and when I did that and attempted to install something it complained about the versions being different:

Code:
Newer FreeBSD version for package wifi-firmware-rtw89-kmod-rtw8922a:
To ignore this error set IGNORE_OSVERSION=yes
- package: 1501502
- running userland: 1501000

I am using pkgbase and the instructions for the upgrade to 15.1 said to do

Code:
pkg -oABI=FreeBSD:15:$(uname -p) -oOSVERSION=1501000 upgrade -r FreeBSD-base

Thats why OSVERSION is 1501000.
 
Following through with changing to kmods_latest and ensuring both the firmware and the drm-612-kmod have 1501502 at the end, I rebooted and attempted to load amdgpu. It says the kernel has a version mismatch then "kldload: can't load amdgpu: module already loaded or in kernel".
 
Thanks, yes I am aware of drm-612-kmod-6.12.85.1501502_1 and thats what I installed. I'm on 15.1-RELEASE so I don't think getting the latest (i.e those with the tag 1501502) works. I am not sure what those are built for.

Since the radeon firmware + drm-612-kmod from ports did not work, I tried to build and install the amdgpu firmware (gpu-firmware-amd-kmod-mullins) and running kldload has the same result as in the original post:

Code:
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
<6>[drm] Initalizing kernel modesetting (MULLINS 0x1002:0x9852 0x1025:0x0865 0x00).
<6>[drm] register mmio base: 0XF0C00000
<6>[drm] register mmio size: 262144

It freezes.
 
Regarding the /usr/ports distribution on the 15.1 release media: its from 20:th May 2026.
All the DRM 6.12 bits were added to the ports-tree after the release of 15.1.

Therefore you cant use the PORTS distribution from the release media.
You need to get a fresh Ports tree useing the procedure in the Freebsd Handbook chapter 4.5
Delete the contents of /usr/ports before using GIT to download a new ports tree.
as the git cloneing fails if there is old files left in /usr/ ports .
You can also set up a new directory for new ports tree , like /usr/newports or similar.
 
Regarding the /usr/ports distribution on the 15.1 release media: its from 20:th May 2026.
All the DRM 6.12 bits were added to the ports-tree after the release of 15.1.

Therefore you cant use the PORTS distribution from the release media.
You need to get a fresh Ports tree useing the procedure in the Freebsd Handbook chapter 4.5
Delete the contents of /usr/ports before using GIT to download a new ports tree.
as the git cloneing fails if there is old files left in /usr/ ports .
You can also set up a new directory for new ports tree , like /usr/newports or similar.
I've used git:

Code:
# cd /usr/ports && git branch
* main

drm-612-kmod and gpu-firmware-*-kmod-mullins built from source have the tag 1501000.
 
mmmm

pkg info drm-612-kmod-6.12.85.1501501_1
drm-612-kmod-6.12.85.1501501_1
Name : drm-612-kmod
Version : 6.12.85.1501501_1
Installed on : Tue Aug 18 12:42:11 2026 CEST
Origin : graphics/drm-612-kmod
Architecture : FreeBSD:15:amd64

I built this last week.
from a fresh download of the Entire /usr/ports tree.
 
I built gpu-firmware-amd-radeon-kmod-mullins and its showing as 20260519.1501000 rather than 1501502.
Yes, "20260519.1501000 " is the correct version for 15.1-RELEASE (I picked the wrong version string from stable/15).

If using a locally build graphics/drm-612-kmod with the above mullins firmware still results in problems when kldloading radeonkms, then, considering the age of your CPU ( AMD E2-6110, release date: Release Date: Apr 29th, 2014), you might try with graphics/drm-515-kmod (I recommend build locally) in combination with radeonkms.

Perhaps, if that fails, switch to using kld_list="amdgpu" (I haven't found a solid reference that amdgpu can be used but I found it mentioned several times, I don't know how to link your specific CPU ID to a specific firmware or drm-xx-kmod version; it's somewhere in the source code). Then that should require the accompanying firmware for "Mullins" contained in graphics/gpu-firmware-amd-kmod appropriate for your running kernel version.

I don't have any specific knowledge if the settings mentioned by fahrenheit for graphics/drm-612-kmod and amdgpu also apply to previous versions such as graphics/drm-515-kmod.
 
Thanks for the recommendations so far. I'll try compiling drm-515-kmod as a last resort, though I found this hardware probe which shows a Mullins Radeon R2 Graphics device running the amdgpu driver on Linux 6.10.

I've been using kldload manually and trying to avoid kld_list because if it panics or makes the screen go black or some combination of the two, then I have to reboot in single user mode and remove the entry. So far with all that I've tried it's been one or the other. I'm starting to wonder if this is a regression of some sort.

Edit: For the record, I haven't installed any desktops yet. I am just trying to get either module to load correctly in the VT first before I go any further.
 
not sure if on /boot/loader.conf or if /etc/sysctl.conf is enough
It depends on the variable is tunable or sysctl.

In /boot/loader.conf, only tunables are assured to work.

On the other hand, normal sysctl set in /boot/loader.conf could be completely ignored, depending on how it's actually defined.

In /etc/sysctl.conf, writable sysctls and tunables can be set. But at least readonly ones cannot. (There are readonly sysctls just for exposing what kernel / kmods auto-configured it. But some of readonly tunables can be initialized via /boot/loader.conf, as there's a way to fetch initial value from there for tunables, but cannot modify afterwards.)

sysctl -a would show all sysctls and tunables with the values set.
sysctl -aT would limit the output of the above for tunables.
sysctl -aW would limit the output of sysctl -a with writable ones.
sysctl -aTW would limit the output of sysctl -aW with tunables.
 
It sometimes helps to specify the full path of amdgpu.ko...

I'd suggest running updatedb, followed by locate amdgpu.ko | wc -l.

The wc -l part of the command will tell you if there are lots of places to look for the full path, or just a few.

If there are just a few, do an ls -lh on each line. That will help you narrow down the correct path to amdgpu.ko...

I have been bitten by that a few times, just specifying the module name in /etc/rc.conf or /boot/loader.conf will look in /boot/kernel/, while the correct path in my case was /boot/modules/!
 
Back
Top