Zufällige Freezes unter Fedora (amdgpu)

Seit einigen Monaten benutze ich Fedora 37 (und neuerdings 38) auf zwei ThinkPads (T14 G3, P14s G3) mit AMD Ryzen-SoC (6850U).

Fedora 37 erschien ursprünglich mit dem Linux-Kernel in der Version 6.0.7. Spätere Updates brachten die Versionen 6.1 und 6.2. Letztere führte bei meinen Systemen leider auch zufällige Freezes ein. Unabhängig von den ausgeführten Anwendungen, Power-Profil und Systemlast fror das System einfach ein und musste rabiat ausgeschaltet werden. Die Firmware war jeweils auf dem neuesten Stand.

Memtest86+ zeigte, dass es sich um keinen RAM-Fehler handelt, wie ich zuerst vermutet hatte.

Ein Blick in die Systemlogs zeigte beim P14s G3 nichts Auffälliges, beim T14 G3 sah ich hingegen folgendes:

 1Apr 20 15:32:46 tppinkepank kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx_0.0.0 timeout, signaled seq=6054011, emitted seq=6054013
 2Apr 20 15:32:46 tppinkepank kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process gnome-shell pid 2613 thread gnome-shel:cs0 pid 2642
 3Apr 20 15:32:46 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: GPU reset begin!
 4Apr 20 15:32:48 tppinkepank gnome-shell[2613]: amdgpu: amdgpu_cs_query_fence_status failed.
 5Apr 20 15:32:48 tppinkepank gnome-shell[2613]: amdgpu: The CS has been rejected (-125), but the context isn't robust.
 6Apr 20 15:32:48 tppinkepank gnome-shell[2613]: amdgpu: The process will be terminated.
 7...
 8...
 9Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: [gfxhub] page fault (src_id:0 ring:24 vmid:2 pasid:32770, for process firefox pid 3641 thread firefox:cs0 pid 3741)
10Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: in page starting at address 0x0000800141c11000 from client 0x1b (UTCL2)
11Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: GCVM_L2_PROTECTION_FAULT_STATUS:0x00201031
12Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: Faulty UTCL2 client ID: TCP (0x8)
13Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: MORE_FAULTS: 0x1
14Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: WALKER_ERROR: 0x0
15Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: PERMISSION_FAULTS: 0x3
16Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: MAPPING_ERROR: 0x0
17Apr 20 16:09:15 tppinkepank kernel: amdgpu 0000:04:00.0: amdgpu: RW: 0x0

Schlussendlich fand ich die Problemlösung in der Fedora Community: einer der User hatte ein ähnliches Problem mit dem verwandten T14s G3 AMD und konnte dieses zusammen mit den bekannten Screen Glitches lösen. Es genügt, den Boot-Parameter amdgpu.dcdebugmask=0x10 in der GRUB-Konfiguration (/etc/default/grub) zu ergänzen:

1...
2GRUB_CMDLINE_LINUX="... amdgpu.dcdebugmask=0x10"
3...

Anschließend müssen die GRUB-Konfiguration aktualisiert und der Rechner neugestartet werden:

1# grub2-mkconfig -o /boot/grub2/grub.cfg
2# reboot

Wenn der Bootparameter richtig gesetzt wurde, sollten die folgenden dri-Parameter (Direct Rendring Infrastructure) gesetzt sein:

1# cat /sys/kernel/debug/dri/1/eDP-1/psr_capability
2Sink support: yes [0x03]
3Driver support: no [0xffffffff]
4
5# cat /sys/kernel/debug/dri/1/eDP-1/psr_state
60

Anscheinend besteht hier ein Problem mit PSR (Panel Self Refresh) - einer Funktion, die den Panel-Stromverbrauch reduzieren soll. Das deckt sich mit meiner Beobachtung beim T14 G3, das bei der Installation von Fedora 37 (mit Linux 6.0.7) massive Probleme damit hatte: der Bildschirm fiel oft aus und konnte erst mit einem Reboot oder Standby/Wakeup wieder aktiviert werden.

Übersetzungen: