diff --git a/sys/dev/drm2/i915/i915_drv.c b/sys/dev/drm2/i915/i915_drv.c index 2ebb9f6..03a60c5 100644 --- a/sys/dev/drm2/i915/i915_drv.c +++ b/sys/dev/drm2/i915/i915_drv.c @@ -294,9 +294,10 @@ static int i915_drm_thaw(struct drm_device *dev) struct drm_i915_private *dev_priv = dev->dev_private; int error = 0; - DRM_LOCK(dev); if (drm_core_check_feature(dev, DRIVER_MODESET)) { + DRM_LOCK(dev); i915_gem_restore_gtt_mappings(dev); + DRM_UNLOCK(dev); } i915_restore_state(dev); @@ -304,35 +305,29 @@ static int i915_drm_thaw(struct drm_device *dev) /* KMS EnterVT equivalent */ if (drm_core_check_feature(dev, DRIVER_MODESET)) { + DRM_LOCK(dev); dev_priv->mm.suspended = 0; error = i915_gem_init_hw(dev); + DRM_UNLOCK(dev); if (HAS_PCH_SPLIT(dev)) ironlake_init_pch_refclk(dev); - DRM_UNLOCK(dev); - sx_xlock(&dev->mode_config.mutex); drm_mode_config_reset(dev); - sx_xunlock(&dev->mode_config.mutex); drm_irq_install(dev); - sx_xlock(&dev->mode_config.mutex); /* Resume the modeset for every activated CRTC */ drm_helper_resume_force_mode(dev); - sx_xunlock(&dev->mode_config.mutex); if (IS_IRONLAKE_M(dev)) ironlake_enable_rc6(dev); - DRM_LOCK(dev); } intel_opregion_init(dev); dev_priv->modeset_on_lid = 0; - DRM_UNLOCK(dev); - return error; } @@ -792,9 +787,7 @@ i915_reset(struct drm_device *dev, u8 flags) DRM_UNLOCK(dev); if (need_display) { - sx_xlock(&dev->mode_config.mutex); drm_helper_resume_force_mode(dev); - sx_xunlock(&dev->mode_config.mutex); } return (0);