| From 7ad228b11ec26a820291c9f5a1168d6176580dc1 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Tue, 7 Jan 2014 16:15:36 +0200 |
| Subject: drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init() |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| |
| commit 7ad228b11ec26a820291c9f5a1168d6176580dc1 upstream. |
| |
| When the pipe A force quirk is applied the code will attempt to grab |
| a crtc mutex during intel_modeset_setup_hw_state(). If we're already |
| holding all crtc mutexes this will obviously deadlock every time. |
| |
| So instead of using drm_modeset_lock_all() just grab the |
| mode_config.mutex. This is enough to avoid the unlocked mutex warnings |
| from certain lower level functions. |
| |
| The regression was introduced in: |
| |
| commit 027476642811f8559cbe00ef6cc54db230e48a20 |
| Author: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Date: Mon Dec 2 11:08:06 2013 +0200 |
| |
| drm/i915: Take modeset locks around intel_modeset_setup_hw_state() |
| |
| Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| [danvet: Add cc: stable since the offending commit has that, too.] |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -10592,9 +10592,9 @@ void intel_modeset_gem_init(struct drm_d |
| |
| intel_setup_overlay(dev); |
| |
| - drm_modeset_lock_all(dev); |
| + mutex_lock(&dev->mode_config.mutex); |
| intel_modeset_setup_hw_state(dev, false); |
| - drm_modeset_unlock_all(dev); |
| + mutex_unlock(&dev->mode_config.mutex); |
| } |
| |
| void intel_modeset_cleanup(struct drm_device *dev) |