As a w/a for data corruption, we are told to set the preemption vertex count to 0x20 on boot. As it is a counter, once contexts are active we do not expect the value to be retained, so hide it from the wa-list verification. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/gt/intel_workarounds.c | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c index 704ace01e7f5..7628f8463317 100644 --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c @@ -647,6 +647,26 @@ int intel_engine_emit_ctx_wa(struct i915_request *rq) return 0; } +static void +gen8_gt_workarounds_init(struct drm_i915_private *i915, + struct i915_wa_list *wal) +{ + /* WaSetVfGuardbandPreemptionVertexCount:bdw,chv */ + wa_write_masked_or(wal, _MMIO(0x83A4), 0, 0xffff0020); +} + +static void +bdw_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal) +{ + gen8_gt_workarounds_init(i915, wal); +} + +static void +chv_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal) +{ + gen8_gt_workarounds_init(i915, wal); +} + static void gen9_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal) { @@ -907,6 +927,10 @@ gt_init_workarounds(struct drm_i915_private *i915, struct i915_wa_list *wal) bxt_gt_workarounds_init(i915, wal); else if (IS_SKYLAKE(i915)) skl_gt_workarounds_init(i915, wal); + else if (IS_CHERRYVIEW(i915)) + chv_gt_workarounds_init(i915, wal); + else if (IS_BROADWELL(i915)) + bdw_gt_workarounds_init(i915, wal); else if (INTEL_GEN(i915) <= 8) return; else -- 2.22.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx