Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SB1,SP4] Cannot achieve S0ix states on suspend #554

Open
kitakar5525 opened this issue Aug 18, 2019 · 66 comments
Open

[SB1,SP4] Cannot achieve S0ix states on suspend #554

kitakar5525 opened this issue Aug 18, 2019 · 66 comments

Comments

@kitakar5525
Copy link

kitakar5525 commented Aug 18, 2019

My Surface Book 1 (Skylake) cannot achieve S0ix states (on Windows, it is called Modern Standby or Connected Standby) even if I followed the document [1].

Some SB2 users (Kaby Lake and Kaby Lake R) reported their device can achieve S0ix states

References

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 18, 2019

Suspend status script

# Get CPU model (script from neofetch)
awk -F '\\s*: | @' \
'/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ {
cpu=$2; if ($1 == "Hardware") exit } END { print cpu }' "/proc/cpuinfo"; \
\
cat /etc/os-release | grep NAME; \
echo -n "uname -r: "; uname -r; \
sudo grep -H . /sys/devices/virtual/dmi/id/product_name; \
sudo grep -H . /sys/devices/virtual/dmi/id/product_sku; \
sudo grep -H . /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us; \
sudo grep -H . /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us; \
sudo grep -H . /sys/kernel/debug/pmc_core/package_cstate_show; \
sudo grep -H . /sys/kernel/debug/pmc_core/slp_s0_residency_usec; \
sudo grep -H . /sys/kernel/debug/pmc_atom/sleep_state; \
sudo grep -H . /sys/kernel/debug/telemetry/s0ix_residency_usec

Enable some debug output

sudo su -c "echo 1 > /sys/power/pm_debug_messages"
sudo su -c "echo 1 > /sys/module/printk/parameters/ignore_loglevel"
sudo su -c "echo 1 > /sys/kernel/debug/clear_warn_once"
sudo su -c "echo 1 > /sys/module/acpi/parameters/aml_debug_output"

# dynamic_debug
sudo su -c 'echo "file drivers/pci/pci-acpi.c +p" > /sys/kernel/debug/dynamic_debug/control'
sudo su -c 'echo "file drivers/pci/pci-driver.c +p" > /sys/kernel/debug/dynamic_debug/control'
sudo su -c 'echo "file drivers/acpi/sleep.c +p" > /sys/kernel/debug/dynamic_debug/control'
sudo su -c 'echo "file drivers/platform/x86/intel_pmc_core.c +p" > /sys/kernel/debug/dynamic_debug/control'
sudo su -c 'echo "file drivers/base/power/wakeup.c +p" > /sys/kernel/debug/dynamic_debug/control'
sudo su -c 'echo "file drivers/acpi/device_pm.c +p" > /sys/kernel/debug/dynamic_debug/control'

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 18, 2019

Currently, I don't reload any modules in system-sleep/sleep script.
Removing mwifiex modules will block PC10 state.
The contents:

#!/bin/sh

PATH_CPULPI_US=/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us
PATH_SLPS0_US=/sys/kernel/debug/pmc_core/slp_s0_residency_usec

