From: Paulo Zanoni <paulo.r.zanoni at intel.com> Because on IVB, intel_modeset_init_hw calls gen6_enable_rps with locks the mutex. This problem broke suspend on my machine. It was introduced in the following commit: commit 2e1352cf196094f44e73776f41087f4c489ab936 Author: Chris Wilson <chris at chris-wilson.co.uk> Date: Wed May 9 11:56:28 2012 +0100 drm/i915: gen6_enable_rps() wants to be called after ring initialisation This fix was actually suggested by Chris Wilson on a conversation, so the credit goes to him. I just bisected the problem, reported to him and tested his idea. Cc: Chris Wilson <chris at chris-wilson.co.uk> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com> --- drivers/gpu/drm/i915/i915_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 3947804..d3e1948 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -638,9 +638,9 @@ static int i915_drm_thaw(struct drm_device *dev) dev_priv->mm.suspended = 0; error = i915_gem_init_hw(dev); - intel_modeset_init_hw(dev); mutex_unlock(&dev->struct_mutex); + intel_modeset_init_hw(dev); drm_mode_config_reset(dev); drm_irq_install(dev); -- 1.7.9.5