GUC MMIO BASED COMMUNICATION(9)
π GuC MMIO based communication π
okay so welcome to the Kernel API Manual bestie, this page is literally all about GuC MMIO based communication and it's giving very "low level but make it cute" β¨
π the whole vibe (aka what this actually is) π
The MMIO based communication between Host and GuC relies on special hardware registers β and the format of those registers could be defined by the software, which is why they're called scratch registers π¦
Each MMIO based message β and yes that's both Host to GuC (H2G) and GuC to Host (G2H) messages β gets written directly into those scratch registers. its maximum length depends on how many scratch registers are available, no cap π«Ά
For Gen9+, there are 16 software scratch registers at 0xC180-0xC1B8, but ngl no H2G command takes more than 4 parameters, and the GuC firmware itself uses a 4-element array to store the H2G message π₯
For Gen11+, there are additional 4 registers at 0x190240-0x19024C, which β regardless of their lower count β are preferred over the legacy ones π
The MMIO based communication is mainly used during the driver initialization phase, to setup the CTB based communication_ that will be used afterwards πΈ
β¨ SEE ALSO β¨
- Kernel file
./drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.hπ MMIOHXG Message(9)
and that's the whole page bestie, we ate and left no crumbs π mwah π
signing off from ./drivers/gpu/drm/xe/abi β dated October 2026, and yeah the header/footer both say GuC MMIO bas...ommunication(9) because truncation is iconic like that π
π¦ 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