i915_drm_thaw was not locking the mode_config lock when calling drm_helper_resume_force_mode. When there were multiple wake sources, this caused FDI training failure on SNB which in turn corrupted the display.
Signed-off-by: Sean Paul seanpaul@chromium.org --- drivers/gpu/drm/i915/i915_drv.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 8e2c52e..1c554fd 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -535,7 +535,9 @@ static int i915_drm_thaw(struct drm_device *dev) drm_irq_install(dev);
/* Resume the modeset for every activated CRTC */ + mutex_lock(&dev->mode_config.mutex); drm_helper_resume_force_mode(dev); + mutex_unlock(&dev->mode_config.mutex);
if (IS_IRONLAKE_M(dev)) ironlake_enable_rc6(dev);
On Fri, 23 Mar 2012 08:52:58 -0400, Sean Paul seanpaul@chromium.org wrote:
i915_drm_thaw was not locking the mode_config lock when calling drm_helper_resume_force_mode. When there were multiple wake sources, this caused FDI training failure on SNB which in turn corrupted the display.
Signed-off-by: Sean Paul seanpaul@chromium.org
Reviewed-by: Chris Wilson chris@chris-wilson.co.uk Cc: stable@kernel.org -Chris
dri-devel@lists.freedesktop.org