case $1/$2 in
  pre/*)
    echo "pre-suspend state" > /dev/kmsg
    echo "$(basename $PATH_CPULPI_US): $(cat $PATH_CPULPI_US) usec" > /dev/kmsg
    echo "$(basename $PATH_SLPS0_US): $(cat $PATH_SLPS0_US) usec" > /dev/kmsg
    ;;
  post/*)
    echo "post-suspend state" > /dev/kmsg
    echo "$(basename $PATH_CPULPI_US): $(cat $PATH_CPULPI_US) usec" > /dev/kmsg
    echo "$(basename $PATH_SLPS0_US): $(cat $PATH_SLPS0_US) usec" > /dev/kmsg

    systemctl restart usbguard.service
    ;;
esac

After about 10 sec suspend:

Intel(R) Core(TM) i7-6600U CPU
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
uname -r: 5.2.9-arch1-1-surface
/sys/devices/virtual/dmi/id/product_name:Surface Book
/sys/devices/virtual/dmi/id/product_sku:Surface_Book
/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us:21353923
grep: /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us: No such file or directory
/sys/kernel/debug/pmc_core/package_cstate_show:Package C2 : 0x6bcdd0a824
/sys/kernel/debug/pmc_core/package_cstate_show:Package C3 : 0x5fb997c7c
/sys/kernel/debug/pmc_core/package_cstate_show:Package C6 : 0x5c6af736f4
/sys/kernel/debug/pmc_core/package_cstate_show:Package C7 : 0x1eb3ef0
/sys/kernel/debug/pmc_core/package_cstate_show:Package C8 : 0xe3f2d9f80
/sys/kernel/debug/pmc_core/package_cstate_show:Package C9 : 0xe516188
/sys/kernel/debug/pmc_core/package_cstate_show:Package C10 : 0xdf600bc70
/sys/kernel/debug/pmc_core/slp_s0_residency_usec:0
grep: /sys/kernel/debug/pmc_atom/sleep_state: No such file or directory

BTW, I can achieve PC10 on even runtime by reloading mwifiex modules and reconfiguring ASPM on wifi device [1] twice, that's why low_power_idle_cpu_residency_us (PC10 residency) is larger than 10 sec.

References

@kitakar5525
Copy link
Author

Status of /sys/kernel/debug/pmc_core/

$ cd /sys/kernel/debug/pmc_core/
$ grep -H . *
ltr_show:SOUTHPORT_A                         LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SOUTHPORT_B                         LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SATA                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:GIGABIT_ETHERNET                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:XHCI                                LTR: RAW: 0x8828                Non-Snoop(ns): 0                   Snoop(ns): 40960           
ltr_show:Reserved                            LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:ME                                  LTR: RAW: 0xc000c00             Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:EVA                                 LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SOUTHPORT_C                         LTR: RAW: 0x88a088a0            Non-Snoop(ns): 163840              Snoop(ns): 163840          
ltr_show:HD_AUDIO                            LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:LPSS                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SOUTHPORT_D                         LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SOUTHPORT_E                         LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:CAMERA                              LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:ESPI                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:SCC                                 LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:ISH                                 LTR: RAW: 0x0                   Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:CURRENT_PLATFORM                    LTR: RAW: 0x40201               Non-Snoop(ns): 0                   Snoop(ns): 0               
ltr_show:AGGREGATED_SYSTEM                   LTR: RAW: 0x1442a15             Non-Snoop(ns): 0                   Snoop(ns): 0               
mphy_core_lanes_power_gating_status:MPHY CORE LANE 0                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 1                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 2                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 3                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 4                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 5                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 6                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 7                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 8                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 9                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 10                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 11                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 12                   State: Not power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 13                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 14                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 15                   State: Power gated
package_cstate_show:Package C2 : 0x1343d47e0c4
package_cstate_show:Package C3 : 0xb6c236520
package_cstate_show:Package C6 : 0x11909781b88
package_cstate_show:Package C7 : 0x43e3d68
package_cstate_show:Package C8 : 0x2367863c7c
package_cstate_show:Package C9 : 0x2671bd1310
package_cstate_show:Package C10 : 0xdf600bc70
pch_ip_power_gating_status:PCH IP: 0  - PMC                                 State: On
pch_ip_power_gating_status:PCH IP: 1  - OPI-DMI                             State: On
pch_ip_power_gating_status:PCH IP: 2  - SPI / eSPI                          State: On
pch_ip_power_gating_status:PCH IP: 3  - XHCI                                State: On
pch_ip_power_gating_status:PCH IP: 4  - SPA                                 State: Off
pch_ip_power_gating_status:PCH IP: 5  - SPB                                 State: Off
pch_ip_power_gating_status:PCH IP: 6  - SPC                                 State: On
pch_ip_power_gating_status:PCH IP: 7  - GBE                                 State: Off
pch_ip_power_gating_status:PCH IP: 8  - SATA                                State: Off
pch_ip_power_gating_status:PCH IP: 9  - HDA-PGD0                            State: Off
pch_ip_power_gating_status:PCH IP: 10 - HDA-PGD1                            State: Off
pch_ip_power_gating_status:PCH IP: 11 - HDA-PGD2                            State: Off
pch_ip_power_gating_status:PCH IP: 12 - HDA-PGD3                            State: Off
pch_ip_power_gating_status:PCH IP: 13 - RSVD                                State: Off
pch_ip_power_gating_status:PCH IP: 14 - LPSS                                State: Off
pch_ip_power_gating_status:PCH IP: 15 - LPC                                 State: Off
pch_ip_power_gating_status:PCH IP: 16 - SMB                                 State: Off
pch_ip_power_gating_status:PCH IP: 17 - ISH                                 State: Off
pch_ip_power_gating_status:PCH IP: 18 - P2SB                                State: Off
pch_ip_power_gating_status:PCH IP: 19 - DFX                                 State: Off
pch_ip_power_gating_status:PCH IP: 20 - SCC                                 State: Off
pch_ip_power_gating_status:PCH IP: 21 - RSVD                                State: Off
pch_ip_power_gating_status:PCH IP: 22 - FUSE                                State: On
pch_ip_power_gating_status:PCH IP: 23 - CAMERA                              State: Off
pch_ip_power_gating_status:PCH IP: 24 - RSVD                                State: Off
pch_ip_power_gating_status:PCH IP: 25 - USB3-OTG                            State: Off
pch_ip_power_gating_status:PCH IP: 26 - EXI                                 State: Off
pch_ip_power_gating_status:PCH IP: 27 - CSE                                 State: Off
pch_ip_power_gating_status:PCH IP: 28 - CSME_KVM                            State: Off
pch_ip_power_gating_status:PCH IP: 29 - CSME_PMT                            State: Off
pch_ip_power_gating_status:PCH IP: 30 - CSME_CLINK                          State: Off
pch_ip_power_gating_status:PCH IP: 31 - CSME_PTIO                           State: Off
pch_ip_power_gating_status:PCH IP: 32 - CSME_USBR                           State: Off
pch_ip_power_gating_status:PCH IP: 33 - CSME_SUSRAM                         State: Off
pch_ip_power_gating_status:PCH IP: 34 - CSME_SMT                            State: Off
pch_ip_power_gating_status:PCH IP: 35 - RSVD                                State: Off
pch_ip_power_gating_status:PCH IP: 36 - CSME_SMS2                           State: Off
pch_ip_power_gating_status:PCH IP: 37 - CSME_SMS1                           State: Off
pch_ip_power_gating_status:PCH IP: 38 - CSME_RTC                            State: Off
pch_ip_power_gating_status:PCH IP: 39 - CSME_PSF                            State: Off
pll_status:MIPI PLL                            State: Idle
pll_status:GEN2 USB2PCIE2 PLL                  State: Active
pll_status:DMIPCIE3 PLL                        State: Active
pll_status:SATA PLL                            State: Idle
slp_s0_residency_usec:0

@kitakar5525
Copy link
Author

lspci -nnvt:

-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [8086:1904]
           +-02.0  Intel Corporation Skylake GT2 [HD Graphics 520] [8086:1916]
           +-05.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit [8086:1919]
           +-08.0  Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model [8086:1911]
           +-14.0  Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f]
           +-14.2  Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31]
           +-14.3  Intel Corporation Device [8086:9d32]
           +-15.0  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60]
           +-15.1  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61]
           +-15.2  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 [8086:9d62]
           +-15.3  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 [8086:9d63]
           +-16.0  Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a]
           +-16.4  Intel Corporation Device [8086:9d3e]
           +-1c.0-[01]--
           +-1d.0-[02]----00.0  Toshiba America Info Systems NVMe Controller [1179:010f]
           +-1d.3-[03]----00.0  Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless [11ab:2b38]
           +-1f.0  Intel Corporation Sunrise Point-LP LPC Controller [8086:9d48]
           +-1f.2  Intel Corporation Sunrise Point-LP PMC [8086:9d21]
           \-1f.3  Intel Corporation Sunrise Point-LP HD Audio [8086:9d70]
sudo lspci -nnvvv

00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [8086:1904] (rev 08)
	Subsystem: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [8086:2015]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Capabilities: [e0] Vendor Specific Information: Len=10 <?>
	Kernel driver in use: skl_uncore

00:02.0 VGA compatible controller [0300]: Intel Corporation Skylake GT2 [HD Graphics 520] [8086:1916] (rev 07) (prog-if 00 [VGA controller])
	Subsystem: Microsoft Corporation Skylake GT2 [HD Graphics 520] [1414:0014]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 130
	Region 0: Memory at a0000000 (64-bit, non-prefetchable) [size=16M]
	Region 2: Memory at 90000000 (64-bit, prefetchable) [size=256M]
	Region 4: I/O ports at 7000 [size=64]
	[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00018  Data: 0000
	Capabilities: [d0] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v1] Process Address Space ID (PASID)
		PASIDCap: Exec+ Priv-, Max PASID Width: 14
		PASIDCtl: Enable- Exec- Priv-
	Capabilities: [200 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 00
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [300 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped-
		Page Request Capacity: 00008000, Page Request Allocation: 00000000
	Kernel driver in use: i915
	Kernel modules: i915

00:05.0 Multimedia controller [0480]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit [8086:1919] (rev 01)
	Subsystem: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit [8086:2015]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 134
	Region 0: [virtual] Memory at a1000000 (64-bit, non-prefetchable) [size=4M]
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [a0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: ipu3-imgu
	Kernel modules: ipu3_imgu

00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model [8086:1911]
	Subsystem: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model [8086:2015]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 255
	Region 0: Memory at d1738000 (64-bit, non-prefetchable) [disabled] [size=4K]
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [f0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-

00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21) (prog-if 30 [XHCI])
	Subsystem: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 131
	Region 0: Memory at d1700000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
		Address: 00000000fee00358  Data: 0000
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci

00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:7270]
	Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin C routed to IRQ 18
	Region 0: Memory at d1739000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: intel_pch_thermal
	Kernel modules: intel_pch_thermal

00:14.3 Multimedia controller [0480]: Intel Corporation Device [8086:9d32] (rev 01)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64
	Interrupt: pin A routed to IRQ 135
	Region 0: Memory at d1710000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00418  Data: 0000
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: ipu3-cio2
	Kernel modules: ipu3_cio2

00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP Serial IO I2C Controller [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at d173a000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP Serial IO I2C Controller [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 17
	Region 0: Memory at d173b000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 [8086:9d62] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP Serial IO I2C Controller [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin C routed to IRQ 18
	Region 0: Memory at d173c000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.3 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 [8086:9d63] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP Serial IO I2C Controller [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin D routed to IRQ 19
	Region 0: Memory at d173d000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP CSME HECI [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 132
	Region 0: Memory at d173e000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00398  Data: 0000
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:16.4 Communication controller [0780]: Intel Corporation Device [8086:9d3e] (rev 21)
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 137
	Region 0: Memory at d173f000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00458  Data: 0000
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 122
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00003000-00006fff [size=16K]
	Memory behind bridge: b9700000-d16fffff [size=384M]
	Prefetchable memory behind bridge: 00000000a1400000-00000000b93fffff [size=384M]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #5, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x0 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
			Slot #4, PowerLimit 25.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet+ CmdCplt- HPIrq+ LinkChg+
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00238  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Sunrise Point-LP PCI Express Root Port [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=44us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 [8086:9d18] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 123
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: b9600000-b96fffff [size=1M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [empty]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #9, Speed 8GT/s, Width x2, ASPM L1, Exit Latency L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x2 (ok)
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #8, PowerLimit 25.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet+ LinkState+
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled ARIFwd+
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00258  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Sunrise Point-LP PCI Express Root Port [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1-
			   T_CommonMode=255us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=400us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1d.3 PCI bridge [0604]: Intel Corporation Device [8086:9d1b] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin D routed to IRQ 124
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: fff00000-000fffff [empty]
	Prefetchable memory behind bridge: 000000008f900000-000000008fafffff [size=2M]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #12, Speed 8GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #11, PowerLimit 10.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet+ LinkState+
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00298  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=70us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=44us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-LP LPC Controller [8086:9d48] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP LPC Controller [8086:7270]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0

00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
	Subsystem: Intel Corporation Sunrise Point-LP PMC [8086:7270]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Region 0: Memory at d1734000 (32-bit, non-prefetchable) [disabled] [size=16K]

00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21) (prog-if 80)
	Subsystem: Intel Corporation Sunrise Point-LP HD Audio [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64
	Interrupt: pin C routed to IRQ 133
	Region 0: Memory at d1730000 (64-bit, non-prefetchable) [size=16K]
	Region 4: Memory at d1720000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
		Status: D3 NoSoftRst+ PME-Enable+ DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee003b8  Data: 0000
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel, snd_soc_skl

02:00.0 Non-Volatile memory controller [0108]: Toshiba America Info Systems NVMe Controller [1179:010f] (rev 01) (prog-if 02 [NVM Express])
	Subsystem: Toshiba America Info Systems NVMe Controller [1179:0001]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	NUMA node: 0
	Region 0: Memory at b9600000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop- FLReset-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <2us, L1 <4us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x2 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [b0] MSI-X: Enable+ Count=8 Masked-
		Vector table: BAR=0 offset=00002000
		PBA: BAR=0 offset=00003000
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [168 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [178 v1] Secondary PCI Express <?>
	Capabilities: [198 v1] Latency Tolerance Reporting
		Max snoop latency: 2097152ns
		Max no snoop latency: 2097152ns
	Capabilities: [1a0 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1- L1_PM_Substates+
			  PortCommonModeRestoreTime=255us PortTPowerOnTime=400us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=400us
	Kernel driver in use: nvme

03:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless [11ab:2b38]
	Subsystem: Device [0004:045e]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 136
	Region 0: Memory at 8f900000 (64-bit, prefetchable) [size=1M]
	Region 2: Memory at 8fa00000 (64-bit, prefetchable) [size=1M]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit+
		Address: 00000000fee00438  Data: 0000
		Masking: fffffffe  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <1us, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 unlimited
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [150 v1] Power Budgeting <?>
	Capabilities: [160 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [168 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=70us PortTPowerOnTime=10us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Kernel driver in use: mwifiex_pcie
	Kernel modules: mwifiex_pcie, mwlwifi

@kitakar5525
Copy link
Author

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 18, 2019

dmesg suspend log

2019-08-18-dmesg-suspend-log-excerpt

kern  :notice: [    0.000000] Linux version 5.2.9-arch1-1-surface (kitakar5525@ip-172-31-31-65) (gcc version 9.1.0 (GCC)) #1 SMP PREEMPT Sun Aug 18 01:11:14 JST 2019
kern  :info  : [    0.000000] Command line: \\vmlinuz-linux-surface initrd=/intel-ucode.img initrd=/initramfs-linux-surface.img root=LABEL=Arch_Linux rw resume=LABEL=Arch_Linux resume_offset=395264 quiet fbcon=scrollback:4096k log_buf_len=16M
[...]
kern  :info  : [   59.708705] DEBUG: ipts_send_sensor_quiesce_io_cmd called
user  :warn  : [   61.005797] pre-suspend state
user  :warn  : [   61.008037] low_power_idle_cpu_residency_us: 72703 usec
user  :warn  : [   61.009854] slp_s0_residency_usec: 0 usec
kern  :info  : [   61.010440] PM: suspend entry (s2idle)
kern  :info  : [   61.024118] Filesystems sync: 0.013 seconds
kern  :debug : [   61.024121] PM: Preparing system for sleep (s2idle)
kern  :info  : [   61.025233] Freezing user space processes ... (elapsed 0.002 seconds) done.
kern  :info  : [   61.027323] OOM killer disabled.
kern  :info  : [   61.027324] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
kern  :debug : [   61.028615] PM: Suspending system (s2idle)
kern  :info  : [   61.028616] printk: Suspending console(s) (use no_console_suspend to debug)
kern  :debug : [   61.131662] snd_hda_intel 0000:00:1f.3: power state changed by ACPI to D0
kern  :debug : [   61.131672] intel-lpss 0000:00:15.0: power state changed by ACPI to D0
kern  :info  : [   61.133149] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 3
kern  :info  : [   61.135679] mwifiex_pcie 0000:03:00.0: None of the WOWLAN triggers enabled
kern  :debug : [   61.147290] snd_hda_intel 0000:00:1f.3: Wakeup disabled by ACPI
kern  :info  : [   61.253688] DEBUG: ipts_mei_cl_remove called
kern  :info  : [   61.253691] DEBUG: ipts_stop called
kern  :info  : [   61.253692] DEBUG: ipts_send_sensor_quiesce_io_cmd called
kern  :err   : [   61.253701] ipts mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F: mei_cldev_send() error 0x4:-19
kern  :info  : [   61.253703] DEBUG: ipts_send_sensor_clear_mem_window_cmd called
kern  :err   : [   61.253706] ipts mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F: mei_cldev_send() error 0x7:-19
kern  :err   : [   61.259050] ipts mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F: error in reading m2h msg
kern  :info  : [   61.259073] IPTS removed
kern  :info  : [   61.303479] DEBUG: Passed nvme_suspend 2897, (pm_suspend_via_firmware() || !ctrl->npss)==false 
kern  :info  : [   61.303483] DEBUG: nvme_suspend(): using host managed power settings
kern  :debug : [   61.306543] intel-lpss 0000:00:15.3: power state changed by ACPI to D0
kern  :debug : [   61.308283] intel-lpss 0000:00:15.2: power state changed by ACPI to D0
kern  :debug : [   61.309601] intel-lpss 0000:00:15.1: power state changed by ACPI to D0
kern  :debug : [   61.417280] PM: suspend of devices complete after 286.469 msecs
kern  :debug : [   61.434539] PM: late suspend of devices complete after 17.258 msecs
kern  :debug : [   61.434716] ACPI: \_SB_.PEPD: _DSM function 3 evaluation successful
kern  :warn  : [   61.435289] ACPI Debug:  "Enter Resiliency"
kern  :debug : [   61.436958] ACPI: \_SB_.PEPD: _DSM function 5 evaluation successful
kern  :debug : [   61.437020] PM: suspend-to-idle
kern  :debug : [   61.440457] nvme 0000:02:00.0: PCI PM: Suspend power state: D0
kern  :debug : [   61.440462] nvme 0000:02:00.0: PCI PM: Skipped
kern  :debug : [   61.440724] pcieport 0000:00:1d.0: PCI PM: Suspend power state: D0
kern  :debug : [   61.440728] pcieport 0000:00:1d.0: PCI PM: Skipped
kern  :debug : [   61.440870] pcieport 0000:00:1c.0: PCI PM: Suspend power state: D0
kern  :debug : [   61.440873] pcieport 0000:00:1c.0: PCI PM: Skipped
kern  :debug : [   61.453525] mei_me 0000:00:16.4: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.453887] snd_hda_intel 0000:00:1f.3: power state changed by ACPI to D3hot
kern  :debug : [   61.453917] snd_hda_intel 0000:00:1f.3: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.453934] i915 0000:00:02.0: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.456858] intel_pch_thermal 0000:00:14.2: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.456860] mei_me 0000:00:16.0: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.457793] mwifiex_pcie 0000:03:00.0: power state changed by ACPI to D3hot
kern  :debug : [   61.458190] intel-lpss 0000:00:15.3: power state changed by ACPI to D3cold
kern  :debug : [   61.458755] mwifiex_pcie 0000:03:00.0: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.459578] intel-lpss 0000:00:15.0: power state changed by ACPI to D3cold
kern  :debug : [   61.460652] intel-lpss 0000:00:15.3: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.461083] intel-lpss 0000:00:15.1: power state changed by ACPI to D3cold
kern  :debug : [   61.461418] intel-lpss 0000:00:15.0: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.461506] intel-lpss 0000:00:15.2: power state changed by ACPI to D3cold
kern  :debug : [   61.461717] intel-lpss 0000:00:15.1: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.461802] intel-lpss 0000:00:15.2: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.476960] xhci_hcd 0000:00:14.0: power state changed by ACPI to D3hot
kern  :debug : [   61.476984] xhci_hcd 0000:00:14.0: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.520276] pcieport 0000:00:1d.3: power state changed by ACPI to D3hot
kern  :debug : [   61.520495] pcieport 0000:00:1d.3: PCI PM: Suspend power state: D3hot
kern  :debug : [   61.520521] PM: noirq suspend of devices complete after 83.342 msecs
kern  :debug : [   70.836033] PM: Timekeeping suspended for 8.547 seconds
kern  :debug : [   70.836050] TSC deadline timer enabled
kern  :debug : [   70.836184] ACPI: \_PR_.PR00: LPI: required min power state:D0 current power state:D0
kern  :info  : [   70.836189] ACPI: \_PR_.PR00: LPI: Device not power manageable
kern  :debug : [   70.836193] ACPI: \_PR_.PR01: LPI: required min power state:D0 current power state:D0
kern  :info  : [   70.836196] ACPI: \_PR_.PR01: LPI: Device not power manageable
kern  :debug : [   70.836200] ACPI: \_PR_.PR02: LPI: required min power state:D0 current power state:D0
kern  :info  : [   70.836202] ACPI: \_PR_.PR02: LPI: Device not power manageable
kern  :debug : [   70.836205] ACPI: \_PR_.PR03: LPI: required min power state:D0 current power state:D0
kern  :info  : [   70.836207] ACPI: \_PR_.PR03: LPI: Device not power manageable
kern  :debug : [   70.836211] ACPI: \_SB_.PCI0.GFX0: LPI: required min power state:D3hot current power state:D0
kern  :info  : [   70.836214] ACPI: \_SB_.PCI0.GFX0: LPI: Device not power manageable
kern  :debug : [   70.836218] ACPI: \_SB_.PCI0.I2C0: LPI: required min power state:D3hot current power state:D3hot
kern  :debug : [   70.836222] ACPI: \_SB_.PCI0.XHC_: LPI: required min power state:D3hot current power state:D3hot
kern  :debug : [   70.836225] ACPI: \_SB_.PCI0.HDAS: LPI: required min power state:D3hot current power state:D3hot
kern  :debug : [   70.836229] ACPI: \_SB_.PCI0.RP05: LPI: required min power state:D0 current power state:D0
kern  :debug : [   70.836233] ACPI: \_SB_.PCI0.RP09.PXSX: LPI: required min power state:D0 current power state:D3cold
kern  :debug : [   70.836237] ACPI: \_SB_.PCI0.RP12.PXSX: LPI: required min power state:D3hot current power state:D3hot
kern  :debug : [   70.836241] ACPI: \_SB_.PCI0.ISP0: LPI: required min power state:D3hot current power state:D0
kern  :info  : [   70.836243] ACPI: \_SB_.PCI0.ISP0: LPI: Device not power manageable
kern  :debug : [   70.836247] ACPI: \_SB_.PCI0.HECI: LPI: required min power state:D0 current power state:D0
kern  :info  : [   70.836249] ACPI: \_SB_.PCI0.HECI: LPI: Device not power manageable
kern  :debug : [   70.839183] intel-lpss 0000:00:15.0: power state changed by ACPI to D0
kern  :debug : [   70.839745] intel-lpss 0000:00:15.1: power state changed by ACPI to D0
kern  :debug : [   70.839996] intel-lpss 0000:00:15.2: power state changed by ACPI to D0
kern  :debug : [   70.840121] intel-lpss 0000:00:15.3: power state changed by ACPI to D0
kern  :warn  : [   70.842285] ACPI Debug:  "Power button pressed"
kern  :debug : [   70.852326] xhci_hcd 0000:00:14.0: power state changed by ACPI to D0
kern  :debug : [   70.852734] snd_hda_intel 0000:00:1f.3: power state changed by ACPI to D0
kern  :debug : [   71.002156] pcieport 0000:00:1d.3: power state changed by ACPI to D0
kern  :debug : [   71.018998] mwifiex_pcie 0000:03:00.0: power state changed by ACPI to D0
kern  :info  : [   71.035363] mwifiex_pcie 0000:03:00.0: Refused to change power state, currently in D3
kern  :debug : [   71.044212] PM: noirq resume of devices complete after 208.070 msecs
kern  :warn  : [   71.048768] ACPI Debug:  "Power button released"
kern  :debug : [   71.048793] PM: resume from suspend-to-idle
kern  :warn  : [   71.049005] ACPI Debug:  "Exit Resiliency"
kern  :warn  : [   71.049022] ACPI Debug:  "Exit CS"
kern  :debug : [   71.106421] ACPI: \_SB_.PEPD: _DSM function 6 evaluation successful
kern  :debug : [   71.106483] ACPI: \_SB_.PEPD: _DSM function 4 evaluation successful
kern  :warn  : [   71.107533] ACPI Debug:  "SAM wake up interrupt sent"
kern  :debug : [   71.108534] PM: early resume of devices complete after 2.047 msecs
kern  :alert : [   71.109019] mwifiex_pcie: DEBUG: putting into D0...
kern  :debug : [   71.109040] mwifiex_pcie 0000:03:00.0: power state changed by ACPI to D0
kern  :info  : [   71.109802] [drm] HuC: Loaded firmware i915/skl_huc_ver01_07_1398.bin (version 1.7)
kern  :info  : [   71.114525] [drm] GuC: Loaded firmware i915/skl_guc_ver9_33.bin (version 9.33)
kern  :info  : [   71.114659] i915 0000:00:02.0: GuC firmware version 9.33
kern  :info  : [   71.114661] i915 0000:00:02.0: GuC submission enabled
kern  :info  : [   71.114662] i915 0000:00:02.0: HuC enabled
kern  :warn  : [   71.118277] ACPI Debug:  "Primary internal battery is available"
kern  :warn  : [   71.131348] ACPI Debug:  "Primary external battery is available"
kern  :warn  : [   71.132230] acpi device:44: Cannot transition to power state D0 for parent in D3hot
kern  :info  : [   71.133093] DEBUG: Passed nvme_resume 2868 
kern  :debug : [   71.201093] PM: resume of devices complete after 92.622 msecs
kern  :debug : [   71.201545] PM: Finishing wakeup.
kern  :info  : [   71.201547] OOM killer enabled.
kern  :info  : [   71.201548] Restarting tasks ... done.
kern  :warn  : [   71.217581] ACPI Debug:  "ext bat temp returned"
kern  :warn  : [   71.219601] ACPI Debug:  "Primary internal battery _BIX called"
kern  :info  : [   71.225919] probing Intel Precise Touch & Stylus
kern  :info  : [   71.225923] IPTS using DMA_BIT_MASK(64)
kern  :info  : [   71.228450] DEBUG: ipts_start called
kern  :debug : [   71.228480] intel-lpss 0000:00:15.2: power state changed by ACPI to D3cold
kern  :debug : [   71.229492] intel-lpss 0000:00:15.3: power state changed by ACPI to D3cold
kern  :debug : [   71.230214] intel-lpss 0000:00:15.1: power state changed by ACPI to D3cold
kern  :info  : [   71.234997] input: ipts 1B96:005E UNKNOWN as /devices/pci0000:00/0000:00:16.4/mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F/0044:1B96:005E.0004/input/input50
kern  :info  : [   71.235164] input: ipts 1B96:005E as /devices/pci0000:00/0000:00:16.4/mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F/0044:1B96:005E.0004/input/input52
kern  :info  : [   71.235431] input: ipts 1B96:005E Touchscreen as /devices/pci0000:00/0000:00:16.4/mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F/0044:1B96:005E.0004/input/input53
kern  :info  : [   71.235583] input: ipts 1B96:005E Mouse as /devices/pci0000:00/0000:00:16.4/mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F/0044:1B96:005E.0004/input/input54
kern  :info  : [   71.235703] input: ipts 1B96:005E UNKNOWN as /devices/pci0000:00/0000:00:16.4/mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F/0044:1B96:005E.0004/input/input57
kern  :info  : [   71.235784] hid-multitouch 0044:1B96:005E.0004: input,hidraw0: <UNKNOWN> HID v16900.00 Mouse [ipts 1B96:005E] on heci3
kern  :info  : [   71.235809] DEBUG: ipts_send_sensor_clear_mem_window_cmd called
kern  :err   : [   71.249390] ipts mei::3e8d0870-271a-4208-8eb5-9acb9402ae04:0F: touch enabled 4
kern  :warn  : [   71.298091] ACPI Debug:  "New battery trip point set"
kern  :warn  : [   71.302814] ACPI Debug:  "Primary internal battery _BST called"
kern  :warn  : [   71.305261] ACPI Debug:  "Primary internal battery charging"
kern  :warn  : [   71.314637] ACPI Debug:  "External battery _BIX called"
kern  :warn  : [   71.381049] ACPI Debug:  "New external battery trip point set"
kern  :warn  : [   71.384691] ACPI Debug:  "Primary internal battery _BST called"
kern  :warn  : [   71.388039] ACPI Debug:  "External battery charging"
kern  :info  : [   71.399042] PM: suspend exit
user  :warn  : [   71.403085] post-suspend state
user  :warn  : [   71.404819] low_power_idle_cpu_residency_us: 9388717 usec
user  :warn  : [   71.406695] slp_s0_residency_usec: 0 usec
kern  :notice: [   71.414374] audit: type=1131 audit(1566125250.573:73): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=usbguard-dbus comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.417858] audit: type=1131 audit(1566125250.577:74): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=usbguard comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.427285] audit: type=1130 audit(1566125250.587:75): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=usbguard-dbus comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.429246] audit: type=1130 audit(1566125250.587:76): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=usbguard comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.431195] audit: type=1130 audit(1566125250.590:77): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=systemd-suspend comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.431207] audit: type=1131 audit(1566125250.590:78): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=systemd-suspend comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :alert : [   71.580608] mwifiex: DEBUG: Not setting priv->scan_aborting = true;
kern  :info  : [   71.659769] [drm] Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.
kern  :notice: [   71.696757] audit: type=1130 audit(1566125250.857:79): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
kern  :notice: [   71.749104] userif-2: sent link down event.
kern  :notice: [   71.749109] userif-2: sent link up event.
kern  :debug : [   72.411281] intel-lpss 0000:00:15.0: power state changed by ACPI to D3cold
kern  :debug : [   72.456421] ACPI: \_SB_.PCI0.HDAS: GPE6D enabled for wakeup
kern  :debug : [   72.456426] snd_hda_intel 0000:00:1f.3: Wakeup enabled by ACPI
kern  :debug : [   72.471233] snd_hda_intel 0000:00:1f.3: power state changed by ACPI to D3hot
kern  :notice: [   77.603514] userif-2: sent link down event.
kern  :notice: [   77.603518] userif-2: sent link up event.
kern  :info  : [   80.449810] mwifiex_pcie 0000:03:00.0: info: trying to associate to '[SSID]' bssid [BSSID]
kern  :info  : [   80.541050] mwifiex_pcie 0000:03:00.0: info: associated to bssid [BSSID] successfully
kern  :info  : [   80.613259] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
kern  :notice: [   80.813731] userif-2: sent link down event.
kern  :notice: [   80.813742] userif-2: sent link up event.
kern  :notice: [   81.206060] userif-2: sent link down event.
kern  :notice: [   81.206071] userif-2: sent link up event.
kern  :notice: [   81.728695] userif-2: sent link down event.
kern  :notice: [   81.728707] userif-2: sent link up event.

with color (html format, rename it to .html)
2019-08-18-dmesg-suspend-log-excerpt.html.txt

DEBUG: lines with alert log level are my modification. Of course S0ix is not working even without the modifications.


Suspicious output:

kern  :warn  : [   71.132230] acpi device:44: Cannot transition to power state D0 for parent in D3hot

device:44 is \_SB_.PCI0.RP09.PXSX (NVMe)

$ cat /sys/bus/acpi/devices/device:44/path
\_SB_.PCI0.RP09.PXSX

I understand parent is PCI bridge 00:1d.0. However, it's in D0 on suspend

kern  :debug : [   61.440724] pcieport 0000:00:1d.0: PCI PM: Suspend power state: D0
kern  :debug : [   61.440728] pcieport 0000:00:1d.0: PCI PM: Skipped

I think it's weird.

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 18, 2019

@StollD and @qzed
Can you please provide

  • lspci -nnvt
  • sudo lspci -nnvvv
  • sudo su -c "cd /sys/kernel/debug/pmc_core/; grep -H . *"

Thank you for your cooperation!

@StollD
Copy link

StollD commented Aug 18, 2019

  • lspci -nnvt
-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904]
           +-02.0  Intel Corporation HD Graphics 620 [8086:5916]
           +-04.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903]
           +-05.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit [8086:1919]
           +-13.0  Intel Corporation Sunrise Point-LP Integrated Sensor Hub [8086:9d35]
           +-14.0  Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f]
           +-14.2  Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31]
           +-14.3  Intel Corporation Device [8086:9d32]
           +-15.0  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60]
           +-15.1  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61]
           +-15.2  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 [8086:9d62]
           +-15.3  Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 [8086:9d63]
           +-16.0  Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a]
           +-16.4  Intel Corporation Device [8086:9d3e]
           +-1c.0-[01]----00.0  Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless [11ab:2b38]
           +-1c.4-[02]--
           +-1d.0-[03]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 [144d:a804]
           +-1e.0  Intel Corporation Sunrise Point-LP Serial IO UART Controller #0 [8086:9d27]
           +-1f.0  Intel Corporation Sunrise Point LPC Controller/eSPI Controller [8086:9d4e]
           +-1f.2  Intel Corporation Sunrise Point-LP PMC [8086:9d21]
           +-1f.3  Intel Corporation Sunrise Point-LP HD Audio [8086:9d71]
           \-1f.4  Intel Corporation Sunrise Point-LP SMBus [8086:9d23]
  • sudo lspci -nnvvv
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02)
	Subsystem: Intel Corporation Device [8086:2015]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
	Latency: 0
	Capabilities: [e0] Vendor Specific Information: Len=10 <?>
	Kernel driver in use: skl_uncore

00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 620 [8086:5916] (rev 02) (prog-if 00 [VGA controller])
	Subsystem: Microsoft Corporation Device [1414:0027]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 127
	Region 0: Memory at c0000000 (64-bit, non-prefetchable) [size=16M]
	Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
	Region 4: I/O ports at 1000 [size=64]
	[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00018  Data: 0000
	Capabilities: [d0] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v1] Process Address Space ID (PASID)
		PASIDCap: Exec- Priv-, Max PASID Width: 14
		PASIDCtl: Enable- Exec- Priv-
	Capabilities: [200 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 00
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [300 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped+
		Page Request Capacity: 00008000, Page Request Allocation: 00000000
	Kernel driver in use: i915
	Kernel modules: i915

00:04.0 Signal processing controller [1180]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903] (rev 02)
	Subsystem: Intel Corporation Device [8086:2015]
	Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at c2730000 (64-bit, non-prefetchable) [size=32K]
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: proc_thermal
	Kernel modules: processor_thermal_device

00:05.0 Multimedia controller [0480]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit [8086:1919] (rev 01)
	Subsystem: Intel Corporation Device [8086:2015]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 255
	Region 0: Memory at c2000000 (64-bit, non-prefetchable) [disabled] [size=4M]
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [a0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

00:13.0 Non-VGA unclassified device [0000]: Intel Corporation Sunrise Point-LP Integrated Sensor Hub [8086:9d35] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 20
	Region 0: Memory at c2740000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: intel_ish_ipc
	Kernel modules: intel_ish_ipc

00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21) (prog-if 30 [XHCI])
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 125
	Region 0: Memory at c2700000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
		Address: 00000000fee00278  Data: 0000
	Kernel driver in use: xhci_hcd

00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin C routed to IRQ 18
	Region 0: Memory at c2741000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
		Address: 00000000  Data: 0000
	Kernel driver in use: intel_pch_thermal
	Kernel modules: intel_pch_thermal

00:14.3 Multimedia controller [0480]: Intel Corporation Device [8086:9d32] (rev 01)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64
	Interrupt: pin A routed to IRQ 144
	Region 0: Memory at c2710000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee003f8  Data: 0000
	Capabilities: [d0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Kernel driver in use: ipu3-cio2
	Kernel modules: ipu3_cio2

00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at c2742000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 17
	Region 0: Memory at c2743000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 [8086:9d62] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin C routed to IRQ 18
	Region 0: Memory at c2744000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:15.3 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 [8086:9d63] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin D routed to IRQ 19
	Region 0: Memory at c2745000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 132
	Region 0: Memory at c2746000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00378  Data: 0000
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:16.4 Communication controller [0780]: Intel Corporation Device [8086:9d3e] (rev 21)
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 135
	Region 0: Memory at c2747000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00398  Data: 0000
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 [8086:9d10] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 122
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: fff00000-000fffff [empty]
	Prefetchable memory behind bridge: 00000000c2400000-00000000c25fffff [size=2M]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #1, Speed 8GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #0, PowerLimit 10.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet+ LinkState+
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00218  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
			   T_CommonMode=70us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=44us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1c.4 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 123
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 00003000-00003fff [size=4K]
	Memory behind bridge: c1000000-c1ffffff [size=16M]
	Prefetchable memory behind bridge: 0000000090000000-00000000a1ffffff [size=288M]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #5, Speed 8GT/s, Width x4, ASPM not supported
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x0 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
			Slot #4, PowerLimit 25.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet+ CmdCplt- HPIrq+ LinkChg+
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
			Changed: MRL- PresDet- LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00238  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=44us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 [8086:9d18] (rev f1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 124
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [empty]
	Memory behind bridge: c2600000-c26fffff [size=1M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [empty]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 256 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #9, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x4 (ok)
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #8, PowerLimit 25.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet+ LinkState+
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not Supported ARIFwd+
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee00258  Data: 0000
	Capabilities: [90] Subsystem: Intel Corporation Device [8086:7270]
	Capabilities: [a0] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v0] Null
	Capabilities: [140 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
	Capabilities: [200 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=40us PortTPowerOnTime=44us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
			   T_CommonMode=40us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=44us
	Capabilities: [220 v1] Secondary PCI Express <?>
	Kernel driver in use: pcieport

00:1e.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO UART Controller #0 [8086:9d27] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 20
	Region 0: Memory at c2748000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: intel-lpss
	Kernel modules: intel_lpss_pci

00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point LPC Controller/eSPI Controller [8086:9d4e] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0

00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Region 0: Memory at c273c000 (32-bit, non-prefetchable) [disabled] [size=16K]

00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d71] (rev 21) (prog-if 80)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64
	Interrupt: pin A routed to IRQ 145
	Region 0: Memory at c2738000 (64-bit, non-prefetchable) [size=16K]
	Region 4: Memory at c2720000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee00418  Data: 0000
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel, snd_soc_skl

00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
	Subsystem: Intel Corporation Device [8086:7270]
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at c2749000 (64-bit, non-prefetchable) [size=256]
	Region 4: I/O ports at efa0 [size=32]
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801

01:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88W8897 [AVASTAR] 802.11ac Wireless [11ab:2b38]
	Subsystem: Device [0009:045e]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 146
	Region 0: Memory at c2500000 (64-bit, prefetchable) [size=1M]
	Region 2: Memory at c2400000 (64-bit, prefetchable) [size=1M]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit+
		Address: 00000000fee00438  Data: 0000
		Masking: fffffffe  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <1us, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 unlimited
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [140 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [150 v1] Power Budgeting <?>
	Capabilities: [160 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [168 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=70us PortTPowerOnTime=10us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Kernel driver in use: mwifiex_pcie
	Kernel modules: mwifiex_pcie

03:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 [144d:a804] (prog-if 02 [NVM Express])
	Subsystem: Samsung Electronics Co Ltd Device [144d:a801]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	NUMA node: 0
	Region 0: Memory at c2600000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000W
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 256 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (ok), Width x4 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+
			 EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
	Capabilities: [b0] MSI-X: Enable+ Count=8 Masked-
		Vector table: BAR=0 offset=00003000
		PBA: BAR=0 offset=00002000
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [158 v1] Power Budgeting <?>
	Capabilities: [168 v1] Secondary PCI Express <?>
	Capabilities: [188 v1] Latency Tolerance Reporting
		Max snoop latency: 2097152ns
		Max no snoop latency: 2097152ns
	Capabilities: [190 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
			   T_CommonMode=0us LTR1.2_Threshold=163840ns
		L1SubCtl2: T_PwrOn=44us
	Kernel driver in use: nvme
	Kernel modules: nvme
  • cd /sys/kernel/debug/pmc_core/; grep -H . *
ltr_show:SOUTHPORT_A                            LTR: RAW: 0x8bf28bf2            Non-Snoop(ns): 1034240          Snoop(ns): 1034240         
ltr_show:SOUTHPORT_B                            LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:SATA                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:GIGABIT_ETHERNET                       LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:XHCI                                   LTR: RAW: 0x8828                Non-Snoop(ns): 0                Snoop(ns): 40960           
ltr_show:Reserved                               LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:ME                                     LTR: RAW: 0xc000c00             Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:EVA                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:SOUTHPORT_C                            LTR: RAW: 0x9f409f4             Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:HD_AUDIO                               LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:LPSS                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:SOUTHPORT_D                            LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:SOUTHPORT_E                            LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:CAMERA                                 LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:ESPI                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:SCC                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:ISH                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:CURRENT_PLATFORM                       LTR: RAW: 0x40201               Non-Snoop(ns): 0                Snoop(ns): 0               
ltr_show:AGGREGATED_SYSTEM                      LTR: RAW: 0x7e82a15             Non-Snoop(ns): 0                Snoop(ns): 0               
mphy_core_lanes_power_gating_status:MPHY CORE LANE 0                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 1                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 2                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 3                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 4                    State: Not power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 5                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 6                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 7                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 8                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 9                    State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 10                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 11                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 12                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 13                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 14                   State: Power gated
mphy_core_lanes_power_gating_status:MPHY CORE LANE 15                   State: Power gated
package_cstate_show:Package C2 : 0x4746f76ee16
package_cstate_show:Package C3 : 0x14fa1f3be34
package_cstate_show:Package C6 : 0x41fb860bb74
package_cstate_show:Package C7 : 0x1c3f92
package_cstate_show:Package C8 : 0x3a6b7d46
package_cstate_show:Package C9 : 0x0
package_cstate_show:Package C10 : 0x17faffc2ba4
pch_ip_power_gating_status:PCH IP: 0  - PMC                                     State: On
pch_ip_power_gating_status:PCH IP: 1  - OPI-DMI                                 State: On
pch_ip_power_gating_status:PCH IP: 2  - SPI / eSPI                              State: On
pch_ip_power_gating_status:PCH IP: 3  - XHCI                                    State: On
pch_ip_power_gating_status:PCH IP: 4  - SPA                                     State: On
pch_ip_power_gating_status:PCH IP: 5  - SPB                                     State: Off
pch_ip_power_gating_status:PCH IP: 6  - SPC                                     State: Off
pch_ip_power_gating_status:PCH IP: 7  - GBE                                     State: Off
pch_ip_power_gating_status:PCH IP: 8  - SATA                                    State: Off
pch_ip_power_gating_status:PCH IP: 9  - HDA-PGD0                                State: On
pch_ip_power_gating_status:PCH IP: 10 - HDA-PGD1                                State: Off
pch_ip_power_gating_status:PCH IP: 11 - HDA-PGD2                                State: Off
pch_ip_power_gating_status:PCH IP: 12 - HDA-PGD3                                State: Off
pch_ip_power_gating_status:PCH IP: 13 - RSVD                                    State: Off
pch_ip_power_gating_status:PCH IP: 14 - LPSS                                    State: On
pch_ip_power_gating_status:PCH IP: 15 - LPC                                     State: Off
pch_ip_power_gating_status:PCH IP: 16 - SMB                                     State: Off
pch_ip_power_gating_status:PCH IP: 17 - ISH                                     State: On
pch_ip_power_gating_status:PCH IP: 18 - P2SB                                    State: Off
pch_ip_power_gating_status:PCH IP: 19 - DFX                                     State: Off
pch_ip_power_gating_status:PCH IP: 20 - SCC                                     State: Off
pch_ip_power_gating_status:PCH IP: 21 - RSVD                                    State: Off
pch_ip_power_gating_status:PCH IP: 22 - FUSE                                    State: On
pch_ip_power_gating_status:PCH IP: 23 - CAMERA                                  State: Off
pch_ip_power_gating_status:PCH IP: 24 - RSVD                                    State: Off
pch_ip_power_gating_status:PCH IP: 25 - USB3-OTG                                State: Off
pch_ip_power_gating_status:PCH IP: 26 - EXI                                     State: Off
pch_ip_power_gating_status:PCH IP: 27 - CSE                                     State: Off
pch_ip_power_gating_status:PCH IP: 28 - CSME_KVM                                State: Off
pch_ip_power_gating_status:PCH IP: 29 - CSME_PMT                                State: Off
pch_ip_power_gating_status:PCH IP: 30 - CSME_CLINK                              State: Off
pch_ip_power_gating_status:PCH IP: 31 - CSME_PTIO                               State: Off
pch_ip_power_gating_status:PCH IP: 32 - CSME_USBR                               State: Off
pch_ip_power_gating_status:PCH IP: 33 - CSME_SUSRAM                             State: Off
pch_ip_power_gating_status:PCH IP: 34 - CSME_SMT                                State: Off
pch_ip_power_gating_status:PCH IP: 35 - RSVD                                    State: Off
pch_ip_power_gating_status:PCH IP: 36 - CSME_SMS2                               State: Off
pch_ip_power_gating_status:PCH IP: 37 - CSME_SMS1                               State: Off
pch_ip_power_gating_status:PCH IP: 38 - CSME_RTC                                State: Off
pch_ip_power_gating_status:PCH IP: 39 - CSME_PSF                                State: Off
pll_status:MIPI PLL                             State: Idle
pll_status:GEN2 USB2PCIE2 PLL                   State: Active
pll_status:DMIPCIE3 PLL                         State: Active
pll_status:SATA PLL                             State: Idle
slp_s0_residency_usec:585659300

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 18, 2019

@StollD
Ah sorry, please run cd /sys/kernel/debug/pmc_core/; grep -H . * with root privilege.

sudo su -c "cd /sys/kernel/debug/pmc_core/; grep -H . *"

(I will update my old comment)

@StollD
Copy link

StollD commented Aug 18, 2019

Yep, that worked. Updated my comment too.

@kitakar5525
Copy link
Author

@StollD Thank you for your info!

@kitakar5525
Copy link
Author

I can see no special difference... I've got stuck.

@kitakar5525
Copy link
Author

@StollD Can you still achieve S0ix when you use distribution's (without jakeday patches) 5.2.y kernel?

@StollD
Copy link

StollD commented Aug 23, 2019

No, using the default fedora kernel I cannot get into S0ix.

Also, mirroring from gitter:

After updating my BIOS and reinstalling Linux, I had some issues to get into s0ix too. When I compared my logs with the ones I sent you I noticed that the cameras suddenly were reported as not power manageable (that error didn't come up for me with the old BIOS). I disabled the cameras in the BIOS and now my s0ix works again, so maybe that could fix your problems too?

@kitakar5525
Copy link
Author

Thank you for your info!

It's interesting for me that the default fedora kernel cannot achieve S0ix. The only thing that comes to mind is NVMe power management patch in 0002-suspend.patch. The NVMe patch is from 5.3-rc. So, if you are interested, try 5.3-rc (without jakeday patches) to see you can still achieve S0ix there.

 I disabled the cameras in the BIOS and now my s0ix works again, so maybe that could fix your problems too?

I disabled all cameras, but unfortunately, I still cannot achieve the states.

I'm now trying Intel's SoC Watch. I hope I can find something interesting with it.

@StollD
Copy link

StollD commented Aug 23, 2019

It doesn't work with 5.3-rc5 either, sadly. Using the stock kernels it doesn't even get into the higher packages (C7-10 just show 0).

Building a kernel with just surface_acpi could be an option for further testing, since that appears to fix this behaviour (you can replicate that behaviour by blacklisting surface_acpi on the patched kernel)

But I discovered something else:

As it turns out, my camera fix that I posted earlier was a false positive. Since I reinstalled linux getting into S0ix was very unreliable. Sometimes it worked, but most of the time it didn't.

When I disabled every device you can disable in the BIOS everything worked again (tested extensively by suspending and resuming all over again for like the last hour). Then I reenabled the devices one by one, and:

It seemed to be Bluetooth. When I enabled that in the BIOS S0ix was broken again. And given that I disable Bluetooth, I can enable every other device (inc. cameras), and S0ix still worked. On my old install I disabled Bluetooth, because if it was enabled the WiFi speed at my university tanked, so that would explain why it worked flawless for me before.

Note: Even just disabling Bluetooth in the OS and rebooting seems to be enough

I hope this helps people trying to get Kaby Lake devices into S0ix. I don't think it will work on Sky Lake, since /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us doesn't even exist there, so the kernel must have a reason to think that S0ix isn't possible at all.

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 24, 2019

Thank you for your investigation!
Disabling Bluetooth still does not enable S0ix…

Regarding low_power_idle_system_residency_us not exist, I believe it does not mean S0ix is not possible. The commit [2] message:

Here the count "low_power_idle_system_residency_us" show the count the
system was in low power state. This is read via MMIO interface. This
is mapped to SLP_S0 residency on modern Intel systems. This residency
is achieved only when CPU is in PKG C10 and all functional blocks are
in low power state.

I think that I just cannot read via MMIO interface. (I don't know well about MMIO, though.)

Some links regarding low_power_idle_system_residency_us


The surface_acpi is doing something about S0ix as a result for SB2 (?)
On SB1/SP4, I think the module currently does nothing except Lid switch.

@StollD
Copy link

StollD commented Aug 24, 2019

I think I know why it isn't detected.

Using your acpidump [1] I disassembled the LPIT from your SB1 and from my SB2, and noticed that for the SB1 the adress space where S0ix residency is stored is set to FunctionalFixedHW while it is SystemMemory on SB2. The LPIT support in the kernel can only read system S0ix residency from SystemMemory, not from FunctionalFixedHW (thats where it tries to read CPU residency from).

if (info->gaddr.space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) {
	info->iomem_addr = ioremap_nocache(info->gaddr.address,
					   info->gaddr.bit_width / 8);
	if (!info->iomem_addr)
		return;

	/* Silently fail, if cpuidle attribute group is not present */
	sysfs_add_file_to_group(&cpu_subsys.dev_root->kobj,
				&dev_attr_low_power_idle_system_residency_us.attr,
				"cpuidle");
} else if (info->gaddr.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE) {
	/* Silently fail, if cpuidle attribute group is not present */
	sysfs_add_file_to_group(&cpu_subsys.dev_root->kobj,
				&dev_attr_low_power_idle_cpu_residency_us.attr,
				"cpuidle");
}

