From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH] drm/i915: unlock mutex before intel_modeset_init_hw Date: Fri, 18 May 2012 17:57:13 -0300 Message-ID: <1337374633-4438-1-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-gg0-f177.google.com (mail-gg0-f177.google.com [209.85.161.177]) by gabe.freedesktop.org (Postfix) with ESMTP id AE9BC9E74C for ; Fri, 18 May 2012 13:57:06 -0700 (PDT) Received: by ggcs5 with SMTP id s5so3791321ggc.36 for ; Fri, 18 May 2012 13:57:06 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org From: Paulo Zanoni 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 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 Signed-off-by: Paulo Zanoni --- 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