]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Use WRITE_ONCE for range->tile_invalidated update
authorMatthew Brost <matthew.brost@intel.com>
Wed, 4 Jun 2025 23:47:12 +0000 (16:47 -0700)
committerMatthew Brost <matthew.brost@intel.com>
Thu, 12 Jun 2025 17:43:52 +0000 (10:43 -0700)
Updating range->tile_invalidated should be done with WRITE_ONCE to pair
with READ_ONCE in opportunistic checks.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Maarten Lankhrost <maarten.lankhorst@linux.intel.com>
Link: https://lore.kernel.org/r/20250604234712.2441130-1-matthew.brost@intel.com
drivers/gpu/drm/xe/xe_svm.c

index 5f5477d81688f637c34ca21f064e3e89d94aaeec..13abc60490416abb1b5e0ab1a9e95da37ccc076f 100644 (file)
@@ -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)) &&