mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
drm/xe: Cancel pending TLB inval workers on teardown
Add a new _fini() routine on the GT TLB invalidation
side to handle this worker cleanup on driver teardown.
v2: Move the TLB teardown to the gt fini() routine called during
gt_init rather than in gt_alloc. This way the GT structure stays
alive for while we reset the TLB state.
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20250826182911.392550-3-stuart.summers@intel.com
This commit is contained in:
parent
ce5059bf85
commit
76186a253a
|
|
@ -603,6 +603,8 @@ static void xe_gt_fini(void *arg)
|
|||
struct xe_gt *gt = arg;
|
||||
int i;
|
||||
|
||||
xe_gt_tlb_invalidation_fini(gt);
|
||||
|
||||
for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
|
||||
xe_hw_fence_irq_finish(>->fence_irq[i]);
|
||||
|
||||
|
|
|
|||
|
|
@ -188,6 +188,18 @@ void xe_gt_tlb_invalidation_reset(struct xe_gt *gt)
|
|||
mutex_unlock(>->tlb_invalidation.seqno_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* xe_gt_tlb_invalidation_fini - Clean up GT TLB invalidation state
|
||||
*
|
||||
* Cancel pending fence workers and clean up any additional
|
||||
* GT TLB invalidation state.
|
||||
*/
|
||||
void xe_gt_tlb_invalidation_fini(struct xe_gt *gt)
|
||||
{
|
||||
xe_gt_tlb_invalidation_reset(gt);
|
||||
}
|
||||
|
||||
static bool tlb_invalidation_seqno_past(struct xe_gt *gt, int seqno)
|
||||
{
|
||||
int seqno_recv = READ_ONCE(gt->tlb_invalidation.seqno_recv);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ struct xe_vm;
|
|||
struct xe_vma;
|
||||
|
||||
int xe_gt_tlb_invalidation_init_early(struct xe_gt *gt);
|
||||
void xe_gt_tlb_invalidation_fini(struct xe_gt *gt);
|
||||
|
||||
void xe_gt_tlb_invalidation_reset(struct xe_gt *gt);
|
||||
int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user