struct xe_gt_tlb_invalidation_fence *fence, *next;
        int pending_seqno;
 
+       /*
+        * we can get here before the CTs are even initialized if we're wedging
+        * very early, in which case there are not going to be any pending
+        * fences so we can bail immediately.
+        */
+       if (!xe_guc_ct_initialized(>->uc.guc.ct))
+               return;
+
        /*
         * CT channel is already disabled at this point. No new TLB requests can
         * appear.
 
  */
 void xe_guc_ct_stop(struct xe_guc_ct *ct)
 {
+       if (!xe_guc_ct_initialized(ct))
+               return;
+
        xe_guc_ct_set_state(ct, XE_GUC_CT_STATE_STOPPED);
        stop_g2h_handler(ct);
 }
        u16 seqno;
        int ret;
 
-       xe_gt_assert(gt, ct->state != XE_GUC_CT_STATE_NOT_INITIALIZED);
+       xe_gt_assert(gt, xe_guc_ct_initialized(ct));
        xe_gt_assert(gt, !g2h_len || !g2h_fence);
        xe_gt_assert(gt, !num_g2h || !g2h_fence);
        xe_gt_assert(gt, !g2h_len || num_g2h);
        u32 action;
        u32 *hxg;
 
-       xe_gt_assert(gt, ct->state != XE_GUC_CT_STATE_NOT_INITIALIZED);
+       xe_gt_assert(gt, xe_guc_ct_initialized(ct));
        lockdep_assert_held(&ct->fast_lock);
 
        if (ct->state == XE_GUC_CT_STATE_DISABLED)
 
 
 void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift);
 
+static inline bool xe_guc_ct_initialized(struct xe_guc_ct *ct)
+{
+       return ct->state != XE_GUC_CT_STATE_NOT_INITIALIZED;
+}
+
 static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
 {
        return ct->state == XE_GUC_CT_STATE_ENABLED;