For comparison, here are both LPIT tables:

SB1:

[078h 0120   4]                    Residency : 00007530
[07Ch 0124   4]                      Latency : 00000BB8
[080h 0128  12]            Residency Counter : [Generic Address Structure]
[080h 0128   1]                     Space ID : 7F [FunctionalFixedHW]
[081h 0129   1]                    Bit Width : 40
[082h 0130   1]                   Bit Offset : 00
[083h 0131   1]         Encoded Access Width : 00 [Undefined/Legacy]
[084h 0132   8]                      Address : 0000000000000632

[08Ch 0140   8]            Counter Frequency : 0000000000000000

SB2:

[078h 0120   4]                    Residency : 00007530
[07Ch 0124   4]                      Latency : 00000BB8
[080h 0128  12]            Residency Counter : [Generic Address Structure]
[080h 0128   1]                     Space ID : 00 [SystemMemory]
[081h 0129   1]                    Bit Width : 20
[082h 0130   1]                   Bit Offset : 00
[083h 0131   1]         Encoded Access Width : 03 [DWord Access:32]
[084h 0132   8]                      Address : 00000000FE00013C

[08Ch 0140   8]            Counter Frequency : 000000000000256C

So, what I am wondering now: Is it possible that your system actually gets into S0ix but the kernel cannot show you that it worked?

