|
@@ -1387,10 +1387,14 @@ static void gen3_stop_engine(struct intel_engine_cs *engine)
|
|
|
DRM_DEBUG_DRIVER("%s: timed out on STOP_RING\n",
|
|
|
engine->name);
|
|
|
|
|
|
- I915_WRITE_FW(RING_CTL(base), 0);
|
|
|
+ I915_WRITE_FW(RING_HEAD(base), I915_READ_FW(RING_TAIL(base)));
|
|
|
+
|
|
|
I915_WRITE_FW(RING_HEAD(base), 0);
|
|
|
I915_WRITE_FW(RING_TAIL(base), 0);
|
|
|
|
|
|
+ /* The ring must be empty before it is disabled */
|
|
|
+ I915_WRITE_FW(RING_CTL(base), 0);
|
|
|
+
|
|
|
/* Check acts as a post */
|
|
|
if (I915_READ_FW(RING_HEAD(base)) != 0)
|
|
|
DRM_DEBUG_DRIVER("%s: ring head not parked\n",
|