[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