@StollD
Copy link

StollD commented Aug 24, 2019

Actually, when you look further into the LPIT table, you can find the same FunctionalFixedHW entry a second time. For SB1, it is simply duplicated, while for SB2 it is the exact same entry as on SB1, in addition to the SystemMemory entry.

SB1:

[040h 0064   4]                    Residency : 00007530
[044h 0068   4]                      Latency : 00000BB8
[048h 0072  12]            Residency Counter : [Generic Address Structure]
[048h 0072   1]                     Space ID : 7F [FunctionalFixedHW]
[049h 0073   1]                    Bit Width : 40
[04Ah 0074   1]                   Bit Offset : 00
[04Bh 0075   1]         Encoded Access Width : 00 [Undefined/Legacy]
[04Ch 0076   8]                      Address : 0000000000000632

[054h 0084   8]            Counter Frequency : 0000000000000000

[...]

[078h 0120   4]                    Residency : 00007530
[07Ch 0124   4]                      Latency : 00000BB8
[080h 0128  12]            Residency Counter : [Generic Address Structure]
[080h 0128   1]                     Space ID : 7F [FunctionalFixedHW]
[081h 0129   1]                    Bit Width : 40
[082h 0130   1]                   Bit Offset : 00
[083h 0131   1]         Encoded Access Width : 00 [Undefined/Legacy]
[084h 0132   8]                      Address : 0000000000000632

