Add the WaDisableEUInstructionShootdown workaround for Ivy Bridge. Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 5 +++++ drivers/gpu/drm/i915/intel_display.c | 9 +++++++++ 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 4f25cd5..9ba7406 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -3039,6 +3039,11 @@ #define GEN7_SQ_CHICKEN_MBCUNIT_CONFIG 0x9030 #define GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB (1<<11) +/* WaDisableEUInstructionShootdown */ +#define GEN7_ROW_CHICKEN_MMIO_TDL 0xE4F0 +#define GEN7_ROW_CHICKEN_MMIO_TDL_GT2 0xF4F0 +#define GEN7_ROW_CHICKEN_DISABLE_EU_INSTR_SHOOTDOWN ((1 << 8) | (1 << 9)) + /* PCH */ /* south display engine interrupt */ diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f7e86b8..1a87574 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -8455,6 +8455,15 @@ static void gen6_init_clock_gating(struct drm_device *dev) I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + /* WaDisableEUInstructionShootdown */ + I915_WRITE(GEN7_ROW_CHICKEN_MMIO_TDL, + I915_READ(GEN7_ROW_CHICKEN_MMIO_TDL) | + GEN7_ROW_CHICKEN_DISABLE_EU_INSTR_SHOOTDOWN); + + I915_WRITE(GEN7_ROW_CHICKEN_MMIO_TDL_GT2, + I915_READ(GEN7_ROW_CHICKEN_MMIO_TDL_GT2) | + GEN7_ROW_CHICKEN_DISABLE_EU_INSTR_SHOOTDOWN); + for_each_pipe(pipe) { I915_WRITE(DSPCNTR(pipe), I915_READ(DSPCNTR(pipe)) | -- 1.7.8.1