Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Oct 2022 17:53:37 -0400
From:      Alexander Motin <mav@FreeBSD.org>
To:        Lester <lesterz@gmail.com>, freebsd-acpi@freebsd.org
Subject:   Re: How to get deeper C states working?
Message-ID:  <be221a58-5e2f-a1e4-74ba-56c7aec7a193@FreeBSD.org>
In-Reply-To: <CABSuQKNKDCs7ZTehiKSy5_df5kFFVoHZihoBODPeBg%2BVfr=0Fg@mail.gmail.com>
References:  <CABSuQKNKDCs7ZTehiKSy5_df5kFFVoHZihoBODPeBg%2BVfr=0Fg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

FreeBSD reports ACPI C-states, while Linux -- CPU C-states.  Mapping of 
ones into the others is controlled by BIOS and not exposed to the OS. 
It is quite likely that ACPI C2 means CPU C3, and ACPI C3 means CPU 
C6/C7.  When you plug in AC adapter BIOS likely hides ACPI C3 state from 
OS, since it makes no much sense to save that little energy, considering 
potential performance loss.

On 29.10.2022 11:52, Lester wrote:
> 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 <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

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?be221a58-5e2f-a1e4-74ba-56c7aec7a193>