Ok, I was so bummed out that my expensive laptop purchase has this issue because other than that I love this laptop!
My experience/information so far:
I don’t have a discrete CPU and I don’t often use suspend. this happens while the system is running.
At very random times (I cannot pinpoint it to high demand times, it’s literally just at random moments while I’m using the laptop) the system goes into a state where everything is slowed down, I get 1 FPS while moving the cursor or typing or anything like that, 2-3 seconds delay between typing something and it appearing on the screen. I switch to TTY3 and try closing the display manager, seeing CPU usage (not high at all, it’s very low, so it’s not the CPU being stressed). And my dmesg is flooded with such messages:
Οκτ 02 23:55:17 framework kernel: amdgpu 0000:c1:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
I can open programs but everything is slow af. If I try to open an mp3 with mpv while in the TTY, it will take it’s sweet time to start playing, but once it opens after like a minute of waiting, the sound plays normally without distortion.
A lot of searching later.
I come upon this thread.
I try running the command mentioned in here while I’m in the TTY:
sudo cat /sys/kernel/debug/dri/1/amdgpu_gpu_recover
The screen goes black and never comes back. I’m forced to REISUB
(Side Note: this took me a long time to find but You can do SysRQ on the Framework 16 by pressing together Fn + Alt + F11. then you can keep holding the alt while you successively type R E I S U B. Also for the magic combo to work you’ll need to have sysrq_always_enabled=1
in your kernel parameters)
I reboot.
I see the post above suggesting that gpu_recovery
option of amdgpu driver might need to be set to 1 for the recover command to work properly.
I make the file /etc/modprobe.d/amdgpu.conf
:
options amdgpu gpu_recovery=1
Regenerate initramfs.
Reboot again.
Now I try the recover command again. this time it works. The screen goes black and comes back again. But I have not yet tested it in the real world freeze scenario.
I will make a bash alias for this command so that I can run it easily the next time the semi-freeze happens
I’ll also keep in mind the other workarounds like disabling PSR as @sinatosk mentioned. Really helpful stuff.
I’m relieved to not be alone in this.