summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Brost <matthew.brost@intel.com>2026-01-17 01:17:26 +0300
committerMatthew Brost <matthew.brost@intel.com>2026-01-17 05:24:51 +0300
commit8d7a9f801ed72c6a2506bb26f2eec1f8245bface (patch)
tree7b0a528e59db368a54fe87890ea5f7186d1d48d2
parenta3866ce7b1221353b795603bb8d0c81d81e60e65 (diff)
downloadlinux-8d7a9f801ed72c6a2506bb26f2eec1f8245bface.tar.xz
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: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Matt Atwood <matthew.s.atwood@intel.com> Tested-by: Stuart Summers <stuart.summers@intel.com> Link: https://patch.msgid.link/20260116221731.868657-7-matthew.brost@intel.com
-rw-r--r--drivers/gpu/drm/xe/xe_tlb_inval.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_tlb_inval.c b/drivers/gpu/drm/xe/xe_tlb_inval.c
index e837888367c4..21fef337f29c 100644
--- a/drivers/gpu/drm/xe/xe_tlb_inval.c
+++ b/drivers/gpu/drm/xe/xe_tlb_inval.c
@@ -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);