if (err)
                return;
 
+       spin_lock(>->global_invl_lock);
        xe_mmio_write32(gt, XE2_GLOBAL_INVAL, 0x1);
 
        if (xe_mmio_wait32(gt, XE2_GLOBAL_INVAL, 0x1, 0x0, 150, NULL, true))
                xe_gt_err_once(gt, "Global invalidation timeout\n");
+       spin_unlock(>->global_invl_lock);
 
        xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 }
 
         */
        spinlock_t mcr_lock;
 
+       /**
+        * @global_invl_lock: protects the register for the duration
+        *    of a global invalidation of l2 cache
+        */
+       spinlock_t global_invl_lock;
+
        /** @wa_active: keep track of active workarounds */
        struct {
                /** @wa_active.gt: bitmap with active GT workarounds */