drm/xe: Propagate VM unbind error to invalidation fence
authorMatthew Brost <matthew.brost@intel.com>
Thu, 26 Jan 2023 17:54:20 +0000 (09:54 -0800)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 19 Dec 2023 23:27:47 +0000 (18:27 -0500)
If a VM unbind hits an error, do not issue a TLB invalidation and
propagate the error the invalidation fence.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
drivers/gpu/drm/xe/xe_pt.c

index 3333b413686ebbf8974cbdf96ffddee609b5a96d..4299689fe6a8fbaee05b1f8435376dc175acf53f 100644 (file)
@@ -1496,7 +1496,13 @@ static void invalidation_fence_cb(struct dma_fence *fence,
                container_of(cb, struct invalidation_fence, cb);
 
        trace_xe_gt_tlb_invalidation_fence_cb(&ifence->base);
-       queue_work(system_wq, &ifence->work);
+       if (!ifence->fence->error) {
+               queue_work(system_wq, &ifence->work);
+       } else {
+               ifence->base.base.error = ifence->fence->error;
+               dma_fence_signal(&ifence->base.base);
+               dma_fence_put(&ifence->base.base);
+       }
        dma_fence_put(ifence->fence);
 }