/** * DOC: Command Transport (CT). * * Buffer based command transport is a replacement for MMIO based mechanism. * It can be used to perform both host-2-guc and guc-to-host communication.
*/
/** Represents single command transport buffer. * * A single command transport buffer consists of two parts, the header * record (command transport buffer descriptor) and the actual buffer which * holds the commands. * * @lock: protects access to the commands buffer and buffer descriptor * @desc: pointer to the buffer descriptor * @cmds: pointer to the commands buffer * @size: size of the commands buffer in dwords * @resv_space: reserved space in buffer in dwords * @head: local shadow copy of head in dwords * @tail: local shadow copy of tail in dwords * @space: local shadow copy of space in dwords * @broken: flag to indicate if descriptor data is broken
*/ struct intel_guc_ct_buffer {
spinlock_t lock; struct guc_ct_buffer_desc *desc;
u32 *cmds;
u32 size;
u32 resv_space;
u32 tail;
u32 head;
atomic_t space; bool broken;
};
/** Top-level structure for Command Transport related data * * Includes a pair of CT buffers for bi-directional communication and tracking * for the H2G and G2H requests sent and received through the buffers.
*/ struct intel_guc_ct { struct i915_vma *vma; bool enabled;
/* buffers for sending and receiving commands */ struct { struct intel_guc_ct_buffer send; struct intel_guc_ct_buffer recv;
} ctbs;
struct tasklet_struct receive_tasklet;
/** @wq: wait queue for g2h chanenl */
wait_queue_head_t wq;
struct {
u16 last_fence; /* last fence used to send request */
spinlock_t lock; /* protects pending requests list */ struct list_head pending; /* requests waiting for response */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.