intel_set_memory_cxsr(9)
๐ NAME ๐
okay so bestie, welcome to intel_set_memory_cxsr(9) from the Kernel API Manualโthis page is literally about configuring CxSR state, and yes itโs giving low-level display energy. ๐
intel_set_memory_cxsrโ Configure CxSR state โจ
โจ SYNOPSIS โจ
the signature, untouched because we respect the code:
bool intel_set_memory_cxsr (struct intel_display *display , bool enable );
๐งพ ARGUMENTS ๐งพ
displayโ display device. the whole display device vibe ๐ซถenableโ Allow vs. disallow CxSR. yes, itโs the yes/no switch, bestie ๐๏ธ
๐ซ DESCRIPTION ๐ซ
Okay so what this actually does: it allows or disallows the system to enter a special CxSR (C-state self refresh) state. ๐ซถ
What typically happens in CxSR mode is that several display FIFOs may get combined into a single larger FIFO for a particular planeโthis is the so-called max FIFO modeโso the system can defer memory fetches longer, and the memory will enter self refresh. Iconic behavior, honestly. โจ
heads up #1: enabling CxSR does not guarantee that the system will enter this special mode, and it also does not guarantee that the system stays in that mode once entered. So this just allows/disallows the system to autonomously utilize CxSR mode. Other factors such as core C-states will affect when/if the system actually enters/exits CxSR mode. no cap ๐
heads up #2: on VLV/CHV this actually only controls the max FIFO mode, and the system is free to enter/exit memory self refresh at any time even when the use of CxSR has been disallowed. plot twist ๐
While the system is actually in the CxSR/max FIFO mode, some plane control registers will not get latched on vblank. Thus, in order to guarantee the system will respond to changes in the plane registers, we must always disallow CxSR prior to making changes to those registers. Unfortunately, the system will re-evaluate the CxSR conditions at frame start, which happens after vblank start (which is when the plane registers would get latched), so we canโt proceed with the plane update during the same frame where we disallowed CxSR. itโs giving timing drama and you just have to respect it ๐ญ
Certain platforms also have a deeper HPLL SR mode. Fortunately, the HPLL SR mode depends on CxSR itself, so we donโt have to hand hold the hardware w.r.t. HPLL SR when writing to plane registers. Disallowing just CxSR is sufficient. slay ๐
๐ฎ SEE ALSO ๐ฎ
- Kernel file
./drivers/gpu/drm/i915/display/i9xx_wm.c intel_wm_method1(9),intel_wm_method2(9),intel_calculate_wm(9)
and thatโs the whole page, bestie ๐ this cutie lives at ./drivers/gpu/drm/i915/display, dated October 2026, and itโs filed under intel_set_memory_cxsr(9). mwah ๐
๐ฆ 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