[PATCH 3/7] drm/gpusvm: mark pages as dirty

Matthew Auld matthew.auld at intel.com
Thu Mar 20 17:30:00 UTC 2025


If the memory is going to be accessed by the device, make sure we mark
the pages accordingly such that the kernel knows this. This aligns with
the xe-userptr code.

Signed-off-by: Matthew Auld <matthew.auld at intel.com>
Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
Cc: Matthew Brost <matthew.brost at intel.com>
---
 drivers/gpu/drm/drm_gpusvm.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index 7f1cf5492bba..5b4ecd36dff1 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -1471,6 +1471,7 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
 			pages[i] = page;
 		} else {
 			dma_addr_t addr;
+			unsigned int k;
 
 			if (is_zone_device_page(page) || zdd) {
 				err = -EOPNOTSUPP;
@@ -1489,6 +1490,14 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
 			range->dma_addr[j] = drm_pagemap_device_addr_encode
 				(addr, DRM_INTERCONNECT_SYSTEM, order,
 				 dma_dir);
+
+			for (k = 0; k < 1u << order; k++) {
+				if (!ctx->read_only)
+					set_page_dirty_lock(page);
+
+				mark_page_accessed(page);
+				page++;
+			}
 		}
 		i += 1 << order;
 		num_dma_mapped = i;
-- 
2.48.1



More information about the Intel-xe mailing list