<p dir="ltr">I can confirm what Peter said, path contains \_SB_.PCI0.RP05 and power_state contains D3hot.</p>
<br><div class="gmail_quote"><div dir="ltr">Op do 27 okt. 2016 11:06 schreef Peter Wu <<a href="mailto:peter@lekensteyn.nl">peter@lekensteyn.nl</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Oct 27, 2016 at 11:17:48AM +0300, Mika Westerberg wrote:<br class="gmail_msg">
> On Thu, Oct 27, 2016 at 12:56:41AM +0200, Peter Wu wrote:<br class="gmail_msg">
> > Hi PCI/ACPI PM experts,<br class="gmail_msg">
> ><br class="gmail_msg">
> > Since Linux 4.8, nouveau switched to rely on the PCIe port driver to<br class="gmail_msg">
> > transition to D3cold. This however does not happen for an Acer Aspire<br class="gmail_msg">
> > V7-582PG (Haswell, NVIDIA GTX 750M) from Rick.<br class="gmail_msg">
> ><br class="gmail_msg">
> > Any idea why? acpidump, lspci, dmesg and other details can be found in<br class="gmail_msg">
> > the linked bug below.<br class="gmail_msg">
><br class="gmail_msg">
> ><br class="gmail_msg">
> > Kind regards,<br class="gmail_msg">
> > Peter<br class="gmail_msg">
> ><br class="gmail_msg">
> > On Wed, Oct 26, 2016 at 10:42:07PM +0000, <a href="mailto:bugzilla-daemon@freedesktop.org" class="gmail_msg" target="_blank">bugzilla-daemon@freedesktop.org</a> wrote:<br class="gmail_msg">
> > > <a href="https://bugs.freedesktop.org/show_bug.cgi?id=98398" rel="noreferrer" class="gmail_msg" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=98398</a><br class="gmail_msg">
> > ><br class="gmail_msg">
> > > --- Comment #11 from Peter Wu <<a href="mailto:peter@lekensteyn.nl" class="gmail_msg" target="_blank">peter@lekensteyn.nl</a>> ---<br class="gmail_msg">
> > > So 4.7 and before used the "DSM" method on runtime-suspend:<br class="gmail_msg">
> > > - \_SB.PCI0.RP05.PEGP._DSM would be invoked to enable Optimus<br class="gmail_msg">
> > > - \_SB.PCI0.RP05.PEGP._PS3 is then invoked which would enter D3cold<br class="gmail_msg">
> > > (note, this method is still used in 4.8 on older laptops or with the<br class="gmail_msg">
> > > pcie_pm_port=off kernel option)<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > Since 4.8, _DSM is not called anymore by nouveau (when support from the PCI<br class="gmail_msg">
> > > core is detected) and this sequence should instead happen:<br class="gmail_msg">
> > > - \_SB.PCI0.RP05.PEGP._PS3 (does nothing besides updating _STA)<br class="gmail_msg">
> > > - PCIe core removes power for the PCIe port since all its children are in<br class="gmail_msg">
> > > D3 and are willing to transition to D3cold. It does so by invoking<br class="gmail_msg">
> > > \NVP3._OFF (where \NVP3 is the power resource from \_SB.PCI0.RP05._PR3)<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > That is how I think it should work in theory, but on Ricks laptop running<br class="gmail_msg">
> > > 4.8.4,<br class="gmail_msg">
> > > /sys/bus/devices/0000:1c.4/firmware_node/ does not have power_resources_D0<br class="gmail_msg">
> > > devices (which I do have on my own laptop for 0000:01:0).<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > The SSDT1 of Rick's Acer laptop shows this structure:<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > If (\_OSI ("Windows 2013"))<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > Scope (\_SB.PCI0.RP05)<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > //...<br class="gmail_msg">
> > > Name (_PR0, Package (0x01) // _PR0: Power Resources for D0<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > NVP3<br class="gmail_msg">
> > > })<br class="gmail_msg">
> > > Name (_PR2, Package (0x01) // _PR2: Power Resources for D2<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > NVP2<br class="gmail_msg">
> > > })<br class="gmail_msg">
> > > Name (_PR3, Package (0x01) // _PR3: Power Resources for D3hot<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > NVP3<br class="gmail_msg">
> > > })<br class="gmail_msg">
> > > // ...<br class="gmail_msg">
> > > Method (_PS0, 0, NotSerialized) // _PS0: Power State 0<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > Method (_PS3, 0, NotSerialized) // _PS3: Power State 3<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > Name (MSD3, Zero)<br class="gmail_msg">
> > > PowerResource (NVP3, 0x00, 0x0000)<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > Name (_STA, One) // _STA: Status<br class="gmail_msg">
> > > // ...<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > Method (_ON, 0, NotSerialized) // _ON_: Power On<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > // ...<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > Method (_OFF, 0, NotSerialized) // _OFF: Power Off<br class="gmail_msg">
> > > {<br class="gmail_msg">
> > > // ...<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > > }<br class="gmail_msg">
> > ><br class="gmail_msg">
> > > The dmesg does show "ACPI: Power Resource [NVP3] (on)", so I guess that the<br class="gmail_msg">
> > > methods are found. It is a mystery to me why the "power_resources_Dx" files are<br class="gmail_msg">
> > > not created, possibly breaking PM.<br class="gmail_msg">
><br class="gmail_msg">
> The ASL code looks right to me (except for the NVP2 which never set _STA<br class="gmail_msg">
> to 0 but should not affect here).<br class="gmail_msg">
><br class="gmail_msg">
> I wonder what does /sys/bus/pci/devices/0000:00:1c.4/firmware_node/path contain?<br class="gmail_msg">
<br class="gmail_msg">
The value is as expected, \_SB.PCI0.RP05:<br class="gmail_msg">
<br class="gmail_msg">
/sys/bus/pci/devices/0000:00:1c.4/firmware_node/path:\_SB_.PCI0.RP05<br class="gmail_msg">
/sys/bus/pci/devices/0000:00:1c.4/firmware_node/power_state:D3hot<br class="gmail_msg">
--<br class="gmail_msg">
Kind regards,<br class="gmail_msg">
Peter Wu<br class="gmail_msg">
<a href="https://lekensteyn.nl" rel="noreferrer" class="gmail_msg" target="_blank">https://lekensteyn.nl</a><br class="gmail_msg">
</blockquote></div>