[PATCH 2/9] drm/xe: Stop the TLB fence timer on driver teardown

Matthew Brost matthew.brost at intel.com
Wed Aug 13 21:19:20 UTC 2025


On Wed, Aug 13, 2025 at 07:47:59PM +0000, stuartsummers wrote:
> There is a small window of time during the driver teardown where
> the TLB invalidation fence->gt is set to NULL but an invalidation
> worker is still alive. This won't cause an issue currently because
> the tlb_invalidation structure itself is still present. However as
> part of a future refactor, we are looking to split that structure
> out. To be safe, go ahead and cancel any outstanding TLB invalidation
> fence worker thread on _fini() since at that time we are already
> tearing down the driverworker thread on _fini() since at that time we
> are already tearing down the driver and don't need to continue
> monitoring this.
> 
> Signed-off-by: stuartsummers <stuart.summers at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> index 75854b963d66..08e882433b13 100644
> --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> @@ -44,6 +44,8 @@ static void xe_gt_tlb_invalidation_fence_fini(struct xe_gt_tlb_invalidation_fenc
>  	if (WARN_ON_ONCE(!fence->gt))
>  		return;
>  
> +	cancel_delayed_work(&fence->gt->tlb_invalidation.fence_tdr);

I think cancel_delayed_work_sync is what we want here.

Matt

> +
>  	xe_pm_runtime_put(gt_to_xe(fence->gt));
>  	fence->gt = NULL; /* fini() should be called once */
>  }
> -- 
> 2.34.1
> 


More information about the Intel-xe mailing list