On Tue, Oct 22, 2019 at 02:51:53PM +0200, Karol Herbst wrote:
On Tue, Oct 22, 2019 at 2:45 PM Mika Westerberg mika.westerberg@intel.com wrote:
On Tue, Oct 22, 2019 at 11:16:14AM +0200, Karol Herbst wrote:
I think there is something I totally forgot about:
When there was never a driver bound to the GPU, and if runtime power management gets enabled on that device, runtime suspend/resume works as expected (I am not 100% sure on if that always works, but I will recheck that).
AFAIK, if there is no driver bound to the PCI device it is left to D0 regardless of the runtime PM state which could explain why it works in that case (it is never put into D3hot).
I looked at the acpidump you sent and there is one thing that may explain the differences between Windows and Linux. Not sure if you were aware of this already, though. The power resource PGOF() method has this:
If (((OSYS <= 0x07D9) || ((OSYS == 0x07DF) && (_REV == 0x05)))) { ... }
I think this is the fallback to some older method of runtime suspending the device, and I think it will end up touching different registers on the bridge controller which do not show the broken behaviour.
I think it actually tries to identify older Windows and then Linux (the _REV == 0x05 check comes from that). So at least some point Dell people have experiment this on Linux.