Per coincidence, I worked on this same bug today, as I'm hoping to try
make use of the amdpro legacy OpenCL drivers, which will need amdgpu as
a base.

The issue is Ubuntu is providing newer kernel HWE stacks with amdgpu
driver modules, but failing to keep related Linux firmware packages up
to date and in lockstep. E.g. 20.04.3 LTS is based on kernel 5.11 from
hirsute (21.04), but the linux-firmware collection is left outdated on
1.187.20 that came with kernel 5.4?

https://packages.ubuntu.com/hirsute-updates/linux-firmware shows v
1.197.3, so I'd expect a HWE stack with 20.04.3 to also provide the same
level of firmware updates for kernel 5.11.

> I use UEFI and the module wasn't signed

Perhaps installing the official deb/repo instead of upstream has a good
shot at the firmware that gets added into initramfs being signed
properly (one would hope!). I manged the following workaround, but my
case is still legacy BIOS.

curl -OL 
http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.197.3_all.deb
sudo dpkg -i linux-firmware_1.197.3_all.deb

Extra hint: maybe download the deb from your closest mirror because this
package is almost 200MB large.

P.S. While most firmware is hopefully decoupled and backward compatible
to use with older kernel modules/drivers, one never knows if a bug might
show up by using very new firmware with much older modules, since you
stray into a untested path between the firmware and the kernel modules.
Hence I tried to match the Ubuntu release, kernel versions, and tested-
at-the-time firmware more closely than just jumping to latest upstream
firmware versions.

Its similar but a kinda upside version of the older proprietary graphics
driver blob hell that plagued Linux over the previous decade. Firmware
is the other way round where the in-tree admgpu driver needs the
firmware to provide a stable interface. Can't recall if Linux ever
solved the lack of a stable in-kernel/versioned ABI between drivers and
binary driver blobs. It's why AMD FGLRX proprietary drivers blobs were
always hell, and AMD failed to keep up with ABI changes on the kernel
and often didn't work with newer kernels, hence amdgpu became the new
middle layer/foundation to bridge this ABI gap and add create a
stable/presumably versioned ABI for AMD that the kernel developers never
bothered to provide. Now AMD-pro software and extended driver blobs can
rely on the opensource amdgpu parts to be less of a moving target as ABI
changes on the kernel core will need to update/include required changes
to amdgpu because amdgpu is now in-tree and should be tested in lockstep
with other kernel changes.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-firmware in Ubuntu.
https://bugs.launchpad.net/bugs/1953249

Title:
  UVD firmware for AMD Southern Islands (GCN 1) GPUs is missing

Status in linux-firmware package in Ubuntu:
  Confirmed

Bug description:
  Release: up-to-date Focal LTS (20.04.3)
  Package-version: linux-firmware 1.187.20
  Hardware model: [AMD/ATI] Chelsea LP [Radeon HD 7730M]

  With the latest kernel upgrade (5.4 --> 5.11, if I recall correctly),
  my laptop's discrete graphics stopped working. Looking at the logs, I
  found these messages:

  -- snippet --
  kernel: [    1.492908] [drm] amdgpu: dpm initialized
  kernel: [    1.492932] [drm] AMDGPU Display Connectors
  kernel: [    1.492951] amdgpu 0000:01:00.0: Direct firmware load for 
amdgpu/verde_uvd.bin failed with error -2
  kernel: [    1.492954] amdgpu 0000:01:00.0: amdgpu: amdgpu_uvd: Can't load 
firmware "amdgpu/verde_uvd.bin"
  kernel: [    1.492957] [drm:amdgpu_device_ip_init [amdgpu]] *ERROR* sw_init 
of IP block <uvd_v3_1> failed -2
  kernel: [    1.493196] amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_init 
failed
  kernel: [    1.493198] amdgpu 0000:01:00.0: amdgpu: Fatal error during GPU 
init
  kernel: [    1.493200] amdgpu 0000:01:00.0: amdgpu: amdgpu: finishing device.
  -- snippet --

  In fact, file '/lib/firmware/amdgpu/verde_uvd.bin' was missing.
  Running '$ dpkg -L linux-firmware | sort' gives this:

  -- snippet --
  /lib/firmware/amdgpu/vegam_uvd.bin
  /lib/firmware/amdgpu/vegam_vce.bin
  /lib/firmware/amdgpu/verde_ce.bin
  /lib/firmware/amdgpu/verde_k_smc.bin
  /lib/firmware/amdgpu/verde_mc.bin
  /lib/firmware/amdgpu/verde_me.bin
  /lib/firmware/amdgpu/verde_pfp.bin
  /lib/firmware/amdgpu/verde_rlc.bin
  /lib/firmware/amdgpu/verde_smc.bin
  /lib/firmware/amdgpu/yellow_carp_asd.bin
  /lib/firmware/amdgpu/yellow_carp_ce.bin
  -- snippet --

  Copying the file from upstream
  (https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-
  firmware.git/tree/amdgpu/verde_uvd.bin) didn't work on my system,
  probably because I use UEFI and the module wasn't signed (error
  below):

  -- snippet --
  kernel: [  502.174932] amdgpu 0000:01:00.0: amdgpu: amdgpu_uvd: Can't 
validate firmware "amdgpu/verde_uvd.bin"
  kernel: [  502.174992] [drm:amdgpu_device_ip_init [amdgpu]] *ERROR* sw_init 
of IP block <uvd_v3_1> failed -22
  kernel: [  502.175285] amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_init 
failed
  kernel: [  502.175289] amdgpu 0000:01:00.0: amdgpu: Fatal error during GPU 
init
  kernel: [  502.175293] amdgpu 0000:01:00.0: amdgpu: amdgpu: finishing device.
  -- snippet --

  I can confirm that reverting kernel driver to 'radeonsi' makes the
  device usable again, but at the expense of Vulkan APIs (not supported
  by this driver).

  Could you, please, fix this?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1953249/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to