[08Ch 0140   8]            Counter Frequency : 0000000000000000

SB2:

[040h 0064   4]                    Residency : 00007530
[044h 0068   4]                      Latency : 00000BB8
[048h 0072  12]            Residency Counter : [Generic Address Structure]
[048h 0072   1]                     Space ID : 7F [FunctionalFixedHW]
[049h 0073   1]                    Bit Width : 40
[04Ah 0074   1]                   Bit Offset : 00
[04Bh 0075   1]         Encoded Access Width : 00 [Undefined/Legacy]
[04Ch 0076   8]                      Address : 0000000000000632

[054h 0084   8]            Counter Frequency : 0000000000000000

[...]

[078h 0120   4]                    Residency : 00007530
[07Ch 0124   4]                      Latency : 00000BB8
[080h 0128  12]            Residency Counter : [Generic Address Structure]
[080h 0128   1]                     Space ID : 00 [SystemMemory]
[081h 0129   1]                    Bit Width : 20
[082h 0130   1]                   Bit Offset : 00
[083h 0131   1]         Encoded Access Width : 03 [DWord Access:32]
[084h 0132   8]                      Address : 00000000FE00013C

[08Ch 0140   8]            Counter Frequency : 000000000000256C

These are the entries that store the value from low_power_idle_cpu_residency_us as far as I can tell. Whats interesting about them is that their Address fields contain the same value, so both counters would be written to / read from the same MSR (Model Specific Register) [1]

