diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 61e00bf9e87f..cca7792f26d5 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -1109,6 +1109,11 @@ static int skl_init_workarounds(struct intel_engine_cs *engine) | |||
1109 | /* WaDisableGafsUnitClkGating:skl */ | 1109 | /* WaDisableGafsUnitClkGating:skl */ |
1110 | WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE); | 1110 | WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE); |
1111 | 1111 | ||
1112 | /* WaInPlaceDecompressionHang:skl */ | ||
1113 | if (IS_SKL_REVID(dev_priv, SKL_REVID_H0, REVID_FOREVER)) | ||
1114 | WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA, | ||
1115 | GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS); | ||
1116 | |||
1112 | /* WaDisableLSQCROPERFforOCL:skl */ | 1117 | /* WaDisableLSQCROPERFforOCL:skl */ |
1113 | ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4); | 1118 | ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4); |
1114 | if (ret) | 1119 | if (ret) |
@@ -1178,6 +1183,11 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine) | |||
1178 | WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2, | 1183 | WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2, |
1179 | GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION); | 1184 | GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION); |
1180 | 1185 | ||
1186 | /* WaInPlaceDecompressionHang:bxt */ | ||
1187 | if (IS_BXT_REVID(dev_priv, BXT_REVID_C0, REVID_FOREVER)) | ||
1188 | WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA, | ||
1189 | GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS); | ||
1190 | |||
1181 | return 0; | 1191 | return 0; |
1182 | } | 1192 | } |
1183 | 1193 | ||
@@ -1225,6 +1235,10 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine) | |||
1225 | GEN7_HALF_SLICE_CHICKEN1, | 1235 | GEN7_HALF_SLICE_CHICKEN1, |
1226 | GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE); | 1236 | GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE); |
1227 | 1237 | ||
1238 | /* WaInPlaceDecompressionHang:kbl */ | ||
1239 | WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA, | ||
1240 | GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS); | ||
1241 | |||
1228 | /* WaDisableLSQCROPERFforOCL:kbl */ | 1242 | /* WaDisableLSQCROPERFforOCL:kbl */ |
1229 | ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4); | 1243 | ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4); |
1230 | if (ret) | 1244 | if (ret) |
@@ -1305,7 +1319,8 @@ static int init_render_ring(struct intel_engine_cs *engine) | |||
1305 | if (IS_GEN(dev_priv, 6, 7)) | 1319 | if (IS_GEN(dev_priv, 6, 7)) |
1306 | I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); | 1320 | I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); |
1307 | 1321 | ||
1308 | I915_WRITE_IMR(engine, ~engine->irq_keep_mask); | 1322 | if (INTEL_INFO(dev_priv)->gen >= 6) |
1323 | I915_WRITE_IMR(engine, ~engine->irq_keep_mask); | ||
1309 | 1324 | ||
1310 | return init_workarounds_ring(engine); | 1325 | return init_workarounds_ring(engine); |
1311 | } | 1326 | } |