[Intel-gfx] [PATCH] drm/i915/bdw: don't try to check IPS state on BDW v2

Paulo Zanoni przanoni at gmail.com
Wed Jan 8 15:00:56 CET 2014


2014/1/7 Jesse Barnes <jbarnes at virtuousgeek.org>:
> According to Art, we don't have a way to read back the state reliably at
> runtime, through the control reg or the mailbox, at least not without risking
> disabling it again.  So drop the readout and checking on BDW.
>
> v2: drop TODO comment (Paulo)
>     move POSTING_READ of control reg under HSW branch in disable (Paulo)
>     always report IPS as enabled on BDW (Paulo)
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=71906
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c  |  2 +-
>  drivers/gpu/drm/i915/intel_display.c | 19 +++++++++++--------
>  2 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 7252f30..75a489e 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1361,7 +1361,7 @@ static int i915_ips_status(struct seq_file *m, void *unused)
>                 return 0;
>         }
>
> -       if (I915_READ(IPS_CTL) & IPS_ENABLE)
> +       if (IS_BROADWELL(dev) || I915_READ(IPS_CTL) & IPS_ENABLE)

<bikeshedding> I'm not really sure if we need to print "enabled"
here... It's more like "enabled and disabled". </bikeshedding>

Anyway, your patch seems to fix the bug, so: Reviewed-by: Paulo Zanoni
<paulo.r.zanoni at intel.com>

>                 seq_puts(m, "enabled\n");
>         else
>                 seq_puts(m, "disabled\n");
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4d1357a..74137d5 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3431,9 +3431,8 @@ void hsw_enable_ips(struct intel_crtc *crtc)
>                 mutex_unlock(&dev_priv->rps.hw_lock);
>                 /* Quoting Art Runyan: "its not safe to expect any particular
>                  * value in IPS_CTL bit 31 after enabling IPS through the
> -                * mailbox." Therefore we need to defer waiting on the state
> -                * change.
> -                * TODO: need to fix this for state checker
> +                * mailbox." Moreover, the mailbox may return a bogus state,
> +                * so we need to just enable it and continue on.
>                  */
>         } else {
>                 I915_WRITE(IPS_CTL, IPS_ENABLE);
> @@ -3460,9 +3459,10 @@ void hsw_disable_ips(struct intel_crtc *crtc)
>                 mutex_lock(&dev_priv->rps.hw_lock);
>                 WARN_ON(sandybridge_pcode_write(dev_priv, DISPLAY_IPS_CONTROL, 0));
>                 mutex_unlock(&dev_priv->rps.hw_lock);
> -       } else
> +       } else {
>                 I915_WRITE(IPS_CTL, 0);
> -       POSTING_READ(IPS_CTL);
> +               POSTING_READ(IPS_CTL);
> +       }
>
>         /* We need to wait for a vblank before we can disable the plane. */
>         intel_wait_for_vblank(dev, crtc->pipe);
> @@ -7004,8 +7004,9 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
>         if (intel_display_power_enabled(dev, pfit_domain))
>                 ironlake_get_pfit_config(crtc, pipe_config);
>
> -       pipe_config->ips_enabled = hsw_crtc_supports_ips(crtc) &&
> -                                  (I915_READ(IPS_CTL) & IPS_ENABLE);
> +       if (IS_HASWELL(dev))
> +               pipe_config->ips_enabled = hsw_crtc_supports_ips(crtc) &&
> +                       (I915_READ(IPS_CTL) & IPS_ENABLE);
>
>         pipe_config->pixel_multiplier = 1;
>
> @@ -9335,7 +9336,9 @@ intel_pipe_config_compare(struct drm_device *dev,
>                 PIPE_CONF_CHECK_I(pch_pfit.size);
>         }
>
> -       PIPE_CONF_CHECK_I(ips_enabled);
> +       /* BDW+ don't expose a synchronous way to read the state */
> +       if (IS_HASWELL(dev))
> +               PIPE_CONF_CHECK_I(ips_enabled);
>
>         PIPE_CONF_CHECK_I(double_wide);
>
> --
> 1.8.3.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Paulo Zanoni



More information about the Intel-gfx mailing list