Framework 13 Intel Core Ultra Series 1 155H Hibernation Increases Overall Power Consumption

Hi all,

I am running Linux (Nixos) on my Framework 13 with an Intel Ultra 7 155H board. This works mostly perfect. However, I am facing some issues after my system was in hibernation. Are there any people around here also using Linux and hibernation on the Intel Core Ultra Series 1 boards?

My system enters hibernation with no problems. At first glance, it also restores correctly from hibernation. At a second glance, however, the system does consume noticeably more power and also fails to sleep after it was hibernated. From a power consumption point of view, it looks like this (measured with powertop):

  1. System newly booted and Gnome desktop at idle: 3.8 .. 4.5 W
  2. Hibernate and resume from hibernate
  3. Again at Gnome desktop in idle: 5.7 .. 7 W

Once I reboot, everything is OK again.

Instead of powertop I can perform the same measurement with a simple AC Wattmeter and get basically the same results. The AC Wattmeter also revealed that the whole system (after being hibernated at least once) no longer goes into any deeper sleep, as the power consumption is about 4W in sleep (suspend). Prior to hibernation, it was about 1.0W.

The effect is 100% reproducible. So far I have tested this with Nixos 24.11 (Kernel 6.12, 6.13 and 6.14), and the result is always the same.

I ran S0ixSelfTestTool before and after hibernation, and the results are significantly different. Here are the most prominent parts of the S0ixSelfTestTool logs. Complete logs are attached below.

Pre-Hibernation:

CPU Core C7 residency after S2idle is: 36.52
CPU Package C-state 2 residency after S2idle is: 1.04
CPU Package C-state 3 residency after S2idle is: 0.00
CPU Package C-state 8 residency after S2idle is: 0.01
CPU Package C-state 10 residency after S2idle is: 93.77
S0ix residency after S2idle is: 93.79

S0ix substate after S2idle:
  S0i2.0 S0i2.1 S0i2.2

S0ix substate residency after S2idle:
  1875762322 99472071517 0

S0ix substates residency delta value: S0i2.0 0

S0ix substates residency delta value: S0i2.1 14057481

S0ix substates residency delta value: S0i2.2 0

Your system only get shallower S0ix substate residency: S0i2.199472071517

Need to debug why not deeper substate: S0i2.2

Post-Hibernation:

CPU Core C7 residency after S2idle is: 36.27
CPU Package C-state 2 residency after S2idle is: 94.11
CPU Package C-state 3 residency after S2idle is: 0.00
CPU Package C-state 8 residency after S2idle is: 0.00
CPU Package C-state 10 residency after S2idle is: 0.00
S0ix residency after S2idle is: 0.00

Your system achieved PC2 residency: 94.11, but no PC8 residency during S2idle: 0.00

...

Checking PCI Devices tree diagram:
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Arc Graphics]
           +-04.0  Intel Corporation Meteor Lake-P Dynamic Tuning Technology
           +-07.0-[01-2a]--
           +-07.1-[2b-54]--
           +-07.2-[55-7e]--
           +-07.3-[7f-a8]--
           +-08.0  Intel Corporation Meteor Lake-P Gaussian & Neural-Network Accelerator
           +-0a.0  Intel Corporation Meteor Lake-P Platform Monitoring Technology
           +-0b.0  Intel Corporation Meteor Lake NPU
           +-0d.0  Intel Corporation Meteor Lake-P Thunderbolt 4 USB Controller
           +-0d.2  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #0
           +-0d.3  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #1
           +-14.0  Intel Corporation Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller
           +-14.2  Intel Corporation Device 7e7f
           +-15.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #0
           +-15.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #1
           +-16.0  Intel Corporation Meteor Lake-P CSME HECI #1
           +-19.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #4
           +-19.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #5
           +-1c.0-[a9]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
           +-1c.5-[aa]----00.0  Intel Corporation Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak]
           +-1f.0  Intel Corporation Device 7e02
           +-1f.3  Intel Corporation Meteor Lake-P HD Audio Controller
           +-1f.4  Intel Corporation Meteor Lake-P SMBus Controller
           \-1f.5  Intel Corporation Meteor Lake-P SPI Controller

The pcieport 0000:00:1c.0 ASPM enable status:
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes, LnkDisable- CommClk+

Pcieport is not in D3cold:
0000:00:1c.0

