VCN 4.0 ring reset cannot recover a power-gated block, taking down the whole GPU (Phoenix, vcn_v4_0)
Lukas Heumos <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
Hello, I am hitting a reproducible full GPU loss on VCN 4.0.0 during hardware video decode, and I would like to ask whether the ring reset path is missing the same guard that was added to the suspend path for VCN 1.0 in 2022. Hardware and software --------------------- Machine: TUXEDO InfinityBook Pro AMD Gen9 SoC: AMD Ryzen 7 8845HS w/ Radeon 780M (Phoenix3, 1002:1900 rev c5) IP block: vcn_v4_0_0 VCN fw: ENC 1.19 DEC 7 VEP 0 Revision 0 (linux-firmware 20240318) Kernels: 6.17.0-121035-tuxedo, 6.17.0-122035-tuxedo, 7.0.0-28-generic Distro: Ubuntu 24.04 Userspace: Mesa 25.0.7 radeonsi VA-API, Firefox 152, GNOME/Wayland amdgpu: pg_mask=0xFFFFFFFF, reset_method=-1 (auto), gpu_recovery=-1 Symptom ------- During hardware-accelerated video decode in Firefox the unified VCN ring stops retiring work, the ring reset fails, the escalated full-adapter reset fails to resume the VCN block, and the driver gives up. The display dies and the machine has to be powered off with the power button. This has occurred 7 times over roughly two months, across three kernels. It is not tied to a particular site or codec. Confirmed sources include YouTube, ZDF Mediathek and a third streaming site, and two occurrences had no video navigation at all, most likely a background tab. The submitting process is always Firefox's RDD (decode) process. Log --- amdgpu 0000:65:00.0: ring vcn_unified_0 timeout, signaled seq=13423, emitted seq=13425 amdgpu 0000:65:00.0: Process RDD Process pid 7866 thread browser 4 :cs0 pid 23438 amdgpu 0000:65:00.0: Starting vcn_unified_0 ring reset amdgpu 0000:65:00.0: Register(0) [regUVD_POWER_STATUS] failed to reach value 0x00000001 != 0x00000002 amdgpu 0000:65:00.0: Register(0) [regUVD_RB_RPTR] failed to reach value 0x00000200 != 0x00000180 amdgpu 0000:65:00.0: Register(0) [regUVD_POWER_STATUS] failed to reach value 0x00000001 != 0x00000002 amdgpu 0000:65:00.0: Ring vcn_unified_0 reset failed amdgpu 0000:65:00.0: GPU reset begin!. Source: 1 amdgpu 0000:65:00.0: MODE2 reset amdgpu 0000:65:00.0: GPU reset succeeded, trying to resume amdgpu 0000:65:00.0: SMU is resuming... amdgpu 0000:65:00.0: SMU is resumed successfully! amdgpu 0000:65:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring vcn_unified_0 test failed (-110) amdgpu 0000:65:00.0: resume of IP block <vcn_v4_0> failed -110 amdgpu 0000:65:00.0: GPU reset end with ret = -110 amdgpu 0000:65:00.0: GPU Recovery Failed: -110 amdgpu 0000:65:00.0: [drm] *ERROR* [CRTC:364:crtc-0] hw_done or flip_done timed out Across the single failing boot, regUVD_POWER_STATUS misses its expected value eight times, always reading 0x2 where the driver requires 0x1: 8x regUVD_POWER_STATUS expected 0x00000001 read 0x00000002 4x regUVD_RB_RPTR expected 0x00000040 read 0x00000000 1x regUVD_RB_RPTR expected 0x00000200 read 0x00000180 Thanks, Lukas Heumos