intel_set_memory_cxsr(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐ŸŽ€ 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 ๐Ÿ”ฎ


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