Pcieport is not in D3cold:
0000:00:1c.5

This tells me that there is something going wrong with the power state management of some PCIe components. Due to the fact that this happens only after hibernation, I assume this is more of a SW than an HW issue. But keep in mind, I have no expertise in HW driver development on PC hardware, so I might as well be wrong.

The full pre-hibernation log also reveals that there might be some potential to lower the standby/suspend power consumption, but I guess that’s a different story.

Besides the reported issue, hibernation seems to work fine. Even suspend-then-hibernate otherwise just does what it says.

Thanks

HW Details:

  • Intel Ultra 7 155H
  • 64 GB RAM (Kingston Fury DDR5 5600 CL-40-40-40 1.1V, (2x32GB))
  • 2TB SSD (Samsung 990 PRO, PCIe4.0 NVMe M.2)
  • BIOS Version 03.04

Here is the complete pre-hibernation log from S0ixSelfTestTool:


---Check S2idle path S0ix Residency---:

The system OS Kernel version is:
Linux calcifer 6.12.26 #1-NixOS SMP PREEMPT_DYNAMIC Fri May  2 05:59:33 UTC 2025 x86_64 GNU/Linux

---Check whether your system supports S0ix or not---:

Low Power S0 Idle is:1
Your system supports low power S0 idle capability.



---Check whether intel_pmc_core sysfs files exit---:

The pmc_core debug sysfs files are OK on your system.



---Judge PC10, S0ix residency available status---:

Test system supports S0ix.y substate

S0ix substate before S2idle:
  S0i2.0 S0i2.1 S0i2.2

S0ix substate residency before S2idle:
  1875762322 99458014036 0

Turbostat output: 
14.997263 sec
CPU%c1	CPU%c6	CPU%c7	Pkg%pc2	Pkg%pc3	Pkg%pc6	Pkg%pc8	Pk%pc10	SYS%LPI
1.49	61.80	36.52	1.04	0.00	0.07	0.01	93.77	93.79
1.44	98.12	0.00
0.96	98.69	0.00
0.43	99.21	0.00
1.18	98.40	0.00
0.81	98.75	0.00
0.68	98.97	0.00
0.41	99.23	0.00
0.37	99.31	0.00
2.74	0.02	96.72
2.74
2.77	0.01	96.52
2.77
2.19	0.06	97.22	1.04	0.00	0.07	0.01	93.77	93.79
2.19
1.71	0.04	97.83
1.71
1.29	0.02	98.29
1.29
1.85	0.01	97.71
1.85
0.67	99.05	0.00
0.85	98.86	0.00

CPU Core C7 residency after S2idle is: 36.52
CPU Package C-state 2 residency after S2idle is: 1.04
CPU Package C-state 3 residency after S2idle is: 0.00
CPU Package C-state 8 residency after S2idle is: 0.01
CPU Package C-state 10 residency after S2idle is: 93.77
S0ix residency after S2idle is: 93.79

S0ix substate after S2idle:
  S0i2.0 S0i2.1 S0i2.2

S0ix substate residency after S2idle:
  1875762322 99472071517 0

S0ix substates residency delta value: S0i2.0 0

S0ix substates residency delta value: S0i2.1 14057481

S0ix substates residency delta value: S0i2.2 0