The only conclusion I can draw from this tbh, is that both values (CPU and system residency) might be connected somehow, or that the HW description on the SB1 is bugged :P

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 24, 2019

So, what I am wondering now: Is it possible that your system actually gets into S0ix but the kernel cannot show you that it worked?

I cannot say for sure, but at least slp_s0_residency_usec exists and should be valid on Skylake, too. However, it always shows 0. Power consumption between suspend is about 1~2 %/h. This result may also imply that it did not enter S0ix.

Link to the commit about slp_s0_residency_usec

Link to the spec (the link in the commit is broken)

@StollD
Copy link

StollD commented Aug 24, 2019

Power consumption between suspend is about 1~2 %/h. This result may also imply that it did not enter S0ix.

I never did an exact measurement, but thats similar to what I have noticed with S0ix working. I will do an exact test overnight, with S0ix disabled / sabotaged, and then a more exact one with S0ix enabled.

Link to the commit about slp_s0_residency_usec

If you look at the version of that driver in master, you can see that it uses the (IO mapped) address from LPIT to figure out the base address for the PMC data. If it cannot find that address, it will guess the address and just use a default (0xFE000000).

if (lpit_read_residency_count_address(&slp_s0_addr))
	pmcdev->base_addr = PMC_BASE_ADDR_DEFAULT;
else
	pmcdev->base_addr = slp_s0_addr - pmcdev->map->slp_s0_offset;

The values outputted from that driver are then just read from that address + an offset (0x13c for Skylake and Kabylake as far as I can tell, see SPT_PMC_SLP_S0_RES_COUNTER_OFFSET in the header file of the driver).

And given that value is effectively guessed I would be careful with trusting anything that driver outputs to be honest. But I also don't know if the surfaces change that memory address, or if they even can, so take everything I say with a grain of salt. But given that the kernel engineers made calculating it the default, it seems to be changeable.

