]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/i915/execlists: Add a paranoid flush of the CSB pointers upon reset
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 12 Sep 2019 09:29:32 +0000 (10:29 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 12 Sep 2019 11:59:45 +0000 (12:59 +0100)
After a GPU reset, we need to drain all the CS events so that we have an
accurate picture of the execlists state at the time of the reset. Be
paranoid and force a read of the CSB write pointer from memory.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190912092933.4729-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c

index dcdf7cf66e7eaca6e2e5537a0f2d19822f85f662..dbc90da2341abf47a2951e98f90e2bef34b19e42 100644 (file)
@@ -2359,6 +2359,10 @@ static void __execlists_reset(struct intel_engine_cs *engine, bool stalled)
        struct i915_request *rq;
        u32 *regs;
 
+       mb(); /* paranoia: read the CSB pointers from after the reset */
+       clflush(execlists->csb_write);
+       mb();
+
        process_csb(engine); /* drain preemption events */
 
        /* Following the reset, we need to reload the CSB read/write pointers */