drm/i915: Set up mocs tables before restarting the engines
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 2 Nov 2017 13:14:30 +0000 (13:14 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 3 Nov 2017 10:06:53 +0000 (10:06 +0000)
After a reset, we may immediately begin executing requests on restarting
the engines. Ergo this has to be last step with all re-initialisation
completed beforehand. The mocs setup was after we started executing the
requests; do it earlier!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171102131430.22328-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 9470ba0c1930ebe141c370ec556b8dac8671c834..6a71805be38994b51ddc3c2da746812f6b00b8d0 100644 (file)
@@ -4936,13 +4936,10 @@ int i915_gem_init_hw(struct drm_i915_private *dev_priv)
        if (ret)
                goto out;
 
-       /* Need to do basic initialisation of all rings first: */
-       ret = __i915_gem_restart_engines(dev_priv);
-       if (ret)
-               goto out;
-
        intel_mocs_init_l3cc_table(dev_priv);
 
+       /* Only when the HW is re-initialised, can we replay the requests */
+       ret = __i915_gem_restart_engines(dev_priv);
 out:
        intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
        return ret;