GUC CTB BLOB(9)
πΈ GuC CTB Blob πΈ
okay so bestie, this is the GuC CTB Blob page from the Kernel API Manual (section 9), and itβs lowkey iconic. The whole idea: we allocate a single blob that holds both the CTB descriptors and the buffers. one blob, two jobs, main character energy fr fr. π
β¨
Hereβs the layout β and yes, itβs giving βcursed ASCII art,β but we keep it exactly as the page gives it. No edits, no cleanup, we respect the chaos. π
ββββββββββββββββββββββββββββββββ
β offset contents size β
ββββββββββββββββββββββββββββββββ
+========+===============================================+======+ |
0x0000 | H2G CTB Descriptor (send) | |
ββββββββββββββββββββββββββββββββββββββββββββββββ
β 0x0800 G2H CTB Descriptor (g2h) β
β 0x1000 H2G CT Buffer (send) n*4K β
β β
β 0x1000 G2H CT Buffer (g2h) m*4K β
β + n*4K β
ββββββββββββββββββββββββββββββββββββββββββββββββ
Quick rule, bestie: the size of each CT Buffer must be a multiple of 4K β no exceptions. β¨
We donβt expect too many messages in flight at any one time, unless weβre using the GuC submission. In that case, each request needs a minimum of 2 dwords, which gives us a maximum of 256 queue'd requests. Hopefully thatβs enough space to avoid backpressure on the driver. We make the receive buffer bigger (relative to the send buffer) so a G2H response CTB always has a landing spot. π¬π
On top of submissions, the G2H buffer also has to hold enough room for recoverable page fault notifications. The number of page faults is interrupt driven and can be as much as the number of compute resources available. However, most of the actual work for these happens in a separate page fault worker thread. So we only need to make sure the queue has enough space to handle all of the submissions and responses, plus an extra buffer for incoming page faults. π«Ά
β¨ SEE ALSO β¨
- Kernel file
./drivers/gpu/drm/xe/xe_guc_ct.cβ the source, iykyk. π xe_guc_ct_queue_proc_time_jiffies(9)xe_guc_ct_init_post_hwconfig(9)xe_guc_ct_restart(9)xe_guc_ct_enable(9)xe_guc_ct_disable(9)xe_guc_ct_flush_and_stop(9)xe_guc_ct_stop(9)xe_guc_ct_runtime_suspend(9)xe_guc_ct_runtime_resume(9)xe_guc_ct_send(9)xe_guc_ct_send_recv(9)xe_guc_ct_fast_path(9)xe_guc_ct_snapshot_capture(9)xe_guc_ct_snapshot_print(9)xe_guc_ct_snapshot_free(9)xe_guc_ct_print(9)
Thatβs the whole page, bestie. Signing off from ./drivers/gpu/drm/xe, dated October 2026, for GuC CTB Blob(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