# Graphics driver stops working after installing latest large batch of updates AND then running pkg autoremove



## colemakker (Jul 18, 2022)

Hi,

There was a big update recently that started with an upgrade to pkg itself, and then on my computer the download size was 2GB and extra space used was ~700MB. I noted there were a lot of new graphics drivers in the update.

After the update which was done automatically by a script which followed `pkg upgrade -y` with `pkg autoremove -y` and `pkg clean -y` upon reboot my graphics card, a Radeon RX 570, was running without a driver. I used a recent image of my system disk that I made before the 13.1 update and rolled it back, and found that if I do the large pkg update but don't run `pkg autoremove` the graphics card driver keeps working. I'm guessing the issue may be easy to diagnose and fix for people who know a little more about FreeBSD than I do.

This was `dmesg | grep -iC3 drm` before the update.

```
$ dmesg | grep -iC3 drm
kbd3 at ukbd1
ugen0.4: <Yoyodyne Consulting JDS Labs Element DAC> at usbus0
mountroot: waiting for device /dev/gptid/61ed17c2-158d-11ea-a5ff-1c1b0dcd6dd4...
[drm] amdgpu kernel modesetting enabled.
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
sysctl_warn_reuse: can't re-use a leaf (hw.dri.debug)!
[drm] initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x1DA2:0xE366 0xEF).
[drm] register mmio base: 0xEFE00000
[drm] register mmio size: 262144
[drm] add ip block number 0 <vi_common>
[drm] add ip block number 1 <gmc_v8_0>
[drm] add ip block number 2 <tonga_ih>
[drm] add ip block number 3 <gfx_v8_0>
[drm] add ip block number 4 <sdma_v3_0>
[drm] add ip block number 5 <powerplay>
[drm] add ip block number 6 <dm>
[drm] add ip block number 7 <uvd_v6_0>
[drm] add ip block number 8 <vce_v3_0>
ATOM BIOS: 113-2E366FU-O53
[drm] UVD is enabled in VM mode
[drm] UVD ENC is enabled in VM mode
[drm] VCE enabled in VM mode
[drm] vm size is 128 GB, 2 levels, block size is 10-bit, fragment size is 9-bit
drmn0: successfully loaded firmware image 'amdgpu/polaris10_mc.bin'
drmn0: VRAM: 4096M 0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
drmn0: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
Failed to add WC MTRR for [0xd0000000-0xdfffffff]: -22; performance may suffer
[drm] Detected VRAM RAM=4096M, BAR=256M
[drm] RAM width 256bits GDDR5
[TTM] Zone  kernel: Available graphics memory: 16730204 KiB
[TTM] Zone   dma32: Available graphics memory: 2097152 KiB
[TTM] Initializing pool allocator
[drm] amdgpu: 4096M of VRAM memory ready
[drm] amdgpu: 4096M of GTT memory ready.
[drm] GART: num cpu pages 65536, num gpu pages 65536
[drm] PCIE GART of 256M enabled (table at 0x000000F400900000).
drmn0: successfully loaded firmware image 'amdgpu/polaris10_pfp_2.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_me_2.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_ce_2.bin'
[drm] Chained IB support enabled!
drmn0: successfully loaded firmware image 'amdgpu/polaris10_rlc.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_mec_2.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_mec2_2.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_sdma.bin'
drmn0: successfully loaded firmware image 'amdgpu/polaris10_sdma1.bin'
amdgpu: [powerplay] hwmgr_sw_init smu backed is polaris10_smu
drmn0: successfully loaded firmware image 'amdgpu/polaris10_uvd.bin'
[drm] Found UVD firmware Version: 1.130 Family ID: 16
drmn0: successfully loaded firmware image 'amdgpu/polaris10_vce.bin'
[drm] Found VCE firmware Version: 53.26 Binary ID: 3
drmn0: successfully loaded firmware image 'amdgpu/polaris10_k_smc.bin'
[drm] DM_PPLIB: values for Engine clock
[drm] DM_PPLIB:     300000
[drm] DM_PPLIB:     588000
[drm] DM_PPLIB:     952000
[drm] DM_PPLIB:     1041000
[drm] DM_PPLIB:     1106000
[drm] DM_PPLIB:     1168000
[drm] DM_PPLIB:     1209000
[drm] DM_PPLIB:     1340000
[drm] DM_PPLIB: Validation clocks:
[drm] DM_PPLIB:    engine_max_clock: 134000
[drm] DM_PPLIB:    memory_max_clock: 175000
[drm] DM_PPLIB:    level           : 8
[drm] DM_PPLIB: values for Memory clock
[drm] DM_PPLIB:     300000
[drm] DM_PPLIB:     1000000
[drm] DM_PPLIB:     1750000
[drm] DM_PPLIB: Validation clocks:
[drm] DM_PPLIB:    engine_max_clock: 134000
[drm] DM_PPLIB:    memory_max_clock: 175000
[drm] DM_PPLIB:    level           : 8
[drm] Display Core initialized with v3.2.48!
[drm] Connector DP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector DP-2: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-2
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-2: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-2
[drm]   - kern.vt.fb.default_mode
[drm] Connector DVI-D-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.DVI-D-1
[drm]   - kern.vt.fb.default_mode
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] Driver supports precise vblank timestamp query.
[drm] UVD and UVD ENC initialized successfully.
[drm] VCE initialized successfully.
[drm] fb mappable at 0xD0E30000
[drm] vram apper at 0xD0000000
[drm] size 33177600
[drm] fb depth is 24
[drm]    pitch is 15360
WARNING: Device "fb" is Giant locked and may be deleted before FreeBSD 14.0.
VT: Replacing driver "vga" with new "fb".
start FB_INFO:
type=11 height=2160 width=3840 depth=32
cmsize=16 size=33177600
pbase=0xd0e30000 vbase=0xfffff800d0e30000
name=drmn0 flags=0x0 stride=15360 bpp=32
cmap[0]=0 cmap[1]=7f0000 cmap[2]=7f00 cmap[3]=c4a000
end FB_INFO
drmn0: fb0: amdgpudrmfb frame buffer device
[drm] Initialized amdgpu 3.35.0 20150101 for drmn0 on minor 0
ichsmb0: <Intel Sunrise Point-H SMBus controller> port 0xf000-0xf01f mem 0xeff16000-0xeff160ff irq 16 at device 31.4 on pci0
smbus0: <System Management Bus> on ichsmb0
acpi_wmi0: <ACPI-WMI mapping> on acpi0
```

