xe_guc_ct_send(9)
π xe_guc_ct_send β NAME (yes bestie, it's giving "who am I") π
okay so xe_guc_ct_send β it sends an HXG message to the GuC over CT. that's the whole vibe, that's the whole job. β¨
this page lives in the Kernel API Manual, and honestly? iconic of it.
π SYNOPSIS π
int xe_guc_ct_send (struct xe_guc_ct *ct , const u32 *action , u32 len ,
u32 g2h_len , u32 num_g2h );
like, that's the signature. no notes. π
πΈ ARGUMENTS πΈ
ctβ thexe_guc_ct. your ct. the ct in question. π«Άactionβ dword array with the HXG message. can't be NULL, fr fr, do not passNULLhere, that's not the move.lenβ length of the HXG message in dwords. can't be0either. it's giving "please actually send something".g2h_lenβ G2H response space to reserve, in dwords. or0. (0 is allowed here, unlikelen, slay for flexibility β¨)num_g2hβ number of G2H messages expected. or0. yes, also allowed to be0. β
π¦ DESCRIPTION π¦
so the return codes from the non-blocking send helpers are β and bestie, listen, this is the part the professor will test you on π β
-ENOTRECOVERABLEβ the xe device is wedged. like, fully not okay. Stop submitting new GuC work; the request cannot make progress until the device is recovered. it's giving "do not poke the wedged device, she needs to recover". π-EPIPEβ the H2G CTB is marked broken. The channel stays unusable until the CT is restarted, which clears the broken flag. so no, you can't just vibes your way past this. restart = the fix. π₯-ENODEVβ the CT channel is disabled, and messages are not expected in this state. Don't retry until it is enabled again. that's it, that's the rule, respect the boundary π«-ECANCELEDβ the CT channel is stopped or a GT recovery is pending; the message was dropped. Often benign, lowkey. Cancel-tolerant callers (e.g. TLB invalidations, GuC submission) rely on the stop/start flow to recover; others should retry once the CT is re-enabled or the reset/recovery completes. so like β iykyk whether you're cancel-tolerant or not. π§-EDEADLKβ no CTB room AND the wait for space timed out. and the send helpers have already requested an async GT reset before returning this error. so the reset is already in motion, don't @ me. π
also,-ENOMEMmay be returned if an internal allocation fails; the blockingxe_guc_ct_send_recvpath retries that allocation.-EBUSYand-EAGAINare internal flow-control results handled by the send helpers β so they're not really your problem, they get handled. π
π RETURN π
0 on success, or a negative error code on failure. that's the whole spectrum. zero means she ate. negative means read this page again. π
β SEE ALSO β
go read these next bestie, they're all in the same friend group:
Kernel file ./drivers/gpu/drm/xe/xe_guc_ct.c GuC CTB Blob(9), 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_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)
and that's the page! π sourced from ./drivers/gpu/drm/xe, dated October 2026, and this little manual is literally called xe_guc_ct_send(9) β go forth and send your HXG messages responsibly, bestie πβ¨
π¦ 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