All of lore.kernel.org
 help / color / mirror / Atom feed
* [V2] drm/xe: Skip clearing purged page-table BOs
@ 2026-09-07 15:37 Tejas Upadhyay
  2026-09-07 15:46 ` ✓ CI.KUnit: success for drm/xe: Skip clearing purged page-table BOs (rev2) Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Tejas Upadhyay @ 2026-09-07 15:37 UTC (permalink / raw)
  To: intel-xe; +Cc: himal.prasad.ghimiray, matthew.brost, Tejas Upadhyay

VRAM page offlining can clear a page-table BO's vmap before VM teardown
calls xe_pt_clear(). Check for a purged BO under its dma-resv lock before
writing to the mapping.

v2(Sashiko):
- Fix lock ordering

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c | 6 ++++--
 drivers/gpu/drm/xe/xe_vm.c | 8 +++++---
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 5d990c1c3740..a9b9cd7ac2c8 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -236,9 +236,11 @@ void xe_pt_destroy(struct xe_pt *pt, u32 flags, struct llist_head *deferred)
  */
 void xe_pt_clear(struct xe_device *xe, struct xe_pt *pt)
 {
-	struct iosys_map *map = &pt->bo->vmap;
+	struct xe_bo *bo = pt->bo;
 
-	xe_map_memset(xe, map, 0, 0, SZ_4K);
+	xe_bo_assert_held(bo);
+	if (!xe_bo_is_purged(bo))
+		xe_map_memset(xe, &bo->vmap, 0, 0, SZ_4K);
 }
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 9e71567b27cc..e77ff3cf3ca3 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1876,10 +1876,13 @@ static void xe_vm_close(struct xe_vm *vm)
 	bound = drm_dev_enter(&xe->drm, &idx);
 
 	down_write(&vm->lock);
+	xe_vm_lock(vm, false);
+
 	if (xe_vm_in_fault_mode(vm))
 		xe_svm_notifier_lock(vm);
-
 	vm->size = 0;
+	if (xe_vm_in_fault_mode(vm))
+		xe_svm_notifier_unlock(vm);
 
 	if (!((vm->flags & XE_VM_FLAG_MIGRATION))) {
 		struct xe_tile *tile;
@@ -1901,8 +1904,7 @@ static void xe_vm_close(struct xe_vm *vm)
 		}
 	}
 
-	if (xe_vm_in_fault_mode(vm))
-		xe_svm_notifier_unlock(vm);
+	xe_vm_unlock(vm);
 	up_write(&vm->lock);
 
 	if (bound)
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-09-08  3:56 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-07 15:37 [V2] drm/xe: Skip clearing purged page-table BOs Tejas Upadhyay
2026-09-07 15:46 ` ✓ CI.KUnit: success for drm/xe: Skip clearing purged page-table BOs (rev2) Patchwork
2026-09-07 15:51 ` [V2] drm/xe: Skip clearing purged page-table BOs sashiko-bot
2026-09-07 16:45 ` ✓ Xe.CI.BAT: success for drm/xe: Skip clearing purged page-table BOs (rev2) Patchwork
2026-09-07 19:28 ` [V2] drm/xe: Skip clearing purged page-table BOs Ghimiray, Himal Prasad
2026-09-08  3:52   ` Ghimiray, Himal Prasad
2026-09-08  3:55     ` Matthew Brost
2026-09-08  3:56       ` Ghimiray, Himal Prasad
2026-09-07 19:41 ` ✓ Xe.CI.FULL: success for drm/xe: Skip clearing purged page-table BOs (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.