ips_adjust(9)
π NAME
ips_adjust β adjust power clamp based on thermal state
ok so bestie, this is the lil function that keeps your CPU and GPU from fighting over who gets to be hot π
β¨ SYNOPSIS
int ips_adjust (void *data );
π ARGUMENTS
dataβ the ips driver structure π«Ά
π¦ DESCRIPTION
So basically this thing wakes up every 5s or so (yes, or so β she's not a clock, give her a break π) and checks whether we should adjust the power clamp. She peeks at CPU and GPU load to figure out which one needs the adjustment, and there's a whole list of things she's considering, okay:
- do we need to adjust up or down? β¬οΈβ¬οΈ
- is CPU busy?
- is GPU busy?
- is CPU in turbo? π₯
- is GPU in turbo? π₯
- is CPU or GPU preferred? (CPU is default, she's the main character π)
So, given all of the above, here's the whole vibe β we do the following:
- up (TDP available) π
- CPU not busy, GPU not busy β nothing. literally nothing. we rest π€
- CPU busy, GPU not busy β adjust CPU up
- CPU not busy, GPU busy β adjust GPU up
- CPU busy, GPU busy β adjust preferred unit up, taking headroom from the non-preferred unit if necessary (yes, we're stealing, it's fine π )
- down (at TDP limit) π₯Ά
- adjust both CPU and GPU down if possible
And here's the iconic little grid for that down case β copy it exactly, no editing bestie, I don't make the rules, I just show them:
|cpu+ gpu+ cpu+gpu- cpu-gpu+ cpu-gpu- cpu < gpu <
|cpu+gpu+ cpu+ gpu+ nothing cpu < gpu >=
|cpu+gpu-(mcp<) cpu+gpu-(mcp<) gpu- gpu- cpu >= gpu < |cpu-
gpu+(mcp<) cpu- cpu-gpu+(mcp<) cpu- cpu >= gpu >=|cpu-gpu-
cpu-gpu- cpu-gpu- cpu-gpu-
ngl that grid is giving "someone ran a table through a blender" but it's verbatim from the page so we respect it π
π RETURN
0
that's it. zero. she's chill like that π
π SEE ALSO
Kernel file ./drivers/platform/x86/intel_ips.c plus the whole friend group:
ips_cpu_busy(9)ips_cpu_raise(9)ips_cpu_lower(9)do_enable_cpu_turbo(9)ips_enable_cpu_turbo(9)do_disable_cpu_turbo(9)ips_disable_cpu_turbo(9)ips_gpu_busy(9)ips_gpu_raise(9)ips_gpu_lower(9)ips_enable_gpu_turbo(9)ips_disable_gpu_turbo(9)mcp_exceeded(9)cpu_exceeded(9)mch_exceeded(9)verify_limits(9)update_turbo_limits(9)ips_monitor(9)ips_irq_handler(9)ips_detect_cpu(9)ips_get_i915_syms(9)
ok that's the whole thing, ily, go read the source bestie π§π
from ./drivers/platform/x86, dated October 2026 β slay, periodt, catch you in the next man page β¨ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms