Nvidia D3 Runtime power management only works on Window

I followed this guide to set up RTD3 on my laptop, added udev rules, added module parameters, enabled nvidia-persistenced service then reboot the computer but the output of cat /proc/driver/nvidia/gpus/0000:01:00.0/power said that RTD3 is not supported:

Runtime D3 status: Not Supported
Video Memory: Active
GPU Hardware Support:
Video Memory Self Refresh: Supported
Video Memory Off: Supported
Power Limits:
Default: N/A milliwatts
GPU Boost: N/A milliwatts

I booted to Window and opened Asus armoury crate and after a few seconds of inactivity the GPU tab will stop reading core/memory clock, voltage, etc, and show “Power saving”. If I open a game (Apex legend) the GPU will turn on again and work normally. Which mean that RTD3 does work on my laptop and on Window only. Any ideas ?

  • Operating System: Arch Linux

  • KDE Plasma Version: 5.23.3

  • KDE Frameworks Version: 5.88.0

  • Qt Version: 5.15.2

  • Kernel Version: 5.15.4-xanmod1-1 (64-bit)

  • Graphics Platform: Wayland

  • Processors: 16 × AMD Ryzen 7 4800H with Radeon Graphics

  • Memory: 15.1 GiB of RAM

  • Graphics Processor: AMD RENOIR / Nvidia GTX 1660Ti

What’s the output of

cat /sys/devices/pci0000\:00/0000\:00\:01.0/power_state

(replace PCI id if your’s is different)
while GPU is idle?

Also, is that necessary to use nvidia-persistenced? I have it disabled and power management works fine (GPU is in D3Cold state on idle).

My kernel cmdline:

ro rd.driver.blacklist=nouveau modprobe.blacklist=nouveau pci=realloc=on nvidia-drm.modeset=1 nvidia.NVreg_EnablePCIeGen3=1 nvidia.NVreg_UsePageAttributeTable=1 nvidia.NVreg_EnableStreamMemOPs=1 nvidia.NVreg_PreserveVideoMemoryAllocations=1 nvidia.NVreg_TemporaryFilePath=/nvidia vconsole.keymap=us selinux=0 rhgb quiet

While there’s no official docs from nvidia regarding D3 on ryzen, it seems it only works on ryzen 5xxx models and is disabled on 4xxx and 3xxx models.
https://forums.developer.nvidia.com/t/runtime-d3-support-on-lenovo-legion-5-ryzen-7-4800h-gtx-1660ti/192673?u=generix
https://forums.developer.nvidia.com/t/is-rtd3-supported-on-ryzen-4-series/189595?u=generix
https://forums.developer.nvidia.com/t/using-runtime-d3-rtd3-power-management-on-geforce-gtx-1650-notebook-running-on-linux/179201?u=generix

What’s the output of

D0

Also, is that necessary to use nvidia-persistenced? I have it disabled and power management works fine (GPU is in D3Cold state on idle).

Well the arch wiki said that I should enable it so I did

My kernel cmdline:

Alright, I try those nvidia parameters and report the result

While there’s no official docs from Nvidia regarding D3 on ryzen, it seems it only works on ryzen 5xxx models and is disabled on 4xxx and 3xxx models.

But it’s supported on Window only for some reason. I can guarantee that D3 does work on Window (Device Manager → Display Adapter → 1660Ti → Properties → Details → Power State → D3).

Yes, on Windows it works. I was only talking of the Nvidia Linux driver.

That’s suck