Runtime Power Management Troubleshooting - gpu will not enter D3 on hybrid system

I have a 2020 Asus G14 laptop which is a 1660ti nvidia gpu on an AMD Renior platform, running Fedora 33. Everything except runtime power management seems to be working fine; it has been a baffling problem because everything seems to be setup correctly and the platform should support it. I have gone around in circles for a while now and all I keep coming back to is that the acpi tables must be missing a function.

This seems to effect all 2020 models regardless of Nvidia gpu model, and seems to be fixed with the 2021 models where the d3cold was working out of the box (so to speak, on Fedora 33 as well).

I am comparing acpi tables between the models, but without knowing what I am looking for it is hard to tell if I am on the right path.

First, I am hoping someone can help me go back to confirm everything is in order with the system configuration to rule out a problem there. I have confirmed everthing mention in Ch22 of the driver readme is in place, but honestly I do not know if it is even necessary.

Second, I am looking for some specifications about what methods are required to support Nvidia card power management in the acpi code.

If anyone can point me in the right directions it would be much appreciated.

nvidia-bug-report.log.gz (1.5 MB)

The specifications for that should be this:
https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/firmware-requirements-for-d3cold

Thanks, that should be helpful. Definitely not where I was expecting to find the info.

I have fixed the trouble by booting with modeset=0.

Seems setting modeset=1 breaks the D3 power management. Anyone know why this might be?

After many hours of digging in acpi tables and successfully booting a minimally modified 2021 model bios on my 2020 machine, it turns out this is some sort of software bug, bleh. Lol.

There are two effects from this that I can see at first glance:

  • First, the dgpu will now enter a D3cold state when not in use
  • Second, gnome-shell no longer hooks both the igpu and dgpu at login

I assessed gnome shell using sudo lsof -c gnome-shell | grep 'dri|nvidia' and for whatever reason with modeset=1 the shell resides on both gpus (/dev/nvidia0' and '/dev/dri/card0). Set modeset=0 and it only resides on the AMD igpu (/dev/dri/card0). I am going to proceed to look into gnome-shell, but mention it here as I do not know if modeset fixed the D3 suspend or a behaviour where gnome-shell was preventing suspend.

It is worth noting this is all using Wayland and the latest drivers.

Thoughts?