Fine-grained RTD3 with NVIDIA GeForce MX550

Hello, I have Lenovo ThinkPad T14 Gen 4 with Intel i7-1360P CPU and NVIDIA GeForce MX550 GPU. I use Arch Linux with kernel 6.8.1 and (closed-source) NVIDIA GPU drivers, version 550.54.14. I tried to enable fine-grained RTD3 following the instructions here.

However when I reboot the machine and inspect the file /proc/driver/nvidia/gpus/<Domain>:<Bus>:<Device>.<Function>/power I see:

Runtime D3 status:          Not supported
Video Memory:               Active

GPU Hardware Support:
 Video Memory Self Refresh: Not Supported
 Video Memory Off:          Supported

When I use NVreg_DynamicPowerManagement=0x01 option instead of NVreg_DynamicPowerManagement=0x02, reboot the machine and inspect the file again, I see:

Runtime D3 status:          Enabled (coarse-grained)
Video Memory:               Active

GPU Hardware Support:
 Video Memory Self Refresh: Not Supported
 Video Memory Off:          Supported

Contents of a file /etc/modprobe.d/nvidia.conf:

options nvidia_drm fbdev=1
options nvidia_drm modeset=1
options nvidia NVreg_EnableGpuFirmware=1
options nvidia NVreg_EnablePCIeGen3=1
options nvidia NVreg_EnableResizableBar=1
options nvidia NVreg_UsePageAttributeTable=1
options nvidia "NVreg_DynamicPowerManagement=0x02"
options nvidia NVreg_EnableS0ixPowerManagement=1

Contents of a file /etc/udev/rules.d/80-nvidia-rtd3.rules:

# Enable runtime power management for NVIDIA VGA/3D controller devices on driver bind.
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime power management for NVIDIA VGA/3D controller devices on driver unbind.
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"

Please does the NVIDIA GeForce MX550 GPU support fine-grained RTD3? If yes, please is there some way how I can enable it?

Thank you very much and have a nice day.

nvidia-bug-report.log (208.4 KB)

It shouldn’t be necessary to set the value, it should default to 0x3, meaning “auto”.
Please check for a bios update.

Thanks for the reply. The laptop is running the latest BIOS. Please what would you recommend as the next steps? Contact Lenovo?

You might do that, though I don’t know if that will help. MX type mobile gpus are always lacking some features, don’t know if that expands to runtime pm capabilities.

Please are there some data sheets available for NVIDIA GeForce MX550, where I could find whether the fine-grained RTD3 is supported? I tried looking around on Google, but haven’t found any.

Btw when I don’t explicitly set the value of NVreg_DynamicPowerManagement and inspect the file cat /proc/driver/nvidia/params I see:

DynamicPowerManagement: 3

As expected. However when I inspect /proc/driver/nvidia/gpus/<Domain>:<Bus>:<Device>.<Function>/power I see:

Runtime D3 status:          Disabled by default
Video Memory:               Active

GPU Hardware Support:
 Video Memory Self Refresh: Not Supported
 Video Memory Off:          Supported

When I explicitly set the value of NVreg_DynamicPowerManagement to 0x01, at least the coarse-grained RTD3 seems to be enabled.

Sorry, forgot the MX550 is Turing based, so “auto” means “disabled”. So you really have to set the value manually and see what works.

Thanks. So if I explicitly set NVreg_DynamicPowerManagement=0x02 and get the result:

Runtime D3 status:          Not supported
Video Memory:               Active

GPU Hardware Support:
 Video Memory Self Refresh: Not Supported
 Video Memory Off:          Supported

Does it mean that MX550 does not support fine-grained RTD3 at all (is it a limitation of the hardware) or could it be a problem on Lenovo side - the necessary functionality is not implemented and it’s worth trying to contact Lenovo support so they can fix this issue?

IDK. Maybe switch to the nvidia-open driver, this now also supports runtime-pm and has some more info messages to print.

I managed to solve this by not using the NVreg_EnableGpuFirmware=1 option. When removed, the fine-grained RTD3 works. (Still using the closed-source NVIDIA drivers.) Please is this expected?

Runtime D3 status:          Enabled (fine-grained)
Video Memory:               Off

GPU Hardware Support:
 Video Memory Self Refresh: Supported
 Video Memory Off:          Supported

No, should work. Seems you found a bug with the firmware.

Ok thanks. So I guess the next step would be to report this bug via this page, right?

Yes, I think so.

Thank you very much for your help @generix :)