From 0fccfb635ec35850e6c0c9335a7a7fd8a4440e61 Mon Sep 17 00:00:00 2001 From: Matthew Brost Date: Wed, 4 Jun 2025 16:47:12 -0700 Subject: [PATCH] drm/xe: Use WRITE_ONCE for range->tile_invalidated update Updating range->tile_invalidated should be done with WRITE_ONCE to pair with READ_ONCE in opportunistic checks. Signed-off-by: Matthew Brost Reviewed-by: Maarten Lankhrost Link: https://lore.kernel.org/r/20250604234712.2441130-1-matthew.brost@intel.com --- drivers/gpu/drm/xe/xe_svm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c index 5f5477d81688f..13abc60490416 100644 --- a/drivers/gpu/drm/xe/xe_svm.c +++ b/drivers/gpu/drm/xe/xe_svm.c @@ -141,7 +141,9 @@ xe_svm_range_notifier_event_begin(struct xe_vm *vm, struct drm_gpusvm_range *r, for_each_tile(tile, xe, id) if (xe_pt_zap_ptes_range(tile, vm, range)) { tile_mask |= BIT(id); - range->tile_invalidated |= BIT(id); + /* Pairs with READ_ONCE in xe_svm_range_is_valid */ + WRITE_ONCE(range->tile_invalidated, + range->tile_invalidated | BIT(id)); } return tile_mask; @@ -644,7 +646,8 @@ static bool xe_svm_range_is_valid(struct xe_svm_range *range, { /* * Advisory only check whether the range currently has a valid mapping, - * READ_ONCE pairs with WRITE_ONCE in xe_pt.c + * READ_ONCE pairs with WRITE_ONCE in xe_pt.c, + * xe_svm_range_notifier_event_begin */ return ((READ_ONCE(range->tile_present) & ~READ_ONCE(range->tile_invalidated)) & BIT(tile->id)) && -- 2.47.2