e[31mYour system only get shallower S0ix substate residency:e[0m e[31mS0i2.1e[0m e[31m99472071517e[0m

Need to debug why not deeper substate: S0i2.2

---Begin S0ix Substate Debug by substate_requirements---:

Clear lpm_latch_mode is Done

Set S0i2.1 to lpm_latch_mode is Done

Need to run once S2idle, please wait for 15 seconds...


substate_requirements file shows:

                       Element      S0i2.2   Live Status 
pmc0:               AON2_OFF_STS    Required               
pmc0:               AON3_OFF_STS    Required               
pmc0:               AON4_OFF_STS    Required               
pmc0:               AON5_OFF_STS    Required               
pmc0:           XTAL_LVM_OFF_STS    Required               
pmc0:       MPFPW1_0_PLL_OFF_STS    Required           Yes 
pmc0:       MPFPW1_1_PLL_OFF_STS    Required           Yes 
pmc0:           USB3_PLL_OFF_STS    Required           Yes 
pmc0:           AON3_SPL_OFF_STS    Required               
pmc0:       MPFPW2_0_PLL_OFF_STS    Required           Yes 
pmc0:       MPFPW3_0_PLL_OFF_STS    Required           Yes 
pmc0:          XTAL_AGGR_OFF_STS    Required               
pmc0:         FILTER_PLL_OFF_STS    Required               
pmc0:         FABRIC_PLL_OFF_STS    Required               
pmc0:            SOC_PLL_OFF_STS    Required               
pmc0:         PCIFAB_PLL_OFF_STS    Required               
pmc0:            REF_PLL_OFF_STS    Required           Yes 
pmc0:            IMG_PLL_OFF_STS    Required               
pmc0:           XHCI_PGD0_PG_STS    Required               
pmc0:            SPA_PGD0_PG_STS    Required           Yes 
pmc0:            SPB_PGD0_PG_STS    Required           Yes 
pmc0:            SPC_PGD0_PG_STS    Required           Yes 
pmc0:            GBE_PGD0_PG_STS    Required           Yes 
pmc0:           SATA_PGD0_PG_STS    Required           Yes 
pmc0:          PSF13_PGD0_PG_STS    Required               
pmc0:        SOC_D2D_PGD3_PG_STS    Required               
pmc0:            ESE_PGD0_PG_STS    Required           Yes 
pmc0:           LPSS_PGD0_PG_STS    Required               
pmc0:            P2S_PGD0_PG_STS    Required           Yes 
pmc0:           SBRG_PGD0_PG_STS    Required               
pmc0:           SBR8_PGD0_PG_STS    Required               
pmc0:        SOC_D2D_PGD2_PG_STS    Required               
pmc0:           XDCI_PGD0_PG_STS    Required           Yes 
pmc0:            CSE_PGD0_PG_STS    Required           Yes 
pmc0:          KVMCC_PGD0_PG_STS    Required           Yes 
pmc0:            PMT_PGD0_PG_STS    Required           Yes 
pmc0:          CLINK_PGD0_PG_STS    Required           Yes 
pmc0:           PTIO_PGD0_PG_STS    Required           Yes 
pmc0:          USBR0_PGD0_PG_STS    Required           Yes 
pmc0:         SUSRAM_PGD0_PG_STS    Required           Yes 
pmc0:           SMT1_PGD0_PG_STS    Required           Yes 
pmc0:           SMS2_PGD0_PG_STS    Required           Yes 
pmc0:           SMS1_PGD0_PG_STS    Required           Yes 
pmc0:        CSMEPSF_PGD0_PG_STS    Required           Yes 
pmc0:           SBR0_PGD0_PG_STS    Required               
pmc0:           SBR1_PGD0_PG_STS    Required               
pmc0:           SBR2_PGD0_PG_STS    Required               
pmc0:           SBR3_PGD0_PG_STS    Required               
pmc0:           SBR5_PGD0_PG_STS    Required               
pmc0:          UFSX2_PGD0_PG_STS    Required           Yes 
pmc0:           SBR6_PGD0_PG_STS    Required           Yes 
pmc0:           SBR7_PGD0_PG_STS    Required               
pmc0:       FUSEGPSB_PGD0_PG_STS    Required               
pmc0:           PSF6_PGD0_PG_STS    Required               
pmc0:           PSF7_PGD0_PG_STS    Required               
pmc0:           PSF8_PGD0_PG_STS    Required               
pmc0:        SOC_D2D_PGD1_PG_STS    Required           Yes 
pmc0:            TAM_PGD0_PG_STS    Required           Yes 
pmc0:         TBTLSX_PGD0_PG_STS    Required           Yes 
pmc0:           THC0_PGD0_PG_STS    Required           Yes 
pmc0:           THC1_PGD0_PG_STS    Required           Yes 
pmc0:            GNA_PGD0_PG_STS    Required           Yes 
pmc0:       FUSEPMSB_PGD0_PG_STS    Required               
pmc0:                LPSS_D3_STS    Required               
pmc0:                XDCI_D3_STS    Required           Yes 
pmc0:                XHCI_D3_STS    Required               
pmc0:                SATA_D3_STS    Required           Yes 
pmc0:               UFSX2_D3_STS    Required           Yes 
pmc0:                THC0_D3_STS    Required           Yes 
pmc0:                THC1_D3_STS    Required           Yes 
pmc0:            CPU_C10_REQ_STS    Required               
pmc0:           PNDE_MET_REQ_STS    Required           Yes 
pmc0: PMC_CLK_THROTTLE_EN_REQ_STS    Required           Yes 
pmc0:            VNN_SOC_REQ_STS    Required           Yes 
pmc0: IOE_COND_MET_S02I2_0_REQ_STS    Required               
pmc0: IOE_COND_MET_S02I2_1_REQ_STS    Required               
pmc0: IOE_COND_MET_S02I2_2_REQ_STS    Required               
pmc0:        PLT_GREATER_REQ_STS    Required           Yes 
pmc0:    PMC_IDLE_FB_OCP_REQ_STS    Required               
pmc0:     PM_SYNC_STATES_REQ_STS    Required               
pmc0:                 EA_REQ_STS    Required               
pmc0:          BRK_EV_EN_REQ_STS    Required           Yes 
pmc0:       AUTO_DEMO_EN_REQ_STS    Required           Yes 
pmc0:       ITSS_CLK_SRC_REQ_STS    Required               
pmc0:           ARC_IDLE_REQ_STS    Required               
pmc0:      UXD_CONNECTED_REQ_STS    Required           Yes 
pmc0: ARC_INTERRUPT_WAKE_REQ_STS    Required           Yes 
pmc0:          PRE_WAKE0_REQ_STS    Required           Yes 
pmc0:          PRE_WAKE1_REQ_STS    Required           Yes 
pmc0:       PRE_WAKE2_EN_REQ_STS    Required           Yes 
                       Element      S0i2.2   Live Status 
pmc1:               AON2_OFF_STS    Required               
pmc1:               AON3_OFF_STS    Required               
pmc1:               AON4_OFF_STS    Required               
pmc1:               AON5_OFF_STS    Required           Yes 
pmc1:            TBT_PLL_OFF_STS    Required           Yes 
pmc1:            TMU_PLL_OFF_STS    Required               
pmc1:           BCLK_PLL_OFF_STS    Required               
pmc1:            D2D_PLL_OFF_STS    Required               
pmc1:           AON3_SPL_OFF_STS    Required               
pmc1:       MPFPW4_0_PLL_OFF_STS    Required           Yes 
pmc1:       MPFPW5_0_PLL_OFF_STS    Required           Yes 
pmc1:        G5FPW_0_PLL_OFF_STS    Required           Yes 
pmc1:        G5FPW_1_PLL_OFF_STS    Required           Yes 
pmc1:          XTAL_AGGR_OFF_STS    Required               
pmc1:         FABRIC_PLL_OFF_STS    Required               
pmc1:            SOC_PLL_OFF_STS    Required               
pmc1:            REF_PLL_OFF_STS    Required           Yes 
pmc1:        IOE_D2D_PGD3_PG_STS    Required               
pmc1:            SPE_PGD0_PG_STS    Required           Yes 
pmc1:            SPD_PGD0_PG_STS    Required           Yes 
pmc1:            P2S_PGD0_PG_STS    Required           Yes 
pmc1:           PSF5_PGD0_PG_STS    Required               
pmc1:          PSF10_PGD0_PG_STS    Required               
pmc1:           PSF9_PGD0_PG_STS    Required               
pmc1:           SBR0_PGD0_PG_STS    Required               
pmc1:           SBR1_PGD0_PG_STS    Required               
pmc1:           SBR2_PGD0_PG_STS    Required               
pmc1:           SBR3_PGD0_PG_STS    Required               
pmc1:           SBR4_PGD0_PG_STS    Required               
pmc1:           SBR5_PGD0_PG_STS    Required               
pmc1:        GBETSN1_PGD0_PG_STS    Required           Yes 
pmc1:            TAM_PGD0_PG_STS    Required           Yes 
pmc1:         GBETSN_PGD0_PG_STS    Required           Yes 
pmc1:        IOE_D2D_PGD2_PG_STS    Required               
pmc1:        IOE_D2D_PGD1_PG_STS    Required           Yes 
pmc1:            SPF_PGD0_PG_STS    Required           Yes 
pmc1:             GBETSN1_D3_STS    Required           Yes 
pmc1:              GBETSN_D3_STS    Required           Yes 
pmc1:            CPU_C10_REQ_STS    Required               
pmc1:           PNDE_MET_REQ_STS    Required           Yes 
pmc1: PMC_CLK_THROTTLE_EN_REQ_STS    Required           Yes 
pmc1:            VNN_SOC_REQ_STS    Required               
pmc1:        PLT_GREATER_REQ_STS    Required           Yes 
pmc1:    PMC_IDLE_FB_OCP_REQ_STS    Required               
pmc1:     PM_SYNC_STATES_REQ_STS    Required               
pmc1:                 EA_REQ_STS    Required               
pmc1:          BRK_EV_EN_REQ_STS    Required           Yes 
pmc1:       AUTO_DEMO_EN_REQ_STS    Required           Yes 
pmc1:           ARC_IDLE_REQ_STS    Required               
pmc1: ARC_INTERRUPT_WAKE_REQ_STS    Required           Yes 
pmc1:          PRE_WAKE0_REQ_STS    Required           Yes 
pmc1:          PRE_WAKE1_REQ_STS    Required           Yes 
pmc1:       PRE_WAKE2_EN_REQ_STS    Required           Yes 

Below are the deeper S0ix substate required IPs did not show YES:

e[31m pmc0:               AON2_OFF_STS    Required               
pmc0:               AON3_OFF_STS    Required               
pmc0:               AON4_OFF_STS    Required               
pmc0:               AON5_OFF_STS    Required               
pmc0:           XTAL_LVM_OFF_STS    Required               
pmc0:           AON3_SPL_OFF_STS    Required               
pmc0:          XTAL_AGGR_OFF_STS    Required               
pmc0:         FILTER_PLL_OFF_STS    Required               
pmc0:         FABRIC_PLL_OFF_STS    Required               
pmc0:            SOC_PLL_OFF_STS    Required               
pmc0:         PCIFAB_PLL_OFF_STS    Required               
pmc0:            IMG_PLL_OFF_STS    Required               
pmc0:           XHCI_PGD0_PG_STS    Required               
pmc0:          PSF13_PGD0_PG_STS    Required               
pmc0:        SOC_D2D_PGD3_PG_STS    Required               
pmc0:           LPSS_PGD0_PG_STS    Required               
pmc0:           SBRG_PGD0_PG_STS    Required               
pmc0:           SBR8_PGD0_PG_STS    Required               
pmc0:        SOC_D2D_PGD2_PG_STS    Required               
pmc0:           SBR0_PGD0_PG_STS    Required               
pmc0:           SBR1_PGD0_PG_STS    Required               
pmc0:           SBR2_PGD0_PG_STS    Required               
pmc0:           SBR3_PGD0_PG_STS    Required               
pmc0:           SBR5_PGD0_PG_STS    Required               
pmc0:           SBR7_PGD0_PG_STS    Required               
pmc0:       FUSEGPSB_PGD0_PG_STS    Required               
pmc0:           PSF6_PGD0_PG_STS    Required               
pmc0:           PSF7_PGD0_PG_STS    Required               
pmc0:           PSF8_PGD0_PG_STS    Required               
pmc0:       FUSEPMSB_PGD0_PG_STS    Required               
pmc0:                LPSS_D3_STS    Required               
pmc0:                XHCI_D3_STS    Required               
pmc0:            CPU_C10_REQ_STS    Required               
pmc0: IOE_COND_MET_S02I2_0_REQ_STS    Required               
pmc0: IOE_COND_MET_S02I2_1_REQ_STS    Required               
pmc0: IOE_COND_MET_S02I2_2_REQ_STS    Required               
pmc0:    PMC_IDLE_FB_OCP_REQ_STS    Required               
pmc0:     PM_SYNC_STATES_REQ_STS    Required               
pmc0:                 EA_REQ_STS    Required               
pmc0:       ITSS_CLK_SRC_REQ_STS    Required               
pmc0:           ARC_IDLE_REQ_STS    Required               
pmc1:               AON2_OFF_STS    Required               
pmc1:               AON3_OFF_STS    Required               
pmc1:               AON4_OFF_STS    Required               
pmc1:            TMU_PLL_OFF_STS    Required               
pmc1:           BCLK_PLL_OFF_STS    Required               
pmc1:            D2D_PLL_OFF_STS    Required               
pmc1:           AON3_SPL_OFF_STS    Required               
pmc1:          XTAL_AGGR_OFF_STS    Required               
pmc1:         FABRIC_PLL_OFF_STS    Required               
pmc1:            SOC_PLL_OFF_STS    Required               
pmc1:        IOE_D2D_PGD3_PG_STS    Required               
pmc1:           PSF5_PGD0_PG_STS    Required               
pmc1:          PSF10_PGD0_PG_STS    Required               
pmc1:           PSF9_PGD0_PG_STS    Required               
pmc1:           SBR0_PGD0_PG_STS    Required               
pmc1:           SBR1_PGD0_PG_STS    Required               
pmc1:           SBR2_PGD0_PG_STS    Required               
pmc1:           SBR3_PGD0_PG_STS    Required               
pmc1:           SBR4_PGD0_PG_STS    Required               
pmc1:           SBR5_PGD0_PG_STS    Required               
pmc1:        IOE_D2D_PGD2_PG_STS    Required               
pmc1:        IOE_D2D_PGD1_PG_STS    Required               
pmc1:            CPU_C10_REQ_STS    Required               
pmc1:            VNN_SOC_REQ_STS    Required               
pmc1:    PMC_IDLE_FB_OCP_REQ_STS    Required               
pmc1:     PM_SYNC_STATES_REQ_STS    Required               
pmc1:                 EA_REQ_STS    Required               
pmc1:           ARC_IDLE_REQ_STS    Required                e[0m 


Please check the potential blockers


Here is the complete pre-hibernation log from S0ixSelfTestTool:


---Check S2idle path S0ix Residency---:

The system OS Kernel version is:
Linux calcifer 6.12.26 #1-NixOS SMP PREEMPT_DYNAMIC Fri May  2 05:59:33 UTC 2025 x86_64 GNU/Linux

---Check whether your system supports S0ix or not---:

Low Power S0 Idle is:1
Your system supports low power S0 idle capability.



---Check whether intel_pmc_core sysfs files exit---:

The pmc_core debug sysfs files are OK on your system.



---Judge PC10, S0ix residency available status---:

Test system supports S0ix.y substate

S0ix substate before S2idle:
  S0i2.0 S0i2.1 S0i2.2

S0ix substate residency before S2idle:
  0 0 0

Turbostat output: 
14.550891 sec
CPU%c1	CPU%c6	CPU%c7	Pkg%pc2	Pkg%pc3	Pkg%pc6	Pkg%pc8	Pk%pc10	SYS%LPI
1.87	61.67	36.27	94.11	0.00	0.00	0.00	0.00	0.00
0.93	98.61	0.00
1.10	98.48	0.00
0.86	98.74	0.00
1.05	98.55	0.00
0.58	99.01	0.00
1.00	98.59	0.00
1.38	98.19	0.00
1.62	97.84	0.00
2.42	0.00	96.94
2.42
3.14	0.06	96.03
3.14
5.23	0.02	94.99	94.11	0.00	0.00	0.00	0.00	0.00
4.23
2.45	0.00	97.02
2.45
1.74	0.13	97.61
1.74
1.81	0.01	97.73
1.81
0.38	99.37	0.00
0.67	99.07	0.00

CPU Core C7 residency after S2idle is: 36.27
CPU Package C-state 2 residency after S2idle is: 94.11
CPU Package C-state 3 residency after S2idle is: 0.00
CPU Package C-state 8 residency after S2idle is: 0.00
CPU Package C-state 10 residency after S2idle is: 0.00
S0ix residency after S2idle is: 0.00

Your system achieved PC2 residency: 94.11, but no PC8 residency during S2idle: 0.00

---Debug no PC8 residency scenario---:

Turbostat output: 

14.218788 sec
CPU%c1	CPU%c6	CPU%c7	Pkg%pc2	Pkg%pc3	Pkg%pc6	Pkg%pc8	Pk%pc10	SYS%LPI
1.40	61.88	36.52	94.62	0.00	0.00	0.00	0.00	0.00
0.77	98.78	0.00
0.59	99.03	0.00
0.44	99.18	0.00
0.79	98.81	0.00
0.66	98.91	0.00
0.78	98.80	0.00
0.43	99.15	0.00
0.86	98.72	0.00
1.98	0.05	97.40
1.98
1.68	0.02	97.74
1.68
3.03	0.02	96.31	94.62	0.00	0.00	0.00	0.00	0.00
3.03
1.43	0.02	98.12
1.43
2.33	0.07	96.98
2.33
1.73	0.05	97.71
1.73
0.38	99.36	0.00
0.66	99.08	0.00

Your CPU Core C7 residency is available: 36.52

Checking PCIe Device D state and Bridge Link state:


0000:00:07.0 Link is in Detect

The link power management state of PCIe bridge: 0000:00:07.0 is OK.

0000:00:07.1 Link is in Detect

The link power management state of PCIe bridge: 0000:00:07.1 is OK.

0000:00:07.2 Link is in Detect

The link power management state of PCIe bridge: 0000:00:07.2 is OK.

0000:00:07.3 Link is in Detect

The link power management state of PCIe bridge: 0000:00:07.3 is OK.

0000:00:1c.0 Link is in L1.2

The link power management state of PCIe bridge: 0000:00:1c.0 is OK.

0000:00:1c.5 Link is in L1.2

The link power management state of PCIe bridge: 0000:00:1c.5 is OK.

Your system default pcie_aspm policy setting is OK.


Checking PCI Devices D3 States:
[42279.306143] i801_smbus 0000:00:1f.4: PCI PM: Suspend power state: D0
[42279.306151] i801_smbus 0000:00:1f.4: PCI PM: Skipped
[42279.309855] snd_hda_intel 0000:00:1f.3: PCI PM: Suspend power state: D3hot
[42279.309943] i915 0000:00:02.0: PCI PM: Suspend power state: D3hot
[42279.319392] mei_me 0000:00:16.0: PCI PM: Suspend power state: D3hot
[42279.319749] proc_thermal_pci 0000:00:04.0: PCI PM: Suspend power state: D3hot
[42279.319920] intel-lpss 0000:00:19.1: PCI PM: Suspend power state: D3hot
[42279.320225] iwlwifi 0000:aa:00.0: PCI PM: Suspend power state: D3hot
[42279.320246] intel-lpss 0000:00:15.1: PCI PM: Suspend power state: D3hot
[42279.321547] xhci_hcd 0000:00:14.0: PCI PM: Suspend power state: D3hot
[42279.322013] nvme 0000:a9:00.0: PCI PM: Suspend power state: D3hot
[42279.322839] xhci_hcd 0000:00:0d.0: PCI PM: Suspend power state: D3cold
[42279.323212] pcieport 0000:00:1c.0: PCI PM: Suspend power state: D0
[42279.323216] pcieport 0000:00:1c.0: PCI PM: Skipped
[42279.331952] pcieport 0000:00:1c.5: PCI PM: Suspend power state: D3hot
[42279.348737] thunderbolt 0000:00:0d.3: PCI PM: Suspend power state: D3cold
[42279.349105] thunderbolt 0000:00:0d.2: PCI PM: Suspend power state: D3cold


Checking PCI Devices tree diagram:
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Arc Graphics]
           +-04.0  Intel Corporation Meteor Lake-P Dynamic Tuning Technology
           +-07.0-[01-2a]--
           +-07.1-[2b-54]--
           +-07.2-[55-7e]--
           +-07.3-[7f-a8]--
           +-08.0  Intel Corporation Meteor Lake-P Gaussian & Neural-Network Accelerator
           +-0a.0  Intel Corporation Meteor Lake-P Platform Monitoring Technology
           +-0b.0  Intel Corporation Meteor Lake NPU
           +-0d.0  Intel Corporation Meteor Lake-P Thunderbolt 4 USB Controller
           +-0d.2  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #0
           +-0d.3  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #1
           +-14.0  Intel Corporation Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller
           +-14.2  Intel Corporation Device 7e7f
           +-15.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #0
           +-15.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #1
           +-16.0  Intel Corporation Meteor Lake-P CSME HECI #1
           +-19.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #4
           +-19.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #5
           +-1c.0-[a9]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
           +-1c.5-[aa]----00.0  Intel Corporation Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak]
           +-1f.0  Intel Corporation Device 7e02
           +-1f.3  Intel Corporation Meteor Lake-P HD Audio Controller
           +-1f.4  Intel Corporation Meteor Lake-P SMBus Controller
           \-1f.5  Intel Corporation Meteor Lake-P SPI Controller

The pcieport 0000:00:1c.0 ASPM enable status:
		LnkCtl:	ASPM L1 Enabled; RCB 64 bytes, LnkDisable- CommClk+

Pcieport is not in D3cold:          
e[31m0000:00:1c.0e[0m

Pcieport is not in D3cold:     
e[31m0000:00:1c.5e[0m

Maybe patch 2 from this series helps

(Patch 1 will only help with s5)

Thanks for your response. I tried your patch. Unfortunately, this resulted in a very unstable system. After booting, everything was as before. But once I hibernated the system, things went sour. I made multiple tempts, but the system always ended up crashing. Either during wake-up from hibernation or shortly after.

Huh interesting - it just ports everything from suspend to hibernate. Is everything stable for suspend?

Yesterday I forgot to disconnect the USB Dock, which seems to cause the crash. Sorry for the confusion! I checked again with only the laptop. The patch is stable, but the problem with increased power consumption after hibernation is still there.

If I understand your patch correctly, it addresses increased power consumption while in hibernation. In my case, the system appears to be completely off (i.e., 0W) while in hibernation. Only after it is restored is the consumption increased by about 3W.

Is the issue still presented if you hibernate followed by suspend?

The point of the patch series was specifically to improve s5 power and attempted to fix any incongruent behavior between Windows and Linux for that state. I’m surprising you’re actually getting 0W for hibernate.

How accurate is your wattmeter supposed to be? Are you testing with battery physically disconnected? On framework BIOS there would be a temporary disconnect option in BIOS. That should emulate a physical disconnect without having to open the chassis.

I did some measurements with your patch, running on battery, display on minimum brightness, booted into Gnome desktop, and a terminal running powertop. The readings are the discharge rate shown by powertop:

  1. Boot up
  2. 3.5W
  3. Suspend and wake up
  4. 3.3 W
  5. Hibernate and restore
  6. 6.0 W
  7. Standby and wake up
  8. 5.2 W

With every step, I waited at least half a minute for the readings to stabilize. There is some fluctuation, but still a significant difference between before and after hibernation.

Regarding the accuracy of the AC wattmeter, it’s one of the simple plug-in types that you put in between the wall outlet and your device, with a small display showing the wattage and consumed power. It shows 0.1W resolution, but I doubt it being so accurate. I have no further information; other than that, I have used it on other devices, and the readings are consistent and feel about right. Though if the 0.0W are actually 0.0W or just less than, let’s say, 0.5W, I don’t know.

I’ll do some more measurements on the AC side with the battery disconnect option later.

It would be interesting to repeat that without my patch to see if it’s even helping your issue at all.

It sounds like there are some remaining differences between hibernate and suspend though. IMO you should bring these findings to a kernel bugzilla to discuss with Intel developers.

A shot in the dark, but Windows will load more stuff (probably related to hibernation) and won’t put them away until you clean boot.
This is the same reason why (on both Linux and Windows) if you don’t turn off your computer for .. say, 15 days. You see the memory useage increase. On Linux it’s better, but it’s happening.
Suspect maybe that’s the same situation with Linux?

I did some measurements on the AC side with the battery disconnected. Same. Then I reverted your patch and checked. Again, no change, same problem :frowning:

As the S0ixSelfTestTool output points towards the PCIe system (in particular the SSD and the WiFi card), I’ll try to find an external disk to boot from. Maybe things change if these two PCIe connections are not used.

Prior to the Framework, I used a Dell XPS, and I had the system running for months at a time, no problem. At the same time, the XPS had a very good suspend, so I did not use the hibernation. The Framework has (at least with the latest kernel versions) a rather high power consumption in suspend. So I decided to use suspend-then-hibernate. That seemed to work very well; only it increased the power consumption even more… Then I started to pay closer attention to what was going on exactly.

Unfortunately, I don’t have a Windows installation on the Framework, so I can’t compare.

1 Like

OK, well you’ve at least ruled out that it’s not a PCIe root port problem if my patch series didn’t change anything for S4.

I’d say get this on a kernel bugzilla and hopefully Intel developers will have some suspicions from your debug data.

Funny enough older systems seem to handle sleep/hibernate a lot more graceful. Expecially Dell, who builds some pretty nice code for the BIOS.

Thinkpads (after the modern standby) just “work” (except it doesn’t, there is a un-configurable hardware timer that sleeps the system regardless of Windows settings). But it does sleep.