drm/xe: Ignore GGTT TLB inval errors during GT reset
authorNirmoy Das <nirmoy.das@intel.com>
Tue, 12 Nov 2024 17:01:23 +0000 (18:01 +0100)
committerNirmoy Das <nirmoy.das@intel.com>
Thu, 14 Nov 2024 11:20:23 +0000 (12:20 +0100)
During GT reset, GGTT TLB invalidations may fail. This is acceptable
as the reset will clear GGTT caches. Suppress only -ECANCELED other
return codes are still unexpected error.

v2: Add code comment(Matt).

Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/3389
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241112170123.1236443-1-nirmoy.das@intel.com
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c

index 3cb228c..4e9f893 100644 (file)
@@ -253,9 +253,18 @@ static int xe_gt_tlb_invalidation_guc(struct xe_gt *gt,
                0,  /* seqno, replaced in send_tlb_invalidation */
                MAKE_INVAL_OP(XE_GUC_TLB_INVAL_GUC),
        };
+       int ret;
+
+       ret = send_tlb_invalidation(&gt->uc.guc, fence, action,
+                                   ARRAY_SIZE(action));
+       /*
+        * -ECANCELED indicates the CT is stopped for a GT reset. TLB caches
+        *  should be nuked on a GT reset so this error can be ignored.
+        */
+       if (ret == -ECANCELED)
+               return 0;
 
-       return send_tlb_invalidation(&gt->uc.guc, fence, action,
-                                    ARRAY_SIZE(action));
+       return ret;
 }
 
 /**