I will try to modify my driver to output the calculated address. But since we don't know if it changed it is potentially useless.

I am still looking through the spec, so if I find something I will post it of course. (for example a way to get the PCM base address from the DSDT)

@StollD
Copy link

StollD commented Aug 24, 2019

I will try to modify my driver to output the calculated address. But since we don't know if it changed it is potentially useless.

Actually no, I am stupid. That address is read from ACPI and I posted the dump above. So 00000000FE00013C - 0x13c = 00000000FE000000 == 0xFE000000. So it is the default one, at least on SB2.

Of course it doesn't mean it is the same for SB1 as well but it definitly increases my confusion.

EDIT: But then, on the other hand, if both addresses are the same, both values in sysfs are backed by the same field. So if the address doesn't exist in LPIT for SB1, I doubt that the PMC driver would return anything sane, even with the correct base address.

Figuring this out might really bow down to suspending the surface overnight and comparing the battery consumtion, as stupid as it might sound.

@StollD
Copy link

StollD commented Aug 24, 2019

@kitakar5525 Have you tried using turbostat [1] to test if you can enter S0ix?

$ sudo turbostat -q -S -s GFX%rc6,Pkg%pc2,Pkg%pc8,Pkg%pc9,CPU%LPI,SYS%LPI

run this and leave it running. It will output a new measurement every 5 seconds. While the command is still running, suspend, then resume. If the SYS%LPI column shows a non-zero value, you entered S0ix, as per intels guide. [2]

The commands that were used in the guide (combining turbostat and the command that puts the computer to sleep) didn't work for me, but doing what I wrote above works.

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 24, 2019

Yes, I tried turbostat but it seems that it relies on low_power_idle_system_residency_us [1] and silently ignores SYS%LPI column.

$ sudo turbostat -q -S -s GFX%rc6,Pkg%pc2,Pkg%pc8,Pkg%pc9,CPU%LPI,SYS%LPI
GFX%rc6    Pkg%pc2    Pkg%pc8    Pkg%pc9    CPU%LPI
[...]
# after about 1 min suspend
100.37    0.93    0.16    0.01    91.81
[...]

I also don't calculate the consumption regularly, but there are two samples for recent results.

On my SB1:

  • about 11 hours suspend: about 1.8 %/h
  • about 30 min suspend: about 2.7 %/h

I feel it tend to get lower consumption per hour if it sleeps longer.

You can use upower to show current (tablet+base combined) battery percentage

upower -i /org/freedesktop/UPower/devices/DisplayDevice

@StollD
Copy link

StollD commented Aug 25, 2019

Yes, I tried turbostat but it seems that it relies on low_power_idle_system_residency_us [1] and silently ignores SYS%LPI column.

Ah, damm, I missed that when checking the source code.

I also don't calculate the consumption regularly, but there are two samples for recent results.

On my SB1:

  • about 11 hours suspend: about 1.8 %/h

  • about 30 min suspend: about 2.7 %/h

I feel it tend to get lower consumption per hour if it sleeps longer.

After suspending for 12 hours in S0ix my SB2 lost exactly 12% of battery, so 1%/h. Still working on getting numbers without S0ix. But it doesn't seem too far off from your results.

@kitakar5525
Copy link
Author

Still working on getting numbers without S0ix

OK. Thank you for testing.

@StollD
Copy link

StollD commented Aug 25, 2019

Suspended again for 10 hours, without S0ix, and it lost 20% of battery life in that time. So 2%/h without S0ix. The CPU still entered PC10 though.

Given this result it doesn't sound like my idea that the SB1 enters S0ix without exposing it properly is of much value, sorry.

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 26, 2019

Given this result it doesn't sound like my idea that the SB1 enters S0ix without exposing it properly is of much value, sorry.

I see…

Another result on Linux 5.2.9

  • about 8.6 hours suspend: about 1.6 %/h

I will collect data on Windows using the SoC Watch and sleepstudy (powercfg /sleepstudy) tonight.


1.6 %/h battery drain sounds not so bad, but I'm just curious about achieving S0ix : )

@kitakar5525
Copy link
Author

kitakar5525 commented Aug 27, 2019

For those who want to use SoC Watch

You can download SoC Watch as a package from

Choose Energy Analysis for Windows and Linux.

For Linux, standalone version is also available. If you prefer this version, choose
Intel® SoC Watch Collectors for Energy Analysis

Optionally, you can use Intel® VTune™ Amplifier for visualized result.

Usage guide

On Windows

If you want to use -z option to automatically enter Connected Standby, retrieve WDTF from Windows\Program Files (x86)\Windows Kits\10\Testing\Runtimes and install it.
Be careful, it will disable some features, like Lock Screen. Uninstall it when you ’re done.

EDIT: 2019-11-05 You may need to disable Secure Boot to use -f connected-standby.

On Linux

You need to patch the driver source (just one line) to use on Linux 5.2.

0001-socwatch_driver-update-to-build-on-5.2.patch

From e32a64ed67094fcf19277b2eda1888e9c80246a3 Mon Sep 17 00:00:00 2001
From: kitakar5525 <[email protected]>
Date: Sat, 24 Aug 2019 01:53:02 +0900
Subject: [PATCH] socwatch_driver: update to build on 5.2

---
 src/sw_trace_notifier_provider.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sw_trace_notifier_provider.c b/src/sw_trace_notifier_provider.c
