Skip to content

Commit

Permalink
drm/i915: Don't apply WaVSThreadDispatchOverride on HSW
Browse files Browse the repository at this point in the history
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@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Ville Syrjälä authored and Daniel Vetter committed Jan 29, 2014
1 parent 3aad905 commit e36ea7f
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions drivers/gpu/drm/i915/intel_pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -4658,7 +4658,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.
Expand All @@ -4668,10 +4668,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);
}

Expand Down Expand Up @@ -4782,7 +4778,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,
Expand Down

0 comments on commit e36ea7f

Please sign in to comment.