Commit 8d7a9f80 authored by Matthew Brost's avatar Matthew Brost
Browse files

drm/xe: Taint TLB invalidation seqno lock with GFP_KERNEL



Taint TLB invalidation seqno lock with GFP_KERNEL as TLB invalidations
can be in the path of reclaim (e.g., MMU notifiers).

Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarMatt Atwood <matthew.s.atwood@intel.com>
Tested-by: default avatarStuart Summers <stuart.summers@intel.com>
Link: https://patch.msgid.link/20260116221731.868657-7-matthew.brost@intel.com
parent a3866ce7
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -111,6 +111,16 @@ static void tlb_inval_fini(struct drm_device *drm, void *arg)
	xe_tlb_inval_reset(tlb_inval);
}

static void primelockdep(struct xe_tlb_inval *tlb_inval)
{
	if (!IS_ENABLED(CONFIG_LOCKDEP))
		return;

	fs_reclaim_acquire(GFP_KERNEL);
	might_lock(&tlb_inval->seqno_lock);
	fs_reclaim_release(GFP_KERNEL);
}

/**
 * xe_gt_tlb_inval_init - Initialize TLB invalidation state
 * @gt: GT structure
@@ -137,6 +147,8 @@ int xe_gt_tlb_inval_init_early(struct xe_gt *gt)
	if (err)
		return err;

	primelockdep(tlb_inval);

	tlb_inval->job_wq = drmm_alloc_ordered_workqueue(&xe->drm,
							 "gt-tbl-inval-job-wq",
							 WQ_MEM_RECLAIM);