Low Latency Tolerance preventing Intel Package from entering deep sleep states

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi. I hope this is the right forum to raise this...

For a while I have noticed that my CPU (i9-9880H in a Lenovo X1 Extreme Gen2) never enters any sleep mode below pc2.
(Confirmed with powertop and /sys/kernel/debug/pmc_core/package_cstate_show)

Interestingly the CPU *can* reachers deeper C states *after* a resume from sleep (either S0ix or S3, i.e. freeze or mem).

This article finally pointed me in the right direction: https://01.org/blogs/qwang59/2020/linux-s0ix-troubleshooting

Somehow SOUTHPORT_A is requesting a max latency of 1 us.
There are no external devices attached. 

This is before a resume:

$ cat /sys/kernel/debug/pmc_core/ltr_show
SOUTHPORT_A                             LTR: RAW: 0x88018c01            Non-Snoop(ns): 1024             Snoop(ns): 32768           <-------
SOUTHPORT_B                             LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SATA                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
GIGABIT_ETHERNET                        LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
XHCI                                    LTR: RAW: 0x13ff                Non-Snoop(ns): 0                Snoop(ns): 0               
Reserved                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ME                                      LTR: RAW: 0x8000800             Non-Snoop(ns): 0                Snoop(ns): 0               
EVA                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SOUTHPORT_C                             LTR: RAW: 0x9f409f4             Non-Snoop(ns): 0                Snoop(ns): 0               
HD_AUDIO                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CNV                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
LPSS                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SOUTHPORT_D                             LTR: RAW: 0x8c548c54            Non-Snoop(ns): 2752512          Snoop(ns): 2752512         
SOUTHPORT_E                             LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CAMERA                                  LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ESPI                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SCC                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ISH                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
UFSX2                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
EMMC                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
WIGIG                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CURRENT_PLATFORM                        LTR: RAW: 0x40201               Non-Snoop(ns): 0                Snoop(ns): 0               
AGGREGATED_SYSTEM                       LTR: RAW: 0x7fbfdfe             Non-Snoop(ns): 0                Snoop(ns): 0               

Notice the 1000ns max latency requirement for SOUTHPORT_A.

Ignoring SOUTHPORT_A via /sys/kernel/debug/pmc_core/ltr_ignore subsequently allows the CPU to reach deep sleep states.

After a resume it looks like suddenly SOUTHPORT_C is active and with a less tight latency requirement:

$ cat /sys/kernel/debug/pmc_core/ltr_show
SOUTHPORT_A                             LTR: RAW: 0x8010c01             Non-Snoop(ns): 0                Snoop(ns): 0               <--------
SOUTHPORT_B                             LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SATA                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
GIGABIT_ETHERNET                        LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
XHCI                                    LTR: RAW: 0x13ff                Non-Snoop(ns): 0                Snoop(ns): 0               
Reserved                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ME                                      LTR: RAW: 0x8000800             Non-Snoop(ns): 0                Snoop(ns): 0               
EVA                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SOUTHPORT_C                             LTR: RAW: 0x88468846            Non-Snoop(ns): 71680            Snoop(ns): 71680           <---------
HD_AUDIO                                LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CNV                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
LPSS                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SOUTHPORT_D                             LTR: RAW: 0x8c548c54            Non-Snoop(ns): 2752512          Snoop(ns): 2752512         
SOUTHPORT_E                             LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CAMERA                                  LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ESPI                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
SCC                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
ISH                                     LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
UFSX2                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
EMMC                                    LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
WIGIG                                   LTR: RAW: 0x0                   Non-Snoop(ns): 0                Snoop(ns): 0               
CURRENT_PLATFORM                        LTR: RAW: 0x40201               Non-Snoop(ns): 0                Snoop(ns): 0               
AGGREGATED_SYSTEM                       LTR: RAW: 0x904824              Non-Snoop(ns): 0                Snoop(ns): 0               

Does anybody know what's going on or how to debug this further?

As stated above, I was able to work around this problem by ignoring SOUTHPORT_A via /sys/kernel/debug/pmc_core/ltr_ignore.
There has to be a better way, and I'm sure I'm not the only one running into this.

Thanks.

-- Lars




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux