STRUCT RELAY_TRANSACTION(9)
π NAME π
struct relay_transaction β internal data used to handle transactions. That's the whole vibe, bestie: it's the backstage-pass struct for transaction handling. β¨
β¨ SYNOPSIS β¨
struct relay_transaction {
bool incoming;
u32 remote;
u32 rid;
u32 *request;
u32 request_len;
u32 *response;
u32 response_len;
u32 offset;
u32 request_buf[GUC_CTB_MAX_DWORDS];
u32 response_buf[GUC_CTB_MAX_DWORDS];
int reply;
struct completion done;
struct list_head link;
};
Okay so this is struct relay_transaction(9), straight from the Kernel API Manual, section 9 β and here's every member, no skipping, fr fr. π«Ά
π₯ Members π
incomingβ bool energy: says whether this transaction is an incoming request from the remote VF/PF, or an outgoing request headed to the remote VF/PF. πremoteβ the PF/VF identifier for where the relay request message came from (or where it's going). πridβ the identifier for the VF/PF relay message. π·οΈrequestβ points to the inner VF/PF request message, copied to the#response_bufstarting at#offset. π§΅request_lenβ length of the inner VF/PF request message. πresponseβ points to the placeholder buffer where the inner VF/PF response will be located; for an outgoing transaction this could be the caller's buffer (if provided), otherwise it points to the#response_bufstarting at#offset. π«§response_lenβ length of the inner VF/PF response message (only if#statusis0), initially set to the size of the placeholder buffer where the response message will be copied. π―offsetβ offset to the start of the inner VF/PF relay message inside buffers; this offset is equal to the length of the outer GuC relay header message. π§request_bufβ buffer with the VF/PF request message including the outer transport message. π¦response_bufβ buffer with the VF/PF response message including the outer transport message. πreplyβ status of the reply;0means that data pointed to by#responseis valid. βdoneβ completion of the outgoing transaction. β³linkβ transaction list link. π
π¬ Description π¬
Relation between struct relay_transaction members β it's giving diagram time, and the layout is literally this:
<-------------------- GUC_CTB_MAX_DWORDS -------------->
<-------- GUC_RELAY_MSG_MAX_LEN --->
<--- offset ---> <--- request_len ------->
+----------------+-------------------------+----------+--+
| | | | |
+----------------+-------------------------+----------+--+
^ ^
/ /
request_buf request
<-------------------- GUC_CTB_MAX_DWORDS -------------->
<-------- GUC_RELAY_MSG_MAX_LEN --->
<--- offset ---> <--- response_len --->
+----------------+----------------------+-------------+--+
| | | | |
+----------------+----------------------+-------------+--+
^ ^
/ /
response_buf response
π SEE ALSO π
- Kernel file
./drivers/gpu/drm/xe/xe_guc_relay.c xe_guc_relay_init(9)xe_guc_relay_send_to_vf(9)xe_guc_relay_send_to_pf(9)xe_guc_relay_process_guc2vf(9)xe_guc_relay_process_guc2pf(9)
that's the page, bestie π«Άβ¨ source path ./drivers/gpu/drm/xe, version/date October 2026, and this was struct relay_transaction(9) in the Kernel API Manual. 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