drm/i915/bdw: Do not initialize PPGTT in the legacy way for execlists
authorThomas Daniel <thomas.daniel@intel.com>
Wed, 20 Aug 2014 15:24:50 +0000 (16:24 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 3 Sep 2014 09:04:13 +0000 (11:04 +0200)
A pending commit removes synchronous mode from switch_mm.  This breaks
execlists because switch_mm will always try to write to the legacy ring
buffer.

Return immediately from i915_ppgtt_init_gw in execlists mode.
No longer check for execlists mode in gen8_ppgtt_enable() because this
will no longer be called in execlists mode.

Signed-off-by: Thomas Daniel <thomas.daniel@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_gtt.c

index 5b0b07988800794c318bece987bff9e5900e303a..6f410cfb051000fb062d1578a5077f7557cbff6e 100644 (file)
@@ -777,12 +777,6 @@ static void gen8_ppgtt_enable(struct drm_device *dev)
        struct intel_engine_cs *ring;
        int j;
 
-       /* In the case of execlists, PPGTT is enabled by the context descriptor
-        * and the PDPs are contained within the context itself.  We don't
-        * need to do anything here. */
-       if (i915.enable_execlists)
-               return;
-
        for_each_ring(ring, dev_priv, j) {
                I915_WRITE(RING_MODE_GEN7(ring),
                           _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE));
@@ -1126,6 +1120,12 @@ int i915_ppgtt_init_hw(struct drm_device *dev)
        struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
        int i, ret = 0;
 
+       /* In the case of execlists, PPGTT is enabled by the context descriptor
+        * and the PDPs are contained within the context itself.  We don't
+        * need to do anything here. */
+       if (i915.enable_execlists)
+               return 0;
+
        if (!USES_PPGTT(dev))
                return 0;