瀏覽代碼

drm/i915: Mark the overlay active only if we got ring space

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>
Ville Syrjälä 10 年之前
父節點
當前提交
1c7c4301ee
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/gpu/drm/i915/intel_overlay.c

+ 2 - 2
drivers/gpu/drm/i915/intel_overlay.c

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