index 8c78790..0962e27 100644
--- a/src/sw_trace_notifier_provider.c
+++ b/src/sw_trace_notifier_provider.c
@@ -1428,7 +1428,7 @@ static int sw_probe_cpufreq_notifier_i(struct notifier_block *block, unsigned lo
 {
     struct cpufreq_freqs *freqs = data;
     static struct sw_trace_notifier_data *node = NULL;
-    int cpu = freqs->cpu;
+    int cpu = freqs->policy->cpu;
 
     if (state == CPUFREQ_PRECHANGE) {
         pw_pr_debug("CPU %d reports a CPUFREQ_PRECHANGE for target CPU %d at TSC = %llu\n", RAW_CPU(), cpu, sw_timestamp());
-- 
2.23.0

</p>
</details>

kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Apr 23, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Apr 23, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Apr 23, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
kitakar5525 added a commit to linux-surface/kernel that referenced this issue Apr 24, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
kitakar5525 added a commit to linux-surface/kernel that referenced this issue Apr 24, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
StollD pushed a commit to linux-surface/kernel that referenced this issue Jun 1, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Aug 3, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
@yesrod
Copy link

yesrod commented Aug 28, 2020

Apologies if this is the wrong place, but this thread was helpful to me in figuring out why my Surface Go wasn't hitting s0ix, so I'm leaving my notes here.

This is with a Surface Go 1 with 8GB RAM and 128GB storage.

I'm currently running the Ubuntu 20.04 OEM kernel series (5.6.0-1021-oem).
The system wasn't getting to s0ix, so I was losing 25% to 30% of battery every day the system was suspended.

I saw in this issue that some people had success with turning off Bluetooth or WiFi in the BIOS.
I tried turning those off, but that didn't resolve the issue.

I went through turning each device off one at a time in UEFI settings.
I found that disabling the SD card reader let the system enter s0ix as expected.

The SD card reader doesn't work anyway - I get a lot of these messages with a card inserted.
This may be related to why the SD card keeps the machine out of s0ix.
(Edit: This may also be a dead SD card; I grabbed the first one I saw. I will test again with a known good card.)

[  424.648097] mmc0: card never left busy state
[  424.648108] mmc0: error -110 whilst initialising SD card

Either way, since the SD card reader doesn't work, and I don't need it currently, this is a good workaround.

Would this be good information to add to the Surface Go page on the wiki? https://github.com/linux-surface/linux-surface/wiki/Surface-Go

@kitakar5525
Copy link
Author

The SD card reader doesn't work anyway - I get a lot of these messages with a card inserted.
This may be related to why the SD card keeps the machine out of s0ix.

Hmm. If I recall correctly, I've never heard that SD card reader doesn't work.

(Edit: This may also be a dead SD card; I grabbed the first one I saw. I will test again with a known good card.)

Waiting for the result.

qzed pushed a commit to linux-surface/kernel that referenced this issue Aug 28, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Aug 28, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Aug 28, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Aug 28, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
@yesrod
Copy link

yesrod commented Aug 28, 2020

Waiting for the result.

Yep, it was a dead SD card; a known good card mounts fine. The SD card reader still prevents the system from reaching s0ix, with or without a card present.

I think I'm actually going to switch to using hibernate. The latest update for the linux-surface kernel (5.8.5) is supposed to fix the keyboard going unresponsive after resuming from hibernate, which was the main reason I wasn't using that.

(Edit: It was actually mem sleep instead of s2idle that was messing with the keyboard, while I was testing things a while ago. Hibernate works fine after I resized the swap partition to allow for it, so I'm using suspend-then-hibernate to hopefully save some power when the Surface is unused for a day or two.)

But, if someone didn't want to use hibernate, switching off the SD card reader in the BIOS will allow a Surface Go 1 to reach s0ix.

@qzed
Copy link
Collaborator

qzed commented Aug 28, 2020

I think I'm actually going to switch to using hibernate. The latest update for the linux-surface kernel (5.8.5) is supposed to fix the keyboard going unresponsive after resuming from hibernate, which was the main reason I wasn't using that.

That's probably not going to work on the Go. The change only concerns System Aggregator Module (SAM) devices, which the Go does (as far as I know) not have.

I don't have a clue how the keyboard of the Go is connected, but it's not via SAM. So it's basically a different issue.

@kitakar5525
Copy link
Author

Would this be good information to add to the Surface Go page on the wiki? https://github.com/linux-surface/linux-surface/wiki/Surface-Go

The SD card reader still prevents the system from reaching s0ix, with or without a card present.

If the SD card reader still breaks S0ix on s2idle, this info helps people having S0ix issue on SGO. So, feel free to add this info to the wiki. If someone knows more, they would improve the wiki anyway :)

@yesrod
Copy link

yesrod commented Aug 31, 2020

Thanks, I added a brief note in the wiki.

kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Sep 16, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR linux-surface#44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Sep 22, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
(cherry picked from commit c650ba4)
Signed-off-by: Tsuchiya Yuto <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Oct 1, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
(cherry picked from commit c650ba4)
Signed-off-by: Tsuchiya Yuto <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Oct 6, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
(cherry picked from commit c650ba4)
Signed-off-by: Tsuchiya Yuto <[email protected]>
kitakar5525 added a commit to kitakar5525/linux-kernel that referenced this issue Oct 12, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Oct 16, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Oct 16, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Oct 16, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>

(cherry picked from commit 028e378
from PR #44)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
qzed pushed a commit to linux-surface/kernel that referenced this issue Oct 17, 2020
On Windows, it seems that wifi parent bridge will not enter D3 state
(stay on D0 state) [1]. And on Linux, disabling the D3 state for the
bridge fixes driver crashing after suspend.

This commit disables the parent bridge D3 state on driver initialization
to fix driver crashing after suspend.

NOTE_1: The driver does not crash on LTS 4.4 series but does crash on
        LTS 4.9 series. Maybe commit 9d26d3a ("PCI: Put PCIe ports
        into D3 during suspend") changed the bridge D-state behavior.

NOTE_2: As a side effect, it reports parent bridge is in D3hot. I'm not
        sure why.

        acpi device:4b: Cannot transition to power state D0 for parent in D3hot

        Power state of the parent bridge on SB1 before this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D0
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

        Power state of the parent bridge on SB1 after this commit:

        $ grep -H . /sys/bus/pci/devices/0000:00:1d.3/firmware_node/{power_state,real_power_state}
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/power_state:D3hot
        /sys/bus/pci/devices/0000:00:1d.3/firmware_node/real_power_state:D3hot

NOTE_3: This change is needed for SP4 and later generations that use
        mwifiex (i.e. SP4/SP5/SP6, SB1/SB2 and SL1/SL2). Not needed for
        Surface 3 but safe to apply as this change doesn't break S0ix.
        Not sure if needed for SP1/SP2 and SP3. Anyway, I think applying
        this change to all the devices may be safe regarding S0ix because
        Surface 3 can achieve S0ix anyway even when this patch applied.
        So, let's apply this change for all the devices for now.

[1] jakeday/linux-surface#554 (comment)
Signed-off-by: Tsuchiya Yuto (kitakar5525) <[email protected]>
@borchardt
Copy link

The SD card reader doesn't work anyway - I get a lot of these messages with a card inserted.
This may be related to why the SD card keeps the machine out of s0ix.

Hmm. If I recall correctly, I've never heard that SD card reader doesn't work.

(Edit: This may also be a dead SD card; I grabbed the first one I saw. I will test again with a known good card.)

Waiting for the result.

Waiting for the result.

Yep, it was a dead SD card; a known good card mounts fine. The SD card reader still prevents the system from reaching s0ix, with or without a card present.

I think I'm actually going to switch to using hibernate. The latest update for the linux-surface kernel (5.8.5) is supposed to fix the keyboard going unresponsive after resuming from hibernate, which was the main reason I wasn't using that.

(Edit: It was actually mem sleep instead of s2idle that was messing with the keyboard, while I was testing things a while ago. Hibernate works fine after I resized the swap partition to allow for it, so I'm using suspend-then-hibernate to hopefully save some power when the Surface is unused for a day or two.)

But, if someone didn't want to use hibernate, switching off the SD card reader in the BIOS will allow a Surface Go 1 to reach s0ix.

Wanted to add a comment that I am seeing this error (mmc0: error -110 whilst initialising SD card) with a good card (works fine on same machine when booted into Windows) on a Surface Go 2. I'm on kernel 5.9.10-arch1-1-surface, and the card I'm using is a Micro Center 512GB A1 MicroSDXC.

It seems like this may be an upstream Realtek driver or kernel bug: https://bbs.archlinux.org/viewtopic.php?id=244223 and https://bugzilla.kernel.org/show_bug.cgi?id=202473 detail similar issues.

@ShapeShifter499
Copy link

ShapeShifter499 commented Dec 16, 2020

Apologies if this is the wrong place, but this thread was helpful to me in figuring out why my Surface Go wasn't hitting s0ix, so I'm leaving my notes here.

This is with a Surface Go 1 with 8GB RAM and 128GB storage.

I'm currently running the Ubuntu 20.04 OEM kernel series (5.6.0-1021-oem).
The system wasn't getting to s0ix, so I was losing 25% to 30% of battery every day the system was suspended.

I saw in this issue that some people had success with turning off Bluetooth or WiFi in the BIOS.
I tried turning those off, but that didn't resolve the issue.

I went through turning each device off one at a time in UEFI settings.
I found that disabling the SD card reader let the system enter s0ix as expected.

The SD card reader doesn't work anyway - I get a lot of these messages with a card inserted.
This may be related to why the SD card keeps the machine out of s0ix.
(Edit: This may also be a dead SD card; I grabbed the first one I saw. I will test again with a known good card.)

[  424.648097] mmc0: card never left busy state
[  424.648108] mmc0: error -110 whilst initialising SD card

Either way, since the SD card reader doesn't work, and I don't need it currently, this is a good workaround.

Would this be good information to add to the Surface Go page on the wiki? https://github.com/linux-surface/linux-surface/wiki/Surface-Go

@yesrod Your comment is linked to at https://github.com/linux-surface/linux-surface/wiki/Surface-Go

So because of this I'm wondering, are you still seeing these issues on newer kernels?

I have a Surface Go 1 4GB RAM 64GB Storage model running Arch Linux with Gnome 3.38.2 under Wayland, Linux Kernel 5.9.14-arch1-1-surface. The kernel is from the Arch Linux repository that the https://github.com/linux-surface project has running.

Gnome about panel in Gnome settings reports the following specs

RAM: 3.7 GiB
CPU: Intel® Pentium(R) CPU 4415Y @ 1.60GHz × 4
GPU: Mesa Intel® HD Graphics 615 (KBL GT2)

I do not see any issues with the SD card. In fact I have my entire /home partition on a LUKS encrypted F2FS formatted 400GB Sandisk Micro SD card. Suspend also seems to work here after setting up the correct Wi-FI and Bluetooth firmware for the ath10k chip by removing both

/usr/lib/firmware/ath10k/QCA6174/hw2.1/board-2.bin
/usr/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin

And replacing

/usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
/usr/lib/firmware/ath10k/QCA6174/hw3.0/board.bin

with the correct board.bin and adding options ath10k_core skip_otp=y to /etc/modprobe.d/ath10k.conf

I do see this in my dmesg

[ 5611.993576] PM: suspend entry (s2idle)
[ 5612.038621] Filesystems sync: 0.045 seconds
[ 5612.149089] Freezing user space processes ... (elapsed 0.006 seconds) done.
[ 5612.155771] OOM killer disabled.
[ 5612.155773] Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
[ 5612.157880] printk: Suspending console(s) (use no_console_suspend to debug)
[ 5622.257015] usbhid 1-7:1.3: suspend error -5
[ 5632.283684] usbhid 1-7:1.0: suspend error -5
[ 5632.341349] ACPI: EC: interrupt blocked
[ 8682.026024] ACPI: EC: interrupt unblocked
[ 8682.626501] OOM killer enabled.
[ 8682.626503] Restarting tasks ... 
[ 8682.634951] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_component_ops [i915])
[ 8682.638096] done.
[ 8682.645458] PM: suspend exit

Despite the usbhid lines complaining about a "suspend error -5" I see that suspend does work.
'sudo cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us'
gives me a number that increases in value after each suspend.

I should add that my Surface keyboard cover, cobalt blue version, seems to work fine after each suspend.

I even have hibernation working to a LUKS encrypted swap partition on the internal eMMC.

I no longer have any Windows installed to my Surface Go. When there are firmware updates I boot to a 128GB USB Thumb drive running a copy of "Windows To Go" I set up with rufus, which seems to run indistinguishably from a standard copy of Windows 10, it's only running slower as I suspect due to running off a slower USB drive.

If anyone wants me to post some more logs from my setup let me know.

@ShapeShifter499
Copy link

I seem to have been able to get deep sleep working on the Surface Go 1 I have.

What I see in my dmesg after adding 'mem_sleep_default=deep' to my kernel parameters and suspending.

[  327.189145] PM: suspend entry (deep)
[  327.283364] Filesystems sync: 0.094 seconds
[  327.405704] Freezing user space processes ... (elapsed 0.004 seconds) done.
[  327.410663] OOM killer disabled.
[  327.410664] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[  327.412252] printk: Suspending console(s) (use no_console_suspend to debug)
[  327.564260] ACPI: EC: interrupt blocked
[  327.604406] ACPI: Preparing to enter system sleep state S3
[  327.605499] ACPI: EC: event blocked
[  327.605501] ACPI: EC: EC stopped
[  327.605503] PM: Saving platform NVS memory
[  327.605636] Disabling non-boot CPUs ...
[  327.608256] smpboot: CPU 1 is now offline
[  327.611984] smpboot: CPU 2 is now offline
[  327.614631] smpboot: CPU 3 is now offline
[  327.618171] ACPI: Low-level resume complete
[  327.618282] ACPI: EC: EC started
[  327.618283] PM: Restoring platform NVS memory
[  327.621792] smpboot: Scheduler frequency invariance went wobbly, disabling!
[  327.622001] Enabling non-boot CPUs ...
[  327.622065] x86: Booting SMP configuration:
[  327.622066] smpboot: Booting Node 0 Processor 1 APIC 0x2
[  327.625729] CPU1 is up
[  327.625772] smpboot: Booting Node 0 Processor 2 APIC 0x1
[  327.626806] CPU2 is up
[  327.626853] smpboot: Booting Node 0 Processor 3 APIC 0x3
[  327.627698] CPU3 is up
[  327.629804] ACPI: Waking up from system sleep state S3
[  327.638945] ACPI: EC: interrupt unblocked
[  327.997972] ACPI: EC: event unblocked
[  328.240700] usb 1-5: reset full-speed USB device number 3 using xhci_hcd
[  328.388341] acpi LNXPOWER:00: Turning OFF
[  328.389131] OOM killer enabled.
[  328.389133] Restarting tasks ... 
[  328.398012] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_component_ops [i915])
[  328.398428] done.
[  328.401387] PM: suspend exit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants