struct drm_i915_private *dev_priv = dev->dev_private;
        u32 pp;
 
+       WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
+
        if (!intel_dp->want_panel_vdd && ironlake_edp_have_panel_vdd(intel_dp)) {
                pp = ironlake_get_pp_control(dev_priv);
                pp &= ~EDP_FORCE_VDD;
 
        struct drm_mode_config *config = &dev->mode_config;
        struct drm_plane *plane;
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
 
        ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper);
        if (ret)
        list_for_each_entry(plane, &config->plane_list, head)
                plane->funcs->disable_plane(plane);
 
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 }
 
 
        dev_priv->modeset_on_lid = 0;
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        intel_modeset_setup_hw_state(dev, true);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 
        return NOTIFY_OK;
 }
 
        }
 
        if (!(put_image_rec->flags & I915_OVERLAY_ENABLE)) {
-               mutex_lock(&dev->mode_config.mutex);
+               drm_modeset_lock_all(dev);
                mutex_lock(&dev->struct_mutex);
 
                ret = intel_overlay_switch_off(overlay);
 
                mutex_unlock(&dev->struct_mutex);
-               mutex_unlock(&dev->mode_config.mutex);
+               drm_modeset_unlock_all(dev);
 
                return ret;
        }
                goto out_free;
        }
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        mutex_lock(&dev->struct_mutex);
 
        if (new_bo->tiling_mode) {
                goto out_unlock;
 
        mutex_unlock(&dev->struct_mutex);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 
        kfree(params);
 
 
 out_unlock:
        mutex_unlock(&dev->struct_mutex);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
        drm_gem_object_unreference_unlocked(&new_bo->base);
 out_free:
        kfree(params);
                return -ENODEV;
        }
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        mutex_lock(&dev->struct_mutex);
 
        ret = -EINVAL;
        ret = 0;
 out_unlock:
        mutex_unlock(&dev->struct_mutex);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 
        return ret;
 }
 
        if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE))
                return -EINVAL;
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
 
        obj = drm_mode_object_find(dev, set->plane_id, DRM_MODE_OBJECT_PLANE);
        if (!obj) {
        ret = intel_plane->update_colorkey(plane, set);
 
 out_unlock:
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
        return ret;
 }
 
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -ENODEV;
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
 
        obj = drm_mode_object_find(dev, get->plane_id, DRM_MODE_OBJECT_PLANE);
        if (!obj) {
        intel_plane->get_colorkey(plane, get);
 
 out_unlock:
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
        return ret;
 }