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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.