I have an AMD Ryzen 7 3700X with a AMD Radeon RX 5600 XT graphic card. Yesterday I got annoyed by incomplete boot processes. I was logged in via ssh and rebooted. The subsequent boot process stopped at a black screen. ssh was not running. I had to go to the computer and restart it with REISUB. I saw this behaviour before. But didnt investigate further until today.
In the journal I found this during boot:
Jan 05 22:09:16 rakete kernel: ------------[ cut here ]------------
Jan 05 22:09:16 rakete kernel: WARNING: CPU: 12 PID: 5588 at dcn20_validate_bandwidth_fp+0x8d/0xd0 [amdgpu]
Jan 05 22:09:16 rakete kernel: Modules linked in: zram z3fold cfg80211 ccm algif_aead des_generic libdes algif_skcipher cmac md4 algif_has>
Jan 05 22:09:16 rakete kernel: crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel glue_helper crypto_simd cryptd ahci nvme xhc>
Jan 05 22:09:16 rakete kernel: CPU: 12 PID: 5588 Comm: Xorg Tainted: P OE 5.10.4-xanmod1-cacule-MANJARO #1
Jan 05 22:09:16 rakete kernel: Hardware name: Micro-Star International Co., Ltd. MS-7C37/MPG X570 GAMING EDGE WIFI (MS-7C37), BIOS 1.D2 12>
Jan 05 22:09:16 rakete kernel: RIP: 0010:dcn20_validate_bandwidth_fp+0x8d/0xd0 [amdgpu]
Jan 05 22:09:16 rakete kernel: Code: 00 7b 35 22 85 14 1f 00 00 75 2f 31 d2 f2 0f 11 85 58 26 00 00 48 89 ee 4c 89 e7 e8 5d f6 ff ff 89 c2>
Jan 05 22:09:16 rakete kernel: RSP: 0018:ffffba56c13e7b48 EFLAGS: 00010246
Jan 05 22:09:16 rakete kernel: RAX: 0000000000000001 RBX: 4079400000000000 RCX: 0000000005d0a00c
Jan 05 22:09:16 rakete kernel: RDX: 0000000000000000 RSI: 4568acf9cb978f12 RDI: 00000000000311a0
Jan 05 22:09:16 rakete kernel: RBP: ffffa0f2fdb00000 R08: 0000000000000000 R09: 0000000000000000
Jan 05 22:09:16 rakete kernel: R10: ffffa0f2fdb001b8 R11: dead000000000100 R12: ffffa0f2ad0b0000
Jan 05 22:09:16 rakete kernel: R13: ffffa0f2fdb00000 R14: ffffa0f2aca83340 R15: ffffa0f2ad0b0000
Jan 05 22:09:16 rakete kernel: FS: 00007ff18d7322c0(0000) GS:ffffa1016ed00000(0000) knlGS:0000000000000000
Jan 05 22:09:16 rakete kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Jan 05 22:09:16 rakete kernel: CR2: 00007ff11e7f7fe0 CR3: 000000013dbee000 CR4: 0000000000350ee0
Jan 05 22:09:16 rakete kernel: Call Trace:
Jan 05 22:09:16 rakete kernel: dcn20_validate_bandwidth+0x24/0x40 [amdgpu]
Jan 05 22:09:16 rakete kernel: dc_validate_global_state+0x3c3/0x4c0 [amdgpu]
Jan 05 22:09:16 rakete kernel: amdgpu_dm_atomic_check+0xc84/0xd60 [amdgpu]
Jan 05 22:09:16 rakete kernel: drm_atomic_check_only+0x55d/0x7c0 [drm]
Jan 05 22:09:16 rakete kernel: drm_atomic_commit+0x13/0x50 [drm]
Jan 05 22:09:16 rakete kernel: drm_atomic_connector_commit_dpms+0xda/0x100 [drm]
Jan 05 22:09:16 rakete kernel: drm_mode_obj_set_property_ioctl+0x189/0x3b0 [drm]
Jan 05 22:09:16 rakete kernel: ? drm_wait_vblank_ioctl+0x2f4/0x7c0 [drm]
Jan 05 22:09:16 rakete kernel: ? drm_connector_set_obj_prop+0x90/0x90 [drm]
Jan 05 22:09:16 rakete kernel: drm_connector_property_set_ioctl+0x37/0x60 [drm]
Jan 05 22:09:16 rakete kernel: ? emulator_task_switch+0x170/0x520 [kvm]
Jan 05 22:09:16 rakete kernel: drm_ioctl_kernel+0xb0/0x140 [drm]
Jan 05 22:09:16 rakete kernel: drm_ioctl+0x212/0x3c0 [drm]
Jan 05 22:09:16 rakete kernel: ? drm_connector_set_obj_prop+0x90/0x90 [drm]
Jan 05 22:09:16 rakete kernel: amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
Jan 05 22:09:16 rakete kernel: __x64_sys_ioctl+0x83/0xb0
Jan 05 22:09:16 rakete kernel: do_syscall_64+0x33/0x80
Jan 05 22:09:16 rakete kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jan 05 22:09:16 rakete kernel: RIP: 0033:0x7ff18e0fef6b
Jan 05 22:09:16 rakete kernel: Code: 89 d8 49 8d 3c 1c 48 f7 d8 49 39 c4 72 b5 e8 1c ff ff ff 85 c0 78 ba 4c 89 e0 5b 5d 41 5c c3 f3 0f 1e>
Jan 05 22:09:16 rakete kernel: RSP: 002b:00007ffe1daf30c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
Jan 05 22:09:16 rakete kernel: RAX: ffffffffffffffda RBX: 00007ffe1daf3100 RCX: 00007ff18e0fef6b
Jan 05 22:09:16 rakete kernel: RDX: 00007ffe1daf3100 RSI: 00000000c01064ab RDI: 000000000000000d
Jan 05 22:09:16 rakete kernel: RBP: 00000000c01064ab R08: 0000000000000000 R09: 00007ff18e567d10
Jan 05 22:09:16 rakete kernel: R10: 00007ff18e567d20 R11: 0000000000000246 R12: 0000564308ec7e20
Jan 05 22:09:16 rakete kernel: R13: 000000000000000d R14: 0000000000000000 R15: 0000000000000000
Jan 05 22:09:16 rakete kernel: ---[ end trace 2604fae69d803995 ]---
I then checked all journals and realized that I have 56 such incidences in the logs since 16. December when I started to use a 5.10 kernel. I do not see the issue with kernel 5.4.
It always starts with
WARNING: CPU: 12 PID: 5588 at dcn20_validate_bandwidth_fp+0x8d/0xd0 [amdgpu]
And it happens either during boot or even during shutdown. But during shutdown is obviously not a problem.
WARNING during shutdown
Jan 06 07:37:38 rakete systemd[6158]: Finished Exit the Session.
Jan 06 07:37:38 rakete systemd[6158]: Reached target Exit the Session.
Jan 06 07:37:38 rakete kernel: ------------[ cut here ]------------
Jan 06 07:37:38 rakete kernel: WARNING: CPU: 1 PID: 22 at dcn20_validate_bandwidth_fp+0x8d/0xd0 [amdgpu]
Jan 06 07:37:38 rakete kernel: Modules linked in: btrfs blake2b_generic xor raid6_pq ufs qnx4 hfsplus hfs minix ntfs msdos jfs z3fold cfg8>
Jan 06 07:37:38 rakete kernel: zlua(OE) zavl(POE) icp(POE) hid_generic usbhid hid xfs libcrc32c crct10dif_pclmul crc32_pclmul ghash_clmul>
Jan 06 07:37:38 rakete kernel: CPU: 1 PID: 22 Comm: kworker/1:0 Tainted: P OE 5.10.4-xanmod1-cacule-MANJARO #1
Jan 06 07:37:38 rakete kernel: Hardware name: Micro-Star International Co., Ltd. MS-7C37/MPG X570 GAMING EDGE WIFI (MS-7C37), BIOS 1.D2 12>
Jan 06 07:37:38 rakete kernel: Workqueue: events drm_mode_rmfb_work_fn [drm]
Jan 06 07:37:38 rakete kernel: RIP: 0010:dcn20_validate_bandwidth_fp+0x8d/0xd0 [amdgpu]
Jan 06 07:37:38 rakete kernel: Code: 00 7b 35 22 85 14 1f 00 00 75 2f 31 d2 f2 0f 11 85 58 26 00 00 48 89 ee 4c 89 e7 e8 5d f6 ff ff 89 c2>
Jan 06 07:37:38 rakete kernel: RSP: 0018:ffffb2ec80277c78 EFLAGS: 00010246
Jan 06 07:37:38 rakete kernel: RAX: 0000000000000001 RBX: 4079400000000000 RCX: 0000000008cc2001
Jan 06 07:37:38 rakete kernel: RDX: 0000000000000000 RSI: c027877d9f8dc980 RDI: 00000000000311a0
Jan 06 07:37:38 rakete kernel: RBP: ffff9f1eed880000 R08: 0000000000000000 R09: 0000000000000000
Jan 06 07:37:38 rakete kernel: R10: ffff9f1eed8801b8 R11: ffffb2ec80277d2f R12: ffff9f1eadd50000
Jan 06 07:37:38 rakete kernel: R13: ffff9f1eed880000 R14: ffff9f1f058cb300 R15: ffff9f1eadd50000
Jan 06 07:37:38 rakete kernel: FS: 0000000000000000(0000) GS:ffff9f2d6ea40000(0000) knlGS:0000000000000000
Jan 06 07:37:38 rakete kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Jan 06 07:37:38 rakete kernel: CR2: 00007f82f6aa1b70 CR3: 00000005ff610000 CR4: 0000000000350ee0
Jan 06 07:37:38 rakete kernel: Call Trace:
Jan 06 07:37:38 rakete kernel: dcn20_validate_bandwidth+0x24/0x40 [amdgpu]
Jan 06 07:37:38 rakete kernel: dc_validate_global_state+0x3c3/0x4c0 [amdgpu]
Jan 06 07:37:38 rakete kernel: amdgpu_dm_atomic_check+0xc84/0xd60 [amdgpu]
Jan 06 07:37:38 rakete kernel: drm_atomic_check_only+0x55d/0x7c0 [drm]
Jan 06 07:37:38 rakete kernel: drm_atomic_commit+0x13/0x50 [drm]
Jan 06 07:37:38 rakete kernel: drm_framebuffer_remove+0x3f9/0x4b0 [drm]
Jan 06 07:37:38 rakete kernel: drm_mode_rmfb_work_fn+0x3c/0x50 [drm]
Jan 06 07:37:38 rakete kernel: process_one_work+0x1d6/0x3a0
Jan 06 07:37:38 rakete kernel: worker_thread+0x1f9/0x460
Jan 06 07:37:38 rakete kernel: ? process_one_work+0x3a0/0x3a0
Jan 06 07:37:38 rakete kernel: kthread+0x181/0x1b0
Jan 06 07:37:38 rakete kernel: ? __kthread_init_worker+0x50/0x50
Jan 06 07:37:38 rakete kernel: ret_from_fork+0x22/0x30
Jan 06 07:37:38 rakete kernel: ---[ end trace 97537b8291c83c08 ]---
I searched the web but could not find anything meaningfull about this particular dcn20_validate_bandwidth_fp issue.
Any idea what this is all about and how I can fix that?
I checked that, but the solution given is not valid for me. This thread claims a temperature problem with the GPU. My GPU and the whole PC is mostly idle with GPU temperature around 55 °C and CPU temperatures around 43 °C.
Note: The current proprietary NVIDIA, VirtualBox, VMware Workstation / Player or some other dkms modules builds may not be fully compatible with Linux 5.10 (EDGE) and RT kernels.
The WARNING message during shutdown happens with all kernels I have tested:
linux 5.10.4.arch2-1
linux-zen 5.10.4.zen2-1
linux 5.10.2-104-tkg-bmq
linux 5.10.4-xanmod1-cacule-MANJARO
But for the more critical issue - the black screen and freezing during boot - I am not so sure anymore. This issue is not so easy to trigger.
Typically what I do to trigger the freeze during boot (and this is how I detected it):
The PC is unattended. Wake up on LAN and login via ssh
Open two remote sessions from laptop to PC: one for my user and one for root.
do “journalctl -f” in the user session and
do a reboot in the root session
The journal from step #3 shows the WARNING. The PCs is rebooting and I can ping it, but ssh is not possible. I have to go to the console and do a REISUB.
Unfortunately this does not happen on every boot. I am still investigating if the different kernels behave differently.
I suspect it’s an incomplete fix for the amdgpu regression which was in 5.10-5.10.3. 5.10.3 was patched by Arch, upstream fixes were supposed to be included in 5.10.4, but I haven’t checked whether both patches Arch included in 5.10.3 are actually present in 5.10.4.
5.10.5 is out so it will be worth checking the changelog…
… and there are indeed three commits to amdgpu-related files:
Since this morning I am using kernel version 5.10.5-xanmod1-cacule-MANJARO I did not have any freezes since 6 reboots. This is promising. Lets see how that develops.
I happens with HDMI and stock arch kernel 5.10.5 as well.
I have a theroy:
This seems to happen after the GPU is idle for 10 minutes. I do not see freezes during inetractive sessions. But when I log out and leave the computer idle for 10 minutes it freezes when I try to use it again. The same is true with the unattended PC, wake-on-LAN and ssh use case I described earlier. In that case the GPU is idle too and after ca. 10 minutes the computer freezes.
How can I prevent the sleep/wake up cycle? What could I do to keep the GPU awake?