Display sleep causing driver to not acknowledge udev sysfs rule after waking up from suspend
Brief summary of the problem:
I use a udev rule to set ATTR{device/power_dpm_force_performance_level}="manual", ATTR{device/pp_dpm_mclk}="1 2"
and in the specific case of display sleep then system suspend once the system is woken up the driver won't acknowledge ATTR{device/pp_dpm_mclk}="1 2"
and it'll keep the minimum memory frequency at 300mhz.
Afterwards sending the system directly to suspend and waking up after the driver will respect ATTR{device/pp_dpm_mclk}="1 2"
set by udev.
Hardware description:
- CPU: Intel i7-4770K
- GPU: RX570 4GB
- System Memory: 32GB
- Display(s): 1 1080p 75hz Freesync
- Type of Display Connection: DP
System information:
- Distro: Arch Linux
- Kernel version: 6.2.7-arch1-1
- Desktop Env: KDE Plasma 5.27.3
How to reproduce the issue:
- Run the udev rule,
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="manual", ATTR{device/pp_dpm_mclk}="1 2"
- Verify that the memory clock is set to state 1
- Send the monitor to sleep
- Send the system to sleep
- Wake up the system and see that the memory clocks will be at the minimum value
- If you send the system to sleep directly and wake up then memory clocks will be at state 1 instead of 0