Bug 256261 - TSC-low hardware timer breaks C-States on Intel Core2 generation of CPUs
Summary: TSC-low hardware timer breaks C-States on Intel Core2 generation of CPUs
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 13.0-STABLE
Hardware: amd64 Any
: --- Affects Many People
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-05-30 12:52 UTC by Wladislav Artsimovich
Modified: 2021-05-30 12:52 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Wladislav Artsimovich 2021-05-30 12:52:16 UTC
FreeBSD users with an Intel Core2 CPU have reported broken C-states for a while now, as originally reported here: https://forums.freebsd.org/threads/c-states-not-used.66192/
The CPU would refuse to enter any C-state higher than C1. As a result power consumption suffered.
Luckily this is a known issue in DragonFlyBSD, with hardware timers being at fault ( https://www.dragonflybsd.org/docs/user/Powersave/#index1h2 ).

The fix for FreeBSD is simpler: Simply changing the hardware time to anything other than TSC-low fixes the issue and the CPU enters C2 and higher. Eg. kern.timecounter.hardware=HPET 

A quick workaround would be to disable the TSC-low timer on all Intel Core2 CPUs, by lowering it's timecounter.choise score.