drm/i915/chv: Add new workarounds for chv
authorArun Siluvery <arun.siluvery@linux.intel.com>
Tue, 28 Oct 2014 18:33:14 +0000 (18:33 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 14 Nov 2014 09:29:15 +0000 (10:29 +0100)
+WaForceEnableNonCoherent:chv
+WaHdcDisableFetchWhenMasked:chv

For: VIZ-4090
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_ringbuffer.c

index d43fa0e627f866588eea733f8b0b054c1755205c..97d3479ad92e12f8b38961bf80fa69f32285575f 100644 (file)
@@ -5131,6 +5131,7 @@ enum punit_power_well {
 /* GEN8 chicken */
 #define HDC_CHICKEN0                           0x7300
 #define  HDC_FORCE_NON_COHERENT                        (1<<4)
+#define  HDC_DONOT_FETCH_MEM_WHEN_MASKED       (1<<11)
 #define  HDC_FENCE_DEST_SLM_DISABLE            (1<<14)
 
 /* WaCatErrorRejectionIssue */
index 1df79a952291ad8f5eb8ea27b9a9ea3927f25c23..a09aae70e579da2e42c0ce1d496b344ac8b5cd23 100644 (file)
@@ -793,6 +793,16 @@ static int chv_init_workarounds(struct intel_engine_cs *ring)
                          PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE |
                          STALL_DOP_GATING_DISABLE);
 
+       /* Use Force Non-Coherent whenever executing a 3D context. This is a
+        * workaround for a possible hang in the unlikely event a TLB
+        * invalidation occurs during a PSD flush.
+        */
+       /* WaForceEnableNonCoherent:chv */
+       /* WaHdcDisableFetchWhenMasked:chv */
+       WA_SET_BIT_MASKED(HDC_CHICKEN0,
+                         HDC_FORCE_NON_COHERENT |
+                         HDC_DONOT_FETCH_MEM_WHEN_MASKED);
+
        return 0;
 }