drm/i915/bdw: Implement Wa4x4STCOptimizationDisable:bdw
authorDamien Lespiau <damien.lespiau@intel.com>
Wed, 26 Mar 2014 18:41:51 +0000 (18:41 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 28 Mar 2014 17:33:13 +0000 (18:33 +0100)
Not implementing this W/A can lead to hangs.

Cc: Ben Widawsky <benjamin.widawsky@intel.com>
Cc: Rafael Barbalho <rafael.barbalho@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_pm.c

index 74f7d853eb581ea91974c5bdc88337c5a10fc814..d90dc20077e3b2090c375243f14c59ee0c8b7f90 100644 (file)
@@ -973,7 +973,8 @@ enum punit_power_well {
 #define CACHE_MODE_0_GEN7      0x7000 /* IVB+ */
 #define   HIZ_RAW_STALL_OPT_DISABLE (1<<2)
 #define CACHE_MODE_1           0x7004 /* IVB+ */
-#define   PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6)
+#define   PIXEL_SUBSPAN_COLLECT_OPT_DISABLE    (1<<6)
+#define   GEN8_4x4_STC_OPTIMIZATION_DISABLE    (1<<6)
 
 #define GEN6_BLITTER_ECOSKPD   0x221d0
 #define   GEN6_BLITTER_LOCK_SHIFT                      16
index c1e2d75f4c40be445b68f76a1320ac76d20e6f80..b66a43b90d1b5dc4321fb48a5e6844873179c37c 100644 (file)
@@ -4882,6 +4882,10 @@ static void gen8_init_clock_gating(struct drm_device *dev)
        /* WaDisableSDEUnitClockGating:bdw */
        I915_WRITE(GEN8_UCGCTL6, I915_READ(GEN8_UCGCTL6) |
                   GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
+
+       /* Wa4x4STCOptimizationDisable:bdw */
+       I915_WRITE(CACHE_MODE_1,
+                  _MASKED_BIT_ENABLE(GEN8_4x4_STC_OPTIMIZATION_DISABLE));
 }
 
 static void haswell_init_clock_gating(struct drm_device *dev)