[Intel-gfx] [PATCH 24/28] drm/i915: Don't apply WaVSThreadDispatchOverride on HSW

Rodrigo Vivi rodrigo.vivi at gmail.com
Wed Jan 29 14:06:22 CET 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>

On Wed, Jan 22, 2014 at 5:33 PM,  <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> BSpec states that the thread override values set by
> gen7_setup_fixed_func_scheduler() are invalid for HSW. So let's not
> muck around with them.
>
> Since gen7_setup_fixed_func_scheduler() now has two totally independent
> parts, one for IVB and one for HSW, move the HSW part directly into
> haswell_init_clock_gating().
>
> Note tht there's another workaround by the name of
> WaHSWVSRefCountFullforceMissDisable which basically claims that later
> steppings don't need the fix, but since WaVSRefCountFullforceMissDisable
> is listed to be needed for all steppings play it safe and keep applying
> the workaround.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 766bc8a..376a52e 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4655,7 +4655,7 @@ static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)
>         uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE);
>
>         /*
> -        * WaVSThreadDispatchOverride:ivb,hsw
> +        * WaVSThreadDispatchOverride:ivb
>          *
>          * This actually overrides the dispatch
>          * mode for all thread types.
> @@ -4665,10 +4665,6 @@ static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)
>         reg |= GEN7_FF_VS_SCHED_HW;
>         reg |= GEN7_FF_DS_SCHED_HW;
>
> -       /* WaVSRefCountFullforceMissDisable:hsw */
> -       if (IS_HASWELL(dev_priv->dev))
> -               reg &= ~GEN7_FF_VS_REF_CNT_FFME;
> -
>         I915_WRITE(GEN7_FF_THREAD_MODE, reg);
>  }
>
> @@ -4779,7 +4775,9 @@ static void haswell_init_clock_gating(struct drm_device *dev)
>                         I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |
>                         GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB);
>
> -       gen7_setup_fixed_func_scheduler(dev_priv);
> +       /* WaVSRefCountFullforceMissDisable:hsw */
> +       I915_WRITE(GEN7_FF_THREAD_MODE,
> +                  I915_READ(GEN7_FF_THREAD_MODE) & ~GEN7_FF_VS_REF_CNT_FFME);
>
>         /* WaDisable4x2SubspanOptimization:hsw */
>         I915_WRITE(CACHE_MODE_1,
> --
> 1.8.3.2
>
> _______________________________________________
> 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