xe_guc_ct
static int replacement_xe_guc_ct_send_recv_loopback_relay(struct xe_guc_ct *ct,
static int replacement_xe_guc_ct_send_recv_always_fails(struct xe_guc_ct *ct,
static int replacement_xe_guc_ct_send_recv_expects_pf2guc_relay(struct xe_guc_ct *ct,
struct xe_guc_ct *ct = &ads_to_guc(ads)->ct;
static void fast_req_stack_save(struct xe_guc_ct *ct, unsigned int slot)
static int __guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action,
static void kick_reset(struct xe_guc_ct *ct)
static int dequeue_one_g2h(struct xe_guc_ct *ct);
static bool guc_ct_send_wait_for_retry(struct xe_guc_ct *ct, u32 len,
static void fast_req_dump(struct xe_guc_ct *ct, u16 fence, unsigned int slot)
static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
static int guc_ct_send(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send_g2h_handler(struct xe_guc_ct *ct, const u32 *action, u32 len)
static bool retry_failure(struct xe_guc_ct *ct, int ret)
static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,
static void fast_req_report(struct xe_guc_ct *ct, u16 fence)
int xe_guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send_recv_no_fail(struct xe_guc_ct *ct, const u32 *action,
static int parse_g2h_event(struct xe_guc_ct *ct, u32 *msg, u32 len)
static int guc_crash_process_msg(struct xe_guc_ct *ct, u32 action)
static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
static void fast_req_track(struct xe_guc_ct *ct, u16 fence, u16 action)
static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
static int process_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
static void ct_dead_fini(struct xe_guc_ct *ct) { }
static void ct_dead_init(struct xe_guc_ct *ct) { }
static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
static void fast_req_report(struct xe_guc_ct *ct, u16 fence) { }
static void fast_req_track(struct xe_guc_ct *ct, u16 fence, u16 action) { }
static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
void xe_guc_ct_fast_path(struct xe_guc_ct *ct)
static int dequeue_one_g2h(struct xe_guc_ct *ct)
static void receive_g2h(struct xe_guc_ct *ct)
struct xe_guc_ct *ct = container_of(w, struct xe_guc_ct, g2h_worker);
static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct xe_guc_ct *ct, bool atomic,
static struct xe_guc_ct_snapshot *guc_ct_snapshot_capture(struct xe_guc_ct *ct, bool atomic,
struct xe_guc_ct_snapshot *xe_guc_ct_snapshot_capture(struct xe_guc_ct *ct)
void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p, bool want_ctb)
static void ct_dead_capture(struct xe_guc_ct *ct, struct guc_ctb *ctb, u32 reason_code)
struct xe_guc_ct *ct = container_of(dead, struct xe_guc_ct, dead);
struct xe_guc_ct *ct = container_of(w, struct xe_guc_ct, dead.worker);
long xe_guc_ct_queue_proc_time_jiffies(struct xe_guc_ct *ct)
struct xe_guc_ct *ct = arg;
static void primelockdep(struct xe_guc_ct *ct)
int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct)
struct xe_guc_ct *ct = arg;
int xe_guc_ct_init(struct xe_guc_ct *ct)
static void receive_g2h(struct xe_guc_ct *ct);
int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct)
static void ct_exit_safe_mode(struct xe_guc_ct *ct);
static void guc_ct_change_state(struct xe_guc_ct *ct,
static struct xe_guc *ct_to_guc(struct xe_guc_ct *ct)
static int guc_ct_ctb_h2g_register(struct xe_guc_ct *ct)
static int guc_ct_ctb_g2h_register(struct xe_guc_ct *ct)
static struct xe_gt *ct_to_gt(struct xe_guc_ct *ct)
static int guc_ct_control_toggle(struct xe_guc_ct *ct, bool enable)
static void guc_ct_change_state(struct xe_guc_ct *ct,
static struct xe_device *ct_to_xe(struct xe_guc_ct *ct)
static bool ct_needs_safe_mode(struct xe_guc_ct *ct)
static bool ct_restart_safe_mode_worker(struct xe_guc_ct *ct)
struct xe_guc_ct *ct = container_of(w, struct xe_guc_ct, safe_mode_worker.work);
static void ct_enter_safe_mode(struct xe_guc_ct *ct)
static void ct_exit_safe_mode(struct xe_guc_ct *ct)
static int __xe_guc_ct_start(struct xe_guc_ct *ct, bool needs_register)
int xe_guc_ct_restart(struct xe_guc_ct *ct)
int xe_guc_ct_enable(struct xe_guc_ct *ct)
static void stop_g2h_handler(struct xe_guc_ct *ct)
void xe_guc_ct_disable(struct xe_guc_ct *ct)
void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct)
void xe_guc_ct_stop(struct xe_guc_ct *ct)
void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct)
void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
static bool g2h_has_room(struct xe_guc_ct *ct, u32 g2h_len)
static int has_room(struct xe_guc_ct *ct, u32 cmd_len, u32 g2h_len)
static void h2g_reserve_space(struct xe_guc_ct *ct, u32 cmd_len)
static void __g2h_reserve_space(struct xe_guc_ct *ct, u32 g2h_len, u32 num_g2h)
static void ct_dead_capture(struct xe_guc_ct *ct, struct guc_ctb *ctb, u32 reason_code);
static void __g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len)
static void ct_dead_fini(struct xe_guc_ct *ct)
static void g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len)
static u16 next_ct_seqno(struct xe_guc_ct *ct, bool is_g2h_fence)
static void ct_dead_init(struct xe_guc_ct *ct)
static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct);
int xe_guc_ct_init(struct xe_guc_ct *ct);
int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
int xe_guc_ct_enable(struct xe_guc_ct *ct);
int xe_guc_ct_restart(struct xe_guc_ct *ct);
void xe_guc_ct_disable(struct xe_guc_ct *ct);
void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct);
void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct);
void xe_guc_ct_stop(struct xe_guc_ct *ct);
void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct);
void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
struct xe_guc_ct_snapshot *xe_guc_ct_snapshot_capture(struct xe_guc_ct *ct);
void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p, bool want_ctb);
static inline bool xe_guc_ct_initialized(struct xe_guc_ct *ct)
static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
static inline void xe_guc_ct_irq_handler(struct xe_guc_ct *ct)
int xe_guc_ct_send(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
int xe_guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,
xe_guc_ct_send_block(struct xe_guc_ct *ct, const u32 *action, u32 len)
int xe_guc_ct_send_g2h_handler(struct xe_guc_ct *ct, const u32 *action,
int xe_guc_ct_send_recv_no_fail(struct xe_guc_ct *ct, const u32 *action,
xe_guc_ct_send_block_no_fail(struct xe_guc_ct *ct, const u32 *action, u32 len)
long xe_guc_ct_queue_proc_time_jiffies(struct xe_guc_ct *ct);
static inline void xe_guc_ct_wake_waiters(struct xe_guc_ct *ct)
static struct xe_guc_ct *pc_to_ct(struct xe_guc_pc *pc)
struct xe_guc_ct *ct = pc_to_ct(pc);
struct xe_guc_ct *ct = pc_to_ct(pc);
struct xe_guc_ct *ct = pc_to_ct(pc);
struct xe_guc_ct *ct = &pc_to_guc(pc)->ct;
static struct xe_guc_ct *relay_to_ct(struct xe_guc_relay *relay)
struct xe_guc_ct ct;