<div dir="ltr"><div class="gmail_extra">I am still looking for a solution. I have hacked around in the code and found out the following:</div><div class="gmail_extra">- Nouveau prefers using PCIE power managemet over ACPI Optimus calls. I tried to force it to use Optimus ACPI calls, but there was an error calling the ACPI method so it bails out and uses PCIE PM anyway.</div><div class="gmail_extra">- I tried to debug the PCIE pm states which internally uses ACPI to turn power on/off. I could print different statuses here and there.</div><div class="gmail_extra">When the power is switched off, ACPI calls turn the power off then the kernel successfully puts the device in state D3Cold (also turning off power to the PCI Express port). When waking up, ACPI turns the power on, apparently successfully (Device [PEGP] transitioned to D0). But a read from the PCI bus to get the power state & other flags return 65535 (~0) and the kernel fails to set the device in D0 (although ACPI claims it is in D0)</div><div class="gmail_extra">The call to pci_raw_set_power_state (in drivers/pci/pci.c) seems to fail because pci_read_config_word returns "~0" (and does not return any error code)</div><div class="gmail_extra"><br></div><div class="gmail_extra">I have tried different things; if I use pcie_port_pm=off, the NVidia card goes to state D3Hot (if I am not mistaken, its PCIE port is still powered) but that did not fix it. I tried to turn on or off different PCI/PCIexpress features such as hotplug, PM and so on. The only thing that works is that PM is fully disabled, which equals to the device not being powered off, so that would be equivalent to nouveau.runpm=0, which is not helping a lot. I have tried to force pcie aspm by recompiling the ACPI table, still no luck.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I am still taking a look, but it seems like the problem comes from the PCIExpress PM functions and ACPI, not directly from Nouveau</div><div class="gmail_extra"><br></div><div class="gmail_extra">/n</div></div>