After running `pkg update -y` and `pkg autoremove -y`

```
$ dmesg | grep -iC3 drm
kbd3 at ukbd1
ugen0.4: <Yoyodyne Consulting JDS Labs Element DAC> at usbus0
mountroot: waiting for device /dev/gptid/61ed17c2-158d-11ea-a5ff-1c1b0dcd6dd4...
[drm] amdgpu kernel modesetting enabled.
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
sysctl_warn_reuse: can't re-use a leaf (hw.dri.debug)!
[drm] initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x1DA2:0xE366 0xEF).
[drm] register mmio base: 0xEFE00000
[drm] register mmio size: 262144
[drm] add ip block number 0 <vi_common>
[drm] add ip block number 1 <gmc_v8_0>
[drm] add ip block number 2 <tonga_ih>
[drm] add ip block number 3 <gfx_v8_0>
[drm] add ip block number 4 <sdma_v3_0>
[drm] add ip block number 5 <powerplay>
[drm] add ip block number 6 <dm>
[drm] add ip block number 7 <uvd_v6_0>
[drm] add ip block number 8 <vce_v3_0>
ATOM BIOS: 113-2E366FU-O53
[drm] UVD is enabled in VM mode
[drm] UVD ENC is enabled in VM mode
[drm] VCE enabled in VM mode
[drm] vm size is 128 GB, 2 levels, block size is 10-bit, fragment size is 9-bit
drmn0: could not load firmware image 'amdgpu/polaris10_mc.bin'
mc: Failed to load firmware "amdgpu/polaris10_mc.bin"
[drm ERROR :gmc_v8_0_sw_init] Failed to load mc firmware!
[drm ERROR :amdgpu_device_ip_init] sw_init of IP block <gmc_v8_0> failed -2
drmn0: amdgpu_device_ip_init failed
drmn0: Fatal error during GPU init
[drm] amdgpu: finishing device.
Warning: can't remove non-dynamic nodes (dri)!
device_attach: drmn0 attach returned 2
ichsmb0: <Intel Sunrise Point-H SMBus controller> port 0xf000-0xf01f mem 0xeff16000-0xeff160ff irq 16 at device 31.4 on pci0
smbus0: <System Management Bus> on ichsmb0
acpi_wmi0: <ACPI-WMI mapping> on acpi0
```

Thankyou for your help.


----------



## zirias@ (Jul 18, 2022)

In short: install `gpu-firmware-amd-kmod-polaris10`.

The GPU firmware package was split into many packages, so you're not forced any more to have lots of firmwares installed you won't use.

`drm-kmod` (the meta-package for the drivers) still depends on `gpu-firmware-kmod` (the new meta-package for all firmwares), so if you just install that, you automatically get firmwares as well. But if you manually install a concrete driver package (e.g. `drm-fbsd13-kmod`), there's no dependency any more, so you get the chance to _only_ install the one firmware package needed by your GPU.

See also:








						gpu-firmware-kmod split into individual packages
					

Just noticed this happened on the latest update of graphics/gpu-firmware-kmod. No need to change anything, the "main" package just depends on all firmware packages – but it's nice there's the possibility now to only install the firmware you actually need :cool:: save a bit of disk space and have...




					forums.freebsd.org


----------



## colemakker (Jul 18, 2022)

Thanks for the quick reply and fix


----------

