[RFC 1/7] drm/xe/vm: Add CPU_AUTORESET_ACTIVE VMA flag

Arvind Yadav
2026-02-19T09:13:30Z

Add XE_VMA_CPU_AUTORESET_ACTIVE to track whether a
MADVISE_AUTORESET CPU address mirror VMA has been GPU-touched.

The flag is set at bind time and cleared on first GPU fault,
creating a one-way transition from CPU-only to GPU-touched state.

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Arvind Yadav <arvind.yadav@intel.com>
---
drivers/gpu/drm/xe/xe_vm.h | 5 +++++
drivers/gpu/drm/xe/xe_vm_types.h | 8 ++++++++
2 files changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 288115c7844a..7bf400f068ce 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -174,6 +174,11 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
!xe_vma_is_cpu_addr_mirror(vma);
}

+static inline bool xe_vma_has_cpu_autoreset_active(struct xe_vma *vma)
+{
+ return vma->gpuva.flags & XE_VMA_CPU_AUTORESET_ACTIVE;
+}
+
struct xe_vma *xe_vm_find_vma_by_addr(struct xe_vm *vm, u64 page_addr);

int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool is_atomic);
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 43203e90ee3e..29ff63503d4c 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -50,6 +50,14 @@ struct xe_vm_pgtable_update_op;
#define XE_VMA_DUMPABLE (DRM_GPUVA_USERBITS << 8)
#define XE_VMA_SYSTEM_ALLOCATOR (DRM_GPUVA_USERBITS << 9)
#define XE_VMA_MADV_AUTORESET (DRM_GPUVA_USERBITS << 10)
+/*
+ * CPU-only runtime state for MADV_AUTORESET VMAs.
+ *
+ * Set at bind time and cleared before the first GPU PTEs are installed.
+ * Used to distinguish CPU-only VMAs from GPU-touched ones when handling
+ * munmap events.
+ */
+#define XE_VMA_CPU_AUTORESET_ACTIVE (DRM_GPUVA_USERBITS << 11)

/**
* struct xe_vma_mem_attr - memory attributes associated with vma
--
2.43.0