drm/i915: Mark the overlay active only if we got ring space
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 31 Mar 2015 07:37:24 +0000 (10:37 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 31 Mar 2015 13:32:24 +0000 (15:32 +0200)
After the GPU has wedged we can't turn on the overlay anymore. Only mark
it as active if we succeed in allocating ring space. This prevents a
WARN (previous;y a BUG) during driver unload if we attempted to use the
overlay after the GPU had already wedged.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_overlay.c

index fd9ded771d0152ce2f0814123da875a5000a23a4..b291f1301c93868f8caf253448d8e8cbe46273d4 100644 (file)
@@ -242,14 +242,14 @@ static int intel_overlay_on(struct intel_overlay *overlay)
        int ret;
 
        WARN_ON(overlay->active);
-       overlay->active = true;
-
        WARN_ON(IS_I830(dev) && !(dev_priv->quirks & QUIRK_PIPEA_FORCE));
 
        ret = intel_ring_begin(ring, 4);
        if (ret)
                return ret;
 
+       overlay->active = true;
+
        intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_ON);
        intel_ring_emit(ring, overlay->flip_addr | OFC_UPDATE);
        intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP);