How to get deeper C states working?

From: Lester <lesterz_at_gmail.com>
Date: Sat, 29 Oct 2022 15:52:47 UTC
Hi,

I'm using FreeBSD 13.1 on a Thinkpad T420 and noticed 1) with AC plugged in
I only get C1 and C2 recognized 2) with only battery I get C1, C2 and C3. I
also have Debian Linux installed on the same machine, under which I can get
C6 and C7 too (I noticed there's a ssdt6 for Cpu0Cst which defines all the
C states).

I was wondering if Debian has some SSDT override that provides the
additional states? From reading FreeBSD's acpi doc, I got the sense that I
can override the DSDT, but don't know what I need to change, and how to get
all the override files combined into a single aml file...

Questions: 1) How can I get C3 working on AC? 2) How can I get C6 and C7
working too? I'm sharing my acpidump results in this folder:
https://drive.google.com/drive/folders/1q0pY_2fO96RcQCN929sLLtYPpiokVTC3?usp=sharing

Many thanks!

== AC
hw.acpi.cpu.cx_lowest: C8
dev.cpu.1.cx_method: C1/hlt C2/io
dev.cpu.1.cx_usage_counters: 124 817
dev.cpu.1.cx_usage: 13.17% 86.82% last 54us
dev.cpu.1.cx_lowest: C8
dev.cpu.1.cx_supported: C1/1/1 C2/3/104
dev.cpu.0.cx_method: C1/hlt C2/io
dev.cpu.0.cx_usage_counters: 70 520
dev.cpu.0.cx_usage: 11.86% 88.13% last 5508us
dev.cpu.0.cx_lowest: C8
dev.cpu.0.cx_supported: C1/1/1 C2/3/104

== Battery
hw.acpi.cpu.cx_lowest: C8
dev.cpu.1.cx_method: C1/hlt C2/io C3/io
dev.cpu.1.cx_usage_counters: 1946 106 11173
dev.cpu.1.cx_usage: 14.71% 0.80% 84.48% last 85us
dev.cpu.1.cx_lowest: C8
dev.cpu.1.cx_supported: C1/1/1 C2/2/80 C3/3/109
dev.cpu.0.cx_method: C1/hlt C2/io C3/io
dev.cpu.0.cx_usage_counters: 1767 105 7127
dev.cpu.0.cx_usage: 19.63% 1.16% 79.19% last 15us
dev.cpu.0.cx_lowest: C8
dev.cpu.0.cx_supported: C1/1/1 C2/2/80 C3/3/109


== Linux
cpupower idle-info
CPUidle driver: intel_idle
CPUidle governor: menu
analyzing CPU 0:

Number of idle states: 6
Available idle states: POLL C1 C1E C3 C6 C7
POLL:
Flags/Description: CPUIDLE CORE POLL IDLE
Latency: 0
Usage: 16099
Duration: 264781
C1:
Flags/Description: MWAIT 0x00
Latency: 2
Usage: 7103
Duration: 1039428
C1E:
Flags/Description: MWAIT 0x01
Latency: 10
Usage: 30433
Duration: 6118359
C3:
Flags/Description: MWAIT 0x10
Latency: 80
Usage: 11891
Duration: 4311399
C6:
Flags/Description: MWAIT 0x20
Latency: 104
Usage: 77
Duration: 26683
C7:
Flags/Description: MWAIT 0x30
Latency: 109
Usage: 157291
Duration: 433120357