Blame

f70d3e deseven 2025-06-12 13:30:10 1
# C-States
2
3
### Problem
4
When running Linux, especially older 6.x kernels, you might find that the CPU doesn't use C-states below C1, constantly running on higher frequences and eating power.
5
6
### Solution
7
For some reason I couldn't make it work with either `acpi_cpufreq` or `amd_pstate`, but [CoreFreq](https://github.com/cyring/CoreFreq) turned out to be a perfect solution once again.
8
9
Assuming that you already have it installed and working (otherwise check [[this guide|Guides/Hardware-Monitoring]] first):
10
11
```bash
12
# /etc/kernel/cmdline
13
... initcall_blacklist=acpi_cpufreq_init nmi_watchdog=0 idle=halt amd_pstate=disable tsc=unstable nowatchdog
14
```
15
16
```bash
17
# /etc/modprobe.d/blacklist.conf
18
k10temp
19
acpi_cpufreq
20
```
21
22
```bash
23
# /etc/modprobe.d/corefreqk.conf
24
options corefreqk Register_ClockSource=1 Register_CPU_Freq=1 Register_Governor=1 Register_CPU_Idle=1 Override_SubCstate="1,1,1,1,1,1,0,0"
25
```
26
93e1f1 deseven 2025-06-12 13:38:37 27
Don't forget to run `update-initramfs -u -k all` and reboot after making these changes.
28
29
To check that it works, run `corefreq-cli` and go first to **Menu > Settings**, make sure that CPU-IDLE driver is ON:
30
![](./c-states-check1.png)
31
32
Then go to **Menu > Kernel data**, make sure that CPU-Idle driver is set to `corefreqk-idle` and that the Idle Limit is set to C6:
33
![](./c-states-check2.png)
34
35
Finally, in the **Frequency** or **Idle C-States** views you'll be able to see that the CPU now actually goes to lower frequencies/power:
36
![](./working-c-states.png)