https://bugzilla.kernel.org/show_bug.cgi?id=215742
Daniel Drake (dr...@endlessm.com) changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dr...@endlessm.com --- Comment #20 from Daniel Drake (dr...@endlessm.com) --- After much testing we found that S3 suspend/resume is unreliable on this platform after all. The system occasionally gets into a state where it cannot wake up. In this state, the power LED is blinking (as it does throughout suspend) but there is no response to wakeup via keyboard or power button. Also while in this state, the battery LED gets stuck. For example, if the LED is solid white (implying AC adapter connected & battery full), if you unplug the AC adapter the LED remains solid white (you would expect it to turn off). Strong evidence of a firmware crash. That's why we're looking to get s2idle going again. I have now found the root cause of the original issue here and suggested a workaround as below. Once solved we can revert the quirk that selects S3 on this device. (Sorry Mario - forgot to CC you on this) https://lore.kernel.org/linux-pci/20240130183124.19985-1-dr...@endlessos.org/T/#u The Asus B1400 with production shipped firmware version 304 and VMD disabled cannot resume from suspend: the NVMe device becomes unresponsive and inaccessible. This is because the NVMe device and parent PCI bridge get put into D3cold during suspend, and this PCI bridge cannot be recovered from D3cold mode: echo "0000:01:00.0" > /sys/bus/pci/drivers/nvme/unbind echo "0000:00:06.0" > /sys/bus/pci/drivers/pcieport/unbind setpci -s 00:06.0 CAP_PM+4.b=03 # D3hot acpidbg -b "execute \_SB.PC00.PEG0.PXP._OFF" acpidbg -b "execute \_SB.PC00.PEG0.PXP._ON" setpci -s 00:06.0 CAP_PM+4.b=0 # D0 echo "0000:00:06.0" > /sys/bus/pci/drivers/pcieport/bind echo "0000:01:00.0" > /sys/bus/pci/drivers/nvme/bind # NVMe probe fails here with -ENODEV This appears to be an untested D3cold transition by the vendor; Intel socwatch shows that Windows leaves the NVMe device and parent bridge in D0 during suspend, even though this firmware version has StorageD3Enable=1. Experimenting with the DSDT, the _OFF method calls DL23() which sets a L23E bit at offset 0xe2 into the PCI configuration space for this root port. This is the specific write that the _ON routine is unable to recover from. This register is not documented in the public chipset datasheet. -- You may reply to this email to add a comment. You are receiving this mail because: You are the assignee for the bug. _______________________________________________ acpi-bugzilla mailing list acpi-bugzilla@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla