drm/i915/gt: Re-work reset_csb
authorMichael Cheng <michael.cheng@intel.com>
Mon, 21 Mar 2022 22:38:17 +0000 (15:38 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Tue, 22 Mar 2022 17:10:52 +0000 (10:10 -0700)
Use drm_clflush_virt_range instead of directly invoking clflush. This
will prevent compiler errors when building for non-x86 architectures.

v2(Michael Cheng): Remove extra clflush

v3(Michael Cheng): Remove memory barrier since drm_clflush_virt_range
   takes care of it.

v4(Michael Cheng): Get the size of value and not the size of the pointer
   when passing in execlists->csb_write. Thanks to Matt
   Roper for pointing this out.

Signed-off-by: Michael Cheng <michael.cheng@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220321223819.72833-4-michael.cheng@intel.com
drivers/gpu/drm/i915/gt/intel_execlists_submission.c

index 436d935..4247fe1 100644 (file)
@@ -2952,9 +2952,8 @@ reset_csb(struct intel_engine_cs *engine, struct i915_request **inactive)
 {
        struct intel_engine_execlists * const execlists = &engine->execlists;
 
-       mb(); /* paranoia: read the CSB pointers from after the reset */
-       clflush(execlists->csb_write);
-       mb();
+       drm_clflush_virt_range(execlists->csb_write,
+                              sizeof(execlists->csb_write[0]));
 
        inactive = process_csb(engine, inactive); /* drain preemption events */