[Intel-gfx] [PATCH 2/7] drm/i915: Remove DRIVER_MODESET checks from suspend/resume code
Rodrigo Vivi
rodrigo.vivi at gmail.com
Thu Feb 26 17:06:22 PST 2015
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
On Mon, Feb 23, 2015 at 3:03 AM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> UMS is dead, yay!
>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 113 ++++++++++++++++++----------------------
> 1 file changed, 52 insertions(+), 61 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index ba6862f5b6b2..c1a5377caff0 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -574,6 +574,7 @@ static int i915_drm_suspend(struct drm_device *dev)
> struct drm_i915_private *dev_priv = dev->dev_private;
> struct drm_crtc *crtc;
> pci_power_t opregion_target_state;
> + int error;
>
> /* ignore lid events during suspend */
> mutex_lock(&dev_priv->modeset_restore_lock);
> @@ -588,37 +589,32 @@ static int i915_drm_suspend(struct drm_device *dev)
>
> pci_save_state(dev->pdev);
>
> - /* If KMS is active, we do the leavevt stuff here */
> - if (drm_core_check_feature(dev, DRIVER_MODESET)) {
> - int error;
> -
> - error = i915_gem_suspend(dev);
> - if (error) {
> - dev_err(&dev->pdev->dev,
> - "GEM idle failed, resume might fail\n");
> - return error;
> - }
> + error = i915_gem_suspend(dev);
> + if (error) {
> + dev_err(&dev->pdev->dev,
> + "GEM idle failed, resume might fail\n");
> + return error;
> + }
>
> - intel_suspend_gt_powersave(dev);
> + intel_suspend_gt_powersave(dev);
>
> - /*
> - * Disable CRTCs directly since we want to preserve sw state
> - * for _thaw. Also, power gate the CRTC power wells.
> - */
> - drm_modeset_lock_all(dev);
> - for_each_crtc(dev, crtc)
> - intel_crtc_control(crtc, false);
> - drm_modeset_unlock_all(dev);
> + /*
> + * Disable CRTCs directly since we want to preserve sw state
> + * for _thaw. Also, power gate the CRTC power wells.
> + */
> + drm_modeset_lock_all(dev);
> + for_each_crtc(dev, crtc)
> + intel_crtc_control(crtc, false);
> + drm_modeset_unlock_all(dev);
>
> - intel_dp_mst_suspend(dev);
> + intel_dp_mst_suspend(dev);
>
> - intel_runtime_pm_disable_interrupts(dev_priv);
> - intel_hpd_cancel_work(dev_priv);
> + intel_runtime_pm_disable_interrupts(dev_priv);
> + intel_hpd_cancel_work(dev_priv);
>
> - intel_suspend_encoders(dev_priv);
> + intel_suspend_encoders(dev_priv);
>
> - intel_suspend_hw(dev);
> - }
> + intel_suspend_hw(dev);
>
> i915_gem_suspend_gtt_mappings(dev);
>
> @@ -690,53 +686,48 @@ static int i915_drm_resume(struct drm_device *dev)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
>
> - if (drm_core_check_feature(dev, DRIVER_MODESET)) {
> - mutex_lock(&dev->struct_mutex);
> - i915_gem_restore_gtt_mappings(dev);
> - mutex_unlock(&dev->struct_mutex);
> - }
> + mutex_lock(&dev->struct_mutex);
> + i915_gem_restore_gtt_mappings(dev);
> + mutex_unlock(&dev->struct_mutex);
>
> i915_restore_state(dev);
> intel_opregion_setup(dev);
>
> - /* KMS EnterVT equivalent */
> - if (drm_core_check_feature(dev, DRIVER_MODESET)) {
> - intel_init_pch_refclk(dev);
> - drm_mode_config_reset(dev);
> + intel_init_pch_refclk(dev);
> + drm_mode_config_reset(dev);
>
> - mutex_lock(&dev->struct_mutex);
> - if (i915_gem_init_hw(dev)) {
> - DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
> - atomic_set_mask(I915_WEDGED, &dev_priv->gpu_error.reset_counter);
> - }
> - mutex_unlock(&dev->struct_mutex);
> + mutex_lock(&dev->struct_mutex);
> + if (i915_gem_init_hw(dev)) {
> + DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
> + atomic_set_mask(I915_WEDGED, &dev_priv->gpu_error.reset_counter);
> + }
> + mutex_unlock(&dev->struct_mutex);
>
> - /* We need working interrupts for modeset enabling ... */
> - intel_runtime_pm_enable_interrupts(dev_priv);
> + /* We need working interrupts for modeset enabling ... */
> + intel_runtime_pm_enable_interrupts(dev_priv);
>
> - intel_modeset_init_hw(dev);
> + intel_modeset_init_hw(dev);
>
> - spin_lock_irq(&dev_priv->irq_lock);
> - if (dev_priv->display.hpd_irq_setup)
> - dev_priv->display.hpd_irq_setup(dev);
> - spin_unlock_irq(&dev_priv->irq_lock);
> + spin_lock_irq(&dev_priv->irq_lock);
> + if (dev_priv->display.hpd_irq_setup)
> + dev_priv->display.hpd_irq_setup(dev);
> + spin_unlock_irq(&dev_priv->irq_lock);
>
> - drm_modeset_lock_all(dev);
> - intel_modeset_setup_hw_state(dev, true);
> - drm_modeset_unlock_all(dev);
> + drm_modeset_lock_all(dev);
> + intel_modeset_setup_hw_state(dev, true);
> + drm_modeset_unlock_all(dev);
>
> - intel_dp_mst_resume(dev);
> + intel_dp_mst_resume(dev);
>
> - /*
> - * ... but also need to make sure that hotplug processing
> - * doesn't cause havoc. Like in the driver load code we don't
> - * bother with the tiny race here where we might loose hotplug
> - * notifications.
> - * */
> - intel_hpd_init(dev_priv);
> - /* Config may have changed between suspend and resume */
> - drm_helper_hpd_irq_event(dev);
> - }
> + /*
> + * ... but also need to make sure that hotplug processing
> + * doesn't cause havoc. Like in the driver load code we don't
> + * bother with the tiny race here where we might loose hotplug
> + * notifications.
> + * */
> + intel_hpd_init(dev_priv);
> + /* Config may have changed between suspend and resume */
> + drm_helper_hpd_irq_event(dev);
>
> intel_opregion_init(dev);
>
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
More information about the Intel-gfx
mailing list