drm/i915: Hold CRTC lock whilst freezing the planes
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 22 May 2014 08:44:40 +0000 (09:44 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 22 May 2014 13:06:35 +0000 (15:06 +0200)
Daniel keeps on ramping up the warning level of the DRM and our display
core to make it complain whenever the locking rules are not followed.
This caught

commit 24576d23976746cb52e7700c4cadbf4bc1bc3472
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Tue Mar 26 09:25:45 2013 -0700

    drm/i915: enable VT switchless resume v3

introducing an unlocked access to the CRTC whilst disabling it for
suspend.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78114
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.c

index d9e06e751523723247623a2b9a26cee31789e3d5..c83c83b74bf4471c19070bde3488549b577e2330 100644 (file)
@@ -532,8 +532,11 @@ static int i915_drm_freeze(struct drm_device *dev)
                 * for _thaw.
                 */
                mutex_lock(&dev->mode_config.mutex);
-               for_each_crtc(dev, crtc)
+               for_each_crtc(dev, crtc) {
+                       mutex_lock(&crtc->mutex);
                        dev_priv->display.crtc_disable(crtc);
+                       mutex_unlock(&crtc->mutex);
+               }
                mutex_unlock(&dev->mode_config.mutex);
 
                intel_modeset_suspend_hw(dev);