All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/23] kbl and gen9 workarounds
@ 2016-05-26 15:29 Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 01/23] drm/i915/kbl: Init " Mika Kuoppala
                   ` (25 more replies)
  0 siblings, 26 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

I noticed that we didn't setup any workarounds for kbl and so
here is a series to get necessities covered on kbl. And while on
it add few to bxt and skl. In the end there are also few fbc
ones I bumped into.

Mika Kuoppala (23):
  drm/i915/kbl: Init gen9 workarounds
  drm/i915/kbl: Add REVID macro
  drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0
  drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent
  drm/i915: Mimic skl with WaForceEnableNonCoherent
  drm/i915/kbl: Add WaEnableGapsTsvCreditFix
  drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0
  drm/i915/kbl: Add WaDisableSDEUnitClockGating
  drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw,skl
  drm/i915/kbl: Add WaDisableLSQCROPERFforOCL
  drm/i915/gen9: Enable must set chicken bits in config0 reg
  drm/i915/kbl: Add WaDisableGamClockGating
  drm/i915/kbl: Add WaDisableDynamicCreditSharing
  drm/i915: Add WaInsertDummyPushConstP for bxt and kbl
  drm/i915/gen9: Add WaDisableSkipCaching
  drm/i915/skl: Add WAC6entrylatency
  drm/i915/kbl: Add WaForGAMHang
  drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl
  drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing
  drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling.
  drm/i915/gen9: Set fbc watermarks disabled
  drm/i915/gen9: Prevent fbc corruption/system hangs with high bw
  drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl

 drivers/gpu/drm/i915/i915_drv.h         |   9 ++
 drivers/gpu/drm/i915/i915_gem_stolen.c  |   6 +-
 drivers/gpu/drm/i915/i915_reg.h         |  20 ++++
 drivers/gpu/drm/i915/intel_lrc.c        |  57 ++++++++++-
 drivers/gpu/drm/i915/intel_mocs.c       |  10 ++
 drivers/gpu/drm/i915/intel_pm.c         |  67 +++++++++++--
 drivers/gpu/drm/i915/intel_ringbuffer.c | 167 +++++++++++++++++++++-----------
 7 files changed, 266 insertions(+), 70 deletions(-)

-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH 01/23] drm/i915/kbl: Init gen9 workarounds
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 02/23] drm/i915/kbl: Add REVID macro Mika Kuoppala
                   ` (24 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Kabylake is part of gen9 family so init the generic gen9
workarounds for it.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 48 ++++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 8d35a3978f9b..f52105531877 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -911,21 +911,21 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	uint32_t tmp;
 	int ret;
 
-	/* WaEnableLbsSlaRetryTimerDecrement:skl */
+	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl */
 	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
 		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);
 
-	/* WaDisableKillLogic:bxt,skl */
+	/* WaDisableKillLogic:bxt,skl,kbl */
 	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
 		   ECOCHK_DIS_TLB);
 
-	/* WaClearFlowControlGpgpuContextSave:skl,bxt */
-	/* WaDisablePartialInstShootdown:skl,bxt */
+	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl */
+	/* WaDisablePartialInstShootdown:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
 			  FLOW_CONTROL_ENABLE |
 			  PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
 
-	/* Syncing dependencies between camera and graphics:skl,bxt */
+	/* Syncing dependencies between camera and graphics:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
 			  GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
 
@@ -947,18 +947,18 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		 */
 	}
 
-	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt */
-	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt */
+	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl */
+	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
 			  GEN9_ENABLE_YV12_BUGFIX |
 			  GEN9_ENABLE_GPGPU_PREEMPTION);
 
-	/* Wa4x4STCOptimizationDisable:skl,bxt */
-	/* WaDisablePartialResolveInVc:skl,bxt */
+	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl */
+	/* WaDisablePartialResolveInVc:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(CACHE_MODE_1, (GEN8_4x4_STC_OPTIMIZATION_DISABLE |
 					 GEN9_PARTIAL_RESOLVE_IN_VC_DISABLE));
 
-	/* WaCcsTlbPrefetchDisable:skl,bxt */
+	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl */
 	WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
 			  GEN9_CCS_TLB_PREFETCH_ENABLE);
 
@@ -975,24 +975,26 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		tmp |= HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE;
 	WA_SET_BIT_MASKED(HDC_CHICKEN0, tmp);
 
-	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt */
-	if (IS_SKYLAKE(dev_priv) || IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0))
+	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
+	if (IS_SKYLAKE(dev_priv) ||
+	    IS_KABYLAKE(dev_priv) ||
+	    IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0))
 		WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
 				  GEN8_SAMPLER_POWER_BYPASS_DIS);
 
-	/* WaDisableSTUnitPowerOptimization:skl,bxt */
+	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
 
-	/* WaOCLCoherentLineFlush:skl,bxt */
+	/* WaOCLCoherentLineFlush:skl,bxt,kbl */
 	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
 				    GEN8_LQSC_FLUSH_COHERENT_LINES));
 
-	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt */
+	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl */
 	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
 	if (ret)
 		return ret;
 
-	/* WaAllowUMDToModifyHDCChicken1:skl,bxt */
+	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_HDC_CHICKEN1);
 	if (ret)
 		return ret;
@@ -1174,6 +1176,17 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
 	return 0;
 }
 
+static int kbl_init_workarounds(struct intel_engine_cs *engine)
+{
+	int ret;
+
+	ret = gen9_init_workarounds(engine);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
 int init_workarounds_ring(struct intel_engine_cs *engine)
 {
 	struct drm_i915_private *dev_priv = engine->i915;
@@ -1195,6 +1208,9 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
 	if (IS_BROXTON(dev_priv))
 		return bxt_init_workarounds(engine);
 
+	if (IS_KABYLAKE(dev_priv))
+		return kbl_init_workarounds(engine);
+
 	return 0;
 }
 
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 02/23] drm/i915/kbl: Add REVID macro
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 01/23] drm/i915/kbl: Init " Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 03/23] drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0 Mika Kuoppala
                   ` (23 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Add REVID macro for kbl to limit wa applicability to particular
revision range.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e4c8e341655c..98cb1f178e3e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2715,6 +2715,12 @@ struct drm_i915_cmd_table {
 
 #define IS_BXT_REVID(p, since, until) (IS_BROXTON(p) && IS_REVID(p, since, until))
 
+#define KBL_REVID_A0		0x0
+#define KBL_REVID_B0		0x1
+
+#define IS_KBL_REVID(p, since, until) \
+	(IS_KABYLAKE(p) && IS_REVID(p, since, until))
+
 /*
  * The genX designation typically refers to the render engine, so render
  * capability related checks should use IS_GEN, while display and other checks
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 03/23] drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 01/23] drm/i915/kbl: Init " Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 02/23] drm/i915/kbl: Add REVID macro Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 04/23] drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent Mika Kuoppala
                   ` (22 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

We need this for kbl a0 boards. Note that this should be also
for bxt A0 but we omit that on purpose as bxt A0's are
out of fashion already.

References: HSD#1912158, HSD#4393097
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_stolen.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index f9253f2b7ba0..e9cd82290408 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -55,8 +55,10 @@ int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *dev_priv,
 		return -ENODEV;
 
 	/* See the comment at the drm_mm_init() call for more about this check.
-	 * WaSkipStolenMemoryFirstPage:bdw,chv (incomplete) */
-	if (IS_GEN8(dev_priv) && start < 4096)
+	 * WaSkipStolenMemoryFirstPage:bdw,chv,kbl (incomplete)
+	 */
+	if (start < 4096 && (IS_GEN8(dev_priv) ||
+			     IS_KBL_REVID(dev_priv, 0, KBL_REVID_A0)))
 		start = 4096;
 
 	mutex_lock(&dev_priv->mm.stolen_lock);
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 04/23] drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (2 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 03/23] drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0 Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 05/23] drm/i915: Mimic skl with WaForceEnableNonCoherent Mika Kuoppala
                   ` (21 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

The revision id range for this workaround has changed. So apply
it to all revids on all gen9.

References: HSD#2134449
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index f52105531877..47557bd34945 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -908,7 +908,6 @@ static int chv_init_workarounds(struct intel_engine_cs *engine)
 static int gen9_init_workarounds(struct intel_engine_cs *engine)
 {
 	struct drm_i915_private *dev_priv = engine->i915;
-	uint32_t tmp;
 	int ret;
 
 	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl */
@@ -968,12 +967,10 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(SLICE_ECO_CHICKEN0,
 				  PIXEL_MASK_CAMMING_DISABLE);
 
-	/* WaForceContextSaveRestoreNonCoherent:skl,bxt */
-	tmp = HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT;
-	if (IS_SKL_REVID(dev_priv, SKL_REVID_F0, REVID_FOREVER) ||
-	    IS_BXT_REVID(dev_priv, BXT_REVID_B0, REVID_FOREVER))
-		tmp |= HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE;
-	WA_SET_BIT_MASKED(HDC_CHICKEN0, tmp);
+	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl */
+	WA_SET_BIT_MASKED(HDC_CHICKEN0,
+			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
+			  HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE);
 
 	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
 	if (IS_SKYLAKE(dev_priv) ||
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 05/23] drm/i915: Mimic skl with WaForceEnableNonCoherent
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (3 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 04/23] drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix Mika Kuoppala
                   ` (20 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Past evidence with system hangs and hsds tie
WaForceEnableNonCoherent and WaDisableHDCInvalidation to
WaForceContextSaveRestoreNonCoherent. Documentation
states that WaForceContextSaveRestoreNonCoherent would
not be needed on skl past E0 but evidence proved otherwise. See
commit <510650e8b2ab> ("drm/i915/skl: Fix spurious gpu hang with gt3/gt4
revs"). In this scope consider kbl to be skl with a bigger revision than
E0 so play it safe and bind these two workarounds to the
WaForceContextSaveRestoreNonCoherent, and apply to all gen9.

References: HSD#2134449, HSD#2131413
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 37 +++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 47557bd34945..91d5d093f3cb 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -972,6 +972,27 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
 			  HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE);
 
+	/* WaForceEnableNonCoherent and WaDisableHDCInvalidation are
+	 * both tied to WaForceContextSaveRestoreNonCoherent
+	 * in some hsds for skl. We keep the tie for all gen9. The
+	 * documentation is a bit hazy and so we want to get common behaviour,
+	 * even tho there is no clear evidence we would need both on kbl/bxt.
+	 * This area has been source of system hangs so we play it safe
+	 * and mimic the skl regarless of what bspec says.
+	 *
+	 * 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:skl,bxt,kbl */
+	WA_SET_BIT_MASKED(HDC_CHICKEN0,
+			  HDC_FORCE_NON_COHERENT);
+
+	/* WaDisableHDCInvalidation:skl,bxt,kbl */
+	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
+		   BDW_DISABLE_HDC_INVALIDATION);
+
 	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
 	if (IS_SKYLAKE(dev_priv) ||
 	    IS_KABYLAKE(dev_priv) ||
@@ -1084,22 +1105,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(HIZ_CHICKEN,
 				  BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE);
 
-	/* This is tied to WaForceContextSaveRestoreNonCoherent */
-	if (IS_SKL_REVID(dev_priv, 0, REVID_FOREVER)) {
-		/*
-		 *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:skl */
-		WA_SET_BIT_MASKED(HDC_CHICKEN0,
-				  HDC_FORCE_NON_COHERENT);
-
-		/* WaDisableHDCInvalidation:skl */
-		I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
-			   BDW_DISABLE_HDC_INVALIDATION);
-	}
-
 	/* WaBarrierPerformanceFixDisable:skl */
 	if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, SKL_REVID_D0))
 		WA_SET_BIT_MASKED(HDC_CHICKEN0,
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (4 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 05/23] drm/i915: Mimic skl with WaForceEnableNonCoherent Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-27  8:14   ` Arun Siluvery
  2016-05-26 15:29 ` [PATCH 07/23] drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0 Mika Kuoppala
                   ` (19 subsequent siblings)
  25 siblings, 1 reply; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

We need this crucial workaround from skl also to all kbl revisions.
Lack of it was causing system hangs on skl enabling so this is
a must have.

References: HSD#2126660
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 91d5d093f3cb..3902700d37ef 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1000,6 +1000,13 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
 				  GEN8_SAMPLER_POWER_BYPASS_DIS);
 
+	/* WaEnableGapsTsvCreditFix:skl,kbl */
+	if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, REVID_FOREVER) ||
+	    IS_KABYLAKE(dev_priv)) {
+		I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
+					   GEN9_GAPS_TSV_CREDIT_DISABLE));
+	}
+
 	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl */
 	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
 
@@ -1094,12 +1101,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
 		I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
 			   GEN8_LQSC_RO_PERF_DIS);
 
-	/* WaEnableGapsTsvCreditFix:skl */
-	if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, REVID_FOREVER)) {
-		I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
-					   GEN9_GAPS_TSV_CREDIT_DISABLE));
-	}
-
 	/* WaDisablePowerCompilerClockGating:skl */
 	if (IS_SKL_REVID(dev_priv, SKL_REVID_B0, SKL_REVID_B0))
 		WA_SET_BIT_MASKED(HIZ_CHICKEN,
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 07/23] drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (5 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 08/23] drm/i915/kbl: Add WaDisableSDEUnitClockGating Mika Kuoppala
                   ` (18 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Add this workaround for kbl revid A0 only.

References: HSD#1911714
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c        | 16 ++++++++++++++++
 drivers/gpu/drm/i915/intel_ringbuffer.c |  6 ++++++
 2 files changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 5c191a1afaaf..c5e0094d0e75 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1260,6 +1260,22 @@ static int gen9_init_indirectctx_bb(struct intel_engine_cs *engine,
 		return ret;
 	index = ret;
 
+	/* WaClearSlmSpaceAtContextSwitch:kbl */
+	/* Actual scratch location is at 128 bytes offset */
+	if (IS_KBL_REVID(engine->i915, 0, KBL_REVID_A0)) {
+		uint32_t scratch_addr
+			= engine->scratch.gtt_offset + 2*CACHELINE_BYTES;
+
+		wa_ctx_emit(batch, index, GFX_OP_PIPE_CONTROL(6));
+		wa_ctx_emit(batch, index, (PIPE_CONTROL_FLUSH_L3 |
+					   PIPE_CONTROL_GLOBAL_GTT_IVB |
+					   PIPE_CONTROL_CS_STALL |
+					   PIPE_CONTROL_QW_WRITE));
+		wa_ctx_emit(batch, index, scratch_addr);
+		wa_ctx_emit(batch, index, 0);
+		wa_ctx_emit(batch, index, 0);
+		wa_ctx_emit(batch, index, 0);
+	}
 	/* Pad to end of cacheline */
 	while (index % CACHELINE_DWORDS)
 		wa_ctx_emit(batch, index, MI_NOOP);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 3902700d37ef..195943f77d04 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1181,12 +1181,18 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
 
 static int kbl_init_workarounds(struct intel_engine_cs *engine)
 {
+	struct drm_i915_private *dev_priv = engine->i915;
 	int ret;
 
 	ret = gen9_init_workarounds(engine);
 	if (ret)
 		return ret;
 
+	/* WaDisableFenceDestinationToSLM:kbl (pre-prod) */
+	if (IS_KBL_REVID(dev_priv, KBL_REVID_A0, KBL_REVID_A0))
+		WA_SET_BIT_MASKED(HDC_CHICKEN0,
+				  HDC_FENCE_DEST_SLM_DISABLE);
+
 	return 0;
 }
 
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 08/23] drm/i915/kbl: Add WaDisableSDEUnitClockGating
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (6 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 07/23] drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0 Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl Mika Kuoppala
                   ` (17 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Add this workaround until upto kbl revid B0.

References: HSD#1802092
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b6dfd0264950..fc34add6ab82 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6849,11 +6849,25 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
 	I915_WRITE(GEN7_MISCCPCTL, misccpctl);
 }
 
+static void kabylake_init_clock_gating(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* See Bspec note for PSR2_CTL bit 31, Wa#828:kbl */
+	I915_WRITE(CHICKEN_PAR1_1,
+		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
+
+	/* WaDisableSDEUnitClockGating:kbl */
+	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
+		I915_WRITE(GEN8_UCGCTL6, I915_READ(GEN8_UCGCTL6) |
+			   GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
+}
+
 static void skylake_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,kbl */
+	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl */
 	I915_WRITE(CHICKEN_PAR1_1,
 		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
 }
@@ -7319,7 +7333,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
 	if (IS_SKYLAKE(dev_priv))
 		dev_priv->display.init_clock_gating = skylake_init_clock_gating;
 	else if (IS_KABYLAKE(dev_priv))
-		dev_priv->display.init_clock_gating = skylake_init_clock_gating;
+		dev_priv->display.init_clock_gating = kabylake_init_clock_gating;
 	else if (IS_BROXTON(dev_priv))
 		dev_priv->display.init_clock_gating = bxt_init_clock_gating;
 	else if (IS_BROADWELL(dev_priv))
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (7 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 08/23] drm/i915/kbl: Add WaDisableSDEUnitClockGating Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-27  8:18   ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 10/23] drm/i915/kbl: Add WaDisableLSQCROPERFforOCL Mika Kuoppala
                   ` (16 subsequent siblings)
  25 siblings, 1 reply; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

According to bspec this workaround helps to reduce lag and improve
performance on edp.

References: HSD#2134579
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 3 +++
 drivers/gpu/drm/i915/intel_pm.c | 8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e3077259541a..1f84c2ff3563 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6035,6 +6035,9 @@ enum skl_disp_power_wells {
 #define  FORCE_ARB_IDLE_PLANES	(1 << 14)
 #define  SKL_EDP_PSR_FIX_RDWRAP	(1 << 3)
 
+#define CHICKEN_PAR2_1		_MMIO(0x42090)
+#define  KVM_CONFIG_CHANGE_NOTIFICATION_SELECT	(1 << 14)
+
 #define _CHICKEN_PIPESL_1_A	0x420b0
 #define _CHICKEN_PIPESL_1_B	0x420b4
 #define  HSW_FBCQ_DIS			(1 << 22)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index fc34add6ab82..5d9b7ff9dc18 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6870,6 +6870,10 @@ static void skylake_init_clock_gating(struct drm_device *dev)
 	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl */
 	I915_WRITE(CHICKEN_PAR1_1,
 		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
+
+	/* WaKVMNotificationOnConfigChange:skl */
+	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
+		   | KVM_CONFIG_CHANGE_NOTIFICATION_SELECT);
 }
 
 static void broadwell_init_clock_gating(struct drm_device *dev)
@@ -6916,6 +6920,10 @@ static void broadwell_init_clock_gating(struct drm_device *dev)
 	 */
 	I915_WRITE(HSW_GTT_CACHE_EN, GTT_CACHE_EN_ALL);
 
+	/* WaKVMNotificationOnConfigChange:bdw */
+	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
+		   | KVM_CONFIG_CHANGE_NOTIFICATION_SELECT);
+
 	lpt_init_clock_gating(dev);
 }
 
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 10/23] drm/i915/kbl: Add WaDisableLSQCROPERFforOCL
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (8 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 11/23] drm/i915/gen9: Enable must set chicken bits in config0 reg Mika Kuoppala
                   ` (15 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Extend the scope of this workaround, already used in skl,
to also take effect in kbl.

References: HSD#2132677
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h         |  3 +++
 drivers/gpu/drm/i915/intel_lrc.c        |  5 +++--
 drivers/gpu/drm/i915/intel_ringbuffer.c | 13 +++++++++++++
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 98cb1f178e3e..ffad2840b72f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2717,6 +2717,9 @@ struct drm_i915_cmd_table {
 
 #define KBL_REVID_A0		0x0
 #define KBL_REVID_B0		0x1
+#define KBL_REVID_C0		0x2
+#define KBL_REVID_D0		0x3
+#define KBL_REVID_E0		0x3
 
 #define IS_KBL_REVID(p, since, until) \
 	(IS_KABYLAKE(p) && IS_REVID(p, since, until))
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index c5e0094d0e75..819adbdee1c2 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1081,12 +1081,13 @@ static inline int gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *engine,
 	uint32_t l3sqc4_flush = (0x40400000 | GEN8_LQSC_FLUSH_COHERENT_LINES);
 
 	/*
-	 * WaDisableLSQCROPERFforOCL:skl
+	 * WaDisableLSQCROPERFforOCL:skl,kbl
 	 * This WA is implemented in skl_init_clock_gating() but since
 	 * this batch updates GEN8_L3SQCREG4 with default value we need to
 	 * set this bit here to retain the WA during flush.
 	 */
-	if (IS_SKL_REVID(engine->i915, 0, SKL_REVID_E0))
+	if (IS_SKL_REVID(engine->i915, 0, SKL_REVID_E0) ||
+	    IS_KBL_REVID(engine->i915, 0, KBL_REVID_E0))
 		l3sqc4_flush |= GEN8_LQSC_RO_PERF_DIS;
 
 	wa_ctx_emit(batch, index, (MI_STORE_REGISTER_MEM_GEN8 |
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 195943f77d04..64922ae9bd69 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1193,6 +1193,19 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(HDC_CHICKEN0,
 				  HDC_FENCE_DEST_SLM_DISABLE);
 
+	/* GEN8_L3SQCREG4 has a dependency with WA batch so any new changes
+	 * involving this register should also be added to WA batch as required.
+	 */
+	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_E0))
+		/* WaDisableLSQCROPERFforOCL:kbl */
+		I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
+			   GEN8_LQSC_RO_PERF_DIS);
+
+	/* WaDisableLSQCROPERFforOCL:kbl */
+	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
+	if (ret)
+		return ret;
+
 	return 0;
 }
 
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 11/23] drm/i915/gen9: Enable must set chicken bits in config0 reg
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (9 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 10/23] drm/i915/kbl: Add WaDisableLSQCROPERFforOCL Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 12/23] drm/i915/kbl: Add WaDisableGamClockGating Mika Kuoppala
                   ` (14 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

The bspec states that these must be set in CONFIG0 for all gen9.

References: HSD#2134995
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h |  3 +++
 drivers/gpu/drm/i915/intel_pm.c | 22 ++++++++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 1f84c2ff3563..5cba851370ec 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -220,6 +220,9 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define   ECOCHK_PPGTT_WT_HSW		(0x2<<3)
 #define   ECOCHK_PPGTT_WB_HSW		(0x3<<3)
 
+#define GEN8_CONFIG0			_MMIO(0xD00)
+#define  GEN9_DEFAULT_FIXES		(1<<3 | 1<<2 | 1 << 1)
+
 #define GAC_ECO_BITS			_MMIO(0x14090)
 #define   ECOBITS_SNB_BIT		(1<<13)
 #define   ECOBITS_PPGTT_CACHE64B	(3<<8)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 5d9b7ff9dc18..b40f9dbbb215 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -54,14 +54,24 @@
 #define INTEL_RC6p_ENABLE			(1<<1)
 #define INTEL_RC6pp_ENABLE			(1<<2)
 
-static void bxt_init_clock_gating(struct drm_device *dev)
+static void gen9_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* See Bspec note for PSR2_CTL bit 31, Wa#828:bxt */
+	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl */
 	I915_WRITE(CHICKEN_PAR1_1,
 		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
 
+	I915_WRITE(GEN8_CONFIG0,
+		   I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
+}
+
+static void bxt_init_clock_gating(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	gen9_init_clock_gating(dev);
+
 	/* WaDisableSDEUnitClockGating:bxt */
 	I915_WRITE(GEN8_UCGCTL6, I915_READ(GEN8_UCGCTL6) |
 		   GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
@@ -6853,9 +6863,7 @@ static void kabylake_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* See Bspec note for PSR2_CTL bit 31, Wa#828:kbl */
-	I915_WRITE(CHICKEN_PAR1_1,
-		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
+	gen9_init_clock_gating(dev);
 
 	/* WaDisableSDEUnitClockGating:kbl */
 	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
@@ -6867,9 +6875,7 @@ static void skylake_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl */
-	I915_WRITE(CHICKEN_PAR1_1,
-		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
+	gen9_init_clock_gating(dev);
 
 	/* WaKVMNotificationOnConfigChange:skl */
 	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 12/23] drm/i915/kbl: Add WaDisableGamClockGating
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (10 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 11/23] drm/i915/gen9: Enable must set chicken bits in config0 reg Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 13/23] drm/i915/kbl: Add WaDisableDynamicCreditSharing Mika Kuoppala
                   ` (13 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

According to bspec we need to disable gam unit clock gating on
on kbl revids A0 and B0.

References: HSD#2226858, HSD#1944358
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 drivers/gpu/drm/i915/intel_pm.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 5cba851370ec..14e0ec818ea4 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6937,6 +6937,7 @@ enum skl_disp_power_wells {
 #define    EDRAM_SETS_IDX(cap)			(((cap) >> 8) & 0x3)
 
 #define GEN6_UCGCTL1				_MMIO(0x9400)
+# define GEN6_GAMUNIT_CLOCK_GATE_DISABLE		(1 << 22)
 # define GEN6_EU_TCUNIT_CLOCK_GATE_DISABLE		(1 << 16)
 # define GEN6_BLBUNIT_CLOCK_GATE_DISABLE		(1 << 5)
 # define GEN6_CSUNIT_CLOCK_GATE_DISABLE			(1 << 7)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b40f9dbbb215..8291f32db76e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6869,6 +6869,11 @@ static void kabylake_init_clock_gating(struct drm_device *dev)
 	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
 		I915_WRITE(GEN8_UCGCTL6, I915_READ(GEN8_UCGCTL6) |
 			   GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
+
+	/* WaDisableGamClockGating:kbl */
+	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
+		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
+			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
 }
 
 static void skylake_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 13/23] drm/i915/kbl: Add WaDisableDynamicCreditSharing
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (11 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 12/23] drm/i915/kbl: Add WaDisableGamClockGating Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 14/23] drm/i915: Add WaInsertDummyPushConstP for bxt and kbl Mika Kuoppala
                   ` (12 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Bspec states that we need to turn off dynamic credit
sharing on kbl revid a0 and b0. This happens by writing bit 28
on 0x4ab8.

References: HSD#2225601, HSD#2226938, HSD#2225763
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h         | 2 ++
 drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 14e0ec818ea4..e0441da08201 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1672,6 +1672,8 @@ enum skl_disp_power_wells {
 
 #define GEN7_TLB_RD_ADDR	_MMIO(0x4700)
 
+#define GAMT_CHKN_BIT_REG	_MMIO(0x4ab8)
+
 #if 0
 #define PRB0_TAIL	_MMIO(0x2030)
 #define PRB0_HEAD	_MMIO(0x2034)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 64922ae9bd69..402e0feb4cca 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1188,6 +1188,10 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
 	if (ret)
 		return ret;
 
+	/* WaDisableDynamicCreditSharing:kbl */
+	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
+		WA_SET_BIT(GAMT_CHKN_BIT_REG, (1 << 28));
+
 	/* WaDisableFenceDestinationToSLM:kbl (pre-prod) */
 	if (IS_KBL_REVID(dev_priv, KBL_REVID_A0, KBL_REVID_A0))
 		WA_SET_BIT_MASKED(HDC_CHICKEN0,
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 14/23] drm/i915: Add WaInsertDummyPushConstP for bxt and kbl
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (12 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 13/23] drm/i915/kbl: Add WaDisableDynamicCreditSharing Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 15/23] drm/i915/gen9: Add WaDisableSkipCaching Mika Kuoppala
                   ` (11 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Add this workaround for both bxt and kbl up to until
rev B0.

References: HSD#2136703
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h         |  1 +
 drivers/gpu/drm/i915/intel_ringbuffer.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e0441da08201..ec31eca06807 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6087,6 +6087,7 @@ enum skl_disp_power_wells {
 # define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC	((1<<10) | (1<<26))
 # define GEN9_RHWO_OPTIMIZATION_DISABLE		(1<<14)
 #define COMMON_SLICE_CHICKEN2			_MMIO(0x7014)
+# define GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION (1<<8)
 # define GEN8_CSC2_SBE_VUE_CACHE_CONSERVATIVE	(1<<0)
 
 #define HIZ_CHICKEN					_MMIO(0x7018)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 402e0feb4cca..d60b7a3ebb47 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1176,6 +1176,11 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
 		I915_WRITE(GEN8_L3SQCREG1, L3_GENERAL_PRIO_CREDITS(62) |
 					   L3_HIGH_PRIO_CREDITS(2));
 
+	/* WaInsertDummyPushConstPs:bxt */
+	if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0))
+		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
+				  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
+
 	return 0;
 }
 
@@ -1205,6 +1210,11 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
 		I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
 			   GEN8_LQSC_RO_PERF_DIS);
 
+	/* WaInsertDummyPushConstPs:kbl */
+	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
+		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
+				  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
+
 	/* WaDisableLSQCROPERFforOCL:kbl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
 	if (ret)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 15/23] drm/i915/gen9: Add WaDisableSkipCaching
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (13 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 14/23] drm/i915: Add WaInsertDummyPushConstP for bxt and kbl Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 16/23] drm/i915/skl: Add WAC6entrylatency Mika Kuoppala
                   ` (10 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Make sure that we never enable skip caching on gen9 by
accident.

References: HSD#2134698
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_mocs.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_mocs.c b/drivers/gpu/drm/i915/intel_mocs.c
index b765c75f3fcd..8f96c40e415c 100644
--- a/drivers/gpu/drm/i915/intel_mocs.c
+++ b/drivers/gpu/drm/i915/intel_mocs.c
@@ -156,6 +156,16 @@ static bool get_mocs_settings(struct drm_i915_private *dev_priv,
 			  "Platform that should have a MOCS table does not.\n");
 	}
 
+	/* WaDisableSkipCaching:skl,bxt,kbl */
+	if (IS_GEN9(dev_priv)) {
+		int i;
+
+		for (i = 0; i < table->size; i++)
+			if (WARN_ON(table->table[i].l3cc_value &
+				    (L3_ESC(1) || L3_SCC(0x7))))
+				return false;
+	}
+
 	return result;
 }
 
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 16/23] drm/i915/skl: Add WAC6entrylatency
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (14 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 15/23] drm/i915/gen9: Add WaDisableSkipCaching Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 17/23] drm/i915/kbl: Add WaForGAMHang Mika Kuoppala
                   ` (9 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

This workaround is for fbc working with rc6 on skylake. Bspec
states that setting this bit needs to be coordinated with uncore
but offers no further details.

References: HSD#4712857
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 3 +++
 drivers/gpu/drm/i915/intel_pm.c | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index ec31eca06807..77f5edc5f915 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2166,6 +2166,9 @@ enum skl_disp_power_wells {
 
 #define FBC_LL_SIZE		(1536)
 
+#define FBC_LLC_READ_CTRL	_MMIO(0x9044)
+#define   FBC_LLC_FULLY_OPEN	(1<<30)
+
 /* Framebuffer compression for GM45+ */
 #define DPFC_CB_BASE		_MMIO(0x3200)
 #define DPFC_CONTROL		_MMIO(0x3208)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 8291f32db76e..04b0a5fdccd8 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6885,6 +6885,10 @@ static void skylake_init_clock_gating(struct drm_device *dev)
 	/* WaKVMNotificationOnConfigChange:skl */
 	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
 		   | KVM_CONFIG_CHANGE_NOTIFICATION_SELECT);
+
+	/* WAC6entrylatency:skl */
+	I915_WRITE(FBC_LLC_READ_CTRL, I915_READ(FBC_LLC_READ_CTRL) |
+		   FBC_LLC_FULLY_OPEN);
 }
 
 static void broadwell_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 17/23] drm/i915/kbl: Add WaForGAMHang
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (15 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 16/23] drm/i915/skl: Add WAC6entrylatency Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 18/23] drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl Mika Kuoppala
                   ` (8 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Add this workaround for A0 and B0 revisions

References: HSD#2226935
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 819adbdee1c2..0612b6c8ffcf 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1674,9 +1674,10 @@ static int gen8_emit_flush_render(struct drm_i915_gem_request *request,
 	struct intel_ringbuffer *ringbuf = request->ringbuf;
 	struct intel_engine_cs *engine = ringbuf->engine;
 	u32 scratch_addr = engine->scratch.gtt_offset + 2 * CACHELINE_BYTES;
-	bool vf_flush_wa = false;
+	bool vf_flush_wa = false, dc_flush_wa = false;
 	u32 flags = 0;
 	int ret;
+	int len;
 
 	flags |= PIPE_CONTROL_CS_STALL;
 
@@ -1703,9 +1704,21 @@ static int gen8_emit_flush_render(struct drm_i915_gem_request *request,
 		 */
 		if (IS_GEN9(request->i915))
 			vf_flush_wa = true;
+
+		/* WaForGAMHang:kbl */
+		if (IS_KBL_REVID(request->i915, 0, KBL_REVID_B0))
+			dc_flush_wa = true;
 	}
 
-	ret = intel_ring_begin(request, vf_flush_wa ? 12 : 6);
+	len = 6;
+
+	if (vf_flush_wa)
+		len += 6;
+
+	if (dc_flush_wa)
+		len += 12;
+
+	ret = intel_ring_begin(request, len);
 	if (ret)
 		return ret;
 
@@ -1718,12 +1731,31 @@ static int gen8_emit_flush_render(struct drm_i915_gem_request *request,
 		intel_logical_ring_emit(ringbuf, 0);
 	}
 
+	if (dc_flush_wa) {
+		intel_logical_ring_emit(ringbuf, GFX_OP_PIPE_CONTROL(6));
+		intel_logical_ring_emit(ringbuf, PIPE_CONTROL_DC_FLUSH_ENABLE);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+	}
+
 	intel_logical_ring_emit(ringbuf, GFX_OP_PIPE_CONTROL(6));
 	intel_logical_ring_emit(ringbuf, flags);
 	intel_logical_ring_emit(ringbuf, scratch_addr);
 	intel_logical_ring_emit(ringbuf, 0);
 	intel_logical_ring_emit(ringbuf, 0);
 	intel_logical_ring_emit(ringbuf, 0);
+
+	if (dc_flush_wa) {
+		intel_logical_ring_emit(ringbuf, GFX_OP_PIPE_CONTROL(6));
+		intel_logical_ring_emit(ringbuf, PIPE_CONTROL_CS_STALL);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+		intel_logical_ring_emit(ringbuf, 0);
+	}
+
 	intel_logical_ring_advance(ringbuf);
 
 	return 0;
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 18/23] drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (16 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 17/23] drm/i915/kbl: Add WaForGAMHang Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 19/23] drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing Mika Kuoppala
                   ` (7 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

We need this gafs bit to be enabled for hw fix to
take effect.

References: HSD#2227156, HSD#2227050
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h         | 1 +
 drivers/gpu/drm/i915/intel_ringbuffer.c | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 77f5edc5f915..509238561935 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6084,6 +6084,7 @@ enum skl_disp_power_wells {
 
 #define GEN9_CS_DEBUG_MODE1		_MMIO(0x20ec)
 #define GEN8_CS_CHICKEN1		_MMIO(0x2580)
+#define GEN8_CS_CHICKEN2		_MMIO(0x2194)
 
 /* GEN7 chicken */
 #define GEN7_COMMON_SLICE_CHICKEN1		_MMIO(0x7010)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index d60b7a3ebb47..234f0e288f44 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1118,6 +1118,9 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
 			GEN7_HALF_SLICE_CHICKEN1,
 			GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
 
+	/* WaDisableGafsUnitClkGating:skl */
+	WA_SET_BIT(GEN8_CS_CHICKEN2, (1 << 1));
+
 	/* WaDisableLSQCROPERFforOCL:skl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
 	if (ret)
@@ -1215,6 +1218,9 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
 				  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
 
+	/* WaDisableGafsUnitClkGating:kbl */
+	WA_SET_BIT(GEN8_CS_CHICKEN2, (1 << 1));
+
 	/* WaDisableLSQCROPERFforOCL:kbl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
 	if (ret)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 19/23] drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (17 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 18/23] drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 20/23] drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling Mika Kuoppala
                   ` (6 subsequent siblings)
  25 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Move this workaround to common gen9 workarounds and
enable for all kbl revision.

References: HSD#2135593
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 234f0e288f44..0f3c3ffc85d5 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1014,6 +1014,14 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
 				    GEN8_LQSC_FLUSH_COHERENT_LINES));
 
+	/* WaDisableSbeCacheDispatchPortSharing:skl,bxt,kbl */
+	if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_F0) ||
+	    IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0) ||
+	    IS_KABYLAKE(dev_priv))
+		WA_SET_BIT_MASKED(
+			GEN7_HALF_SLICE_CHICKEN1,
+			GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
+
 	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl */
 	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
 	if (ret)
@@ -1112,12 +1120,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
 				  HDC_FENCE_DEST_SLM_DISABLE |
 				  HDC_BARRIER_PERFORMANCE_DISABLE);
 
-	/* WaDisableSbeCacheDispatchPortSharing:skl */
-	if (IS_SKL_REVID(dev_priv, 0, SKL_REVID_F0))
-		WA_SET_BIT_MASKED(
-			GEN7_HALF_SLICE_CHICKEN1,
-			GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
-
 	/* WaDisableGafsUnitClkGating:skl */
 	WA_SET_BIT(GEN8_CS_CHICKEN2, (1 << 1));
 
@@ -1153,13 +1155,6 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
 	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
 			  STALL_DOP_GATING_DISABLE);
 
-	/* WaDisableSbeCacheDispatchPortSharing:bxt */
-	if (IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0)) {
-		WA_SET_BIT_MASKED(
-			GEN7_HALF_SLICE_CHICKEN1,
-			GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
-	}
-
 	/* WaDisableObjectLevelPreemptionForTrifanOrPolygon:bxt */
 	/* WaDisableObjectLevelPreemptionForInstancedDraw:bxt */
 	/* WaDisableObjectLevelPreemtionForInstanceId:bxt */
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 20/23] drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling.
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (18 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 19/23] drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 16:53   ` [PATCH 20/23] drm/i915/gen9: Add WaEnableChickenDCPR Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled Mika Kuoppala
                   ` (5 subsequent siblings)
  25 siblings, 1 reply; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Set this on all gen9 as stated by bspec.

References: HSD#2136383
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 3 +++
 drivers/gpu/drm/i915/intel_pm.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 509238561935..280d2137f90f 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6066,6 +6066,9 @@ enum skl_disp_power_wells {
 #define HSW_NDE_RSTWRN_OPT	_MMIO(0x46408)
 #define  RESET_PCH_HANDSHAKE_ENABLE	(1<<4)
 
+#define GEN8_CHICKEN_DCPR_1		_MMIO(0x46430)
+#define   MASK_WAKEMEM			(1<<13)
+
 #define SKL_DFSM			_MMIO(0x51000)
 #define SKL_DFSM_CDCLK_LIMIT_MASK	(3 << 23)
 #define SKL_DFSM_CDCLK_LIMIT_675	(0 << 23)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 04b0a5fdccd8..262180c0ba70 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -64,6 +64,9 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 
 	I915_WRITE(GEN8_CONFIG0,
 		   I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
+
+	I915_WRITE(GEN8_CHICKEN_DCPR_1,
+		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (19 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 20/23] drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 15:53   ` Ville Syrjälä
  2016-05-26 16:54   ` [PATCH 21/23] drm/i915/gen9: Add WaFbcTurnOffFbcWatermark Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 22/23] drm/i915/gen9: Prevent fbc corruption/system hangs with high bw Mika Kuoppala
                   ` (4 subsequent siblings)
  25 siblings, 2 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: Paulo Zanoni

According to bspec this prevents screen corruption when fbc is
used.

References: HSD#2135555, HSD#2137270
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 262180c0ba70..62734a16e873 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -67,6 +67,9 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
+
+	I915_WRITE(DISP_ARB_CTL,
+		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
@@ -2798,7 +2801,7 @@ static void ilk_write_wm_values(struct drm_i915_private *dev_priv,
 
 	if (dirty & WM_DIRTY_FBC) {
 		val = I915_READ(DISP_ARB_CTL);
-		if (results->enable_fbc_wm)
+		if (!IS_GEN9(dev) && results->enable_fbc_wm)
 			val &= ~DISP_FBC_WM_DIS;
 		else
 			val |= DISP_FBC_WM_DIS;
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 22/23] drm/i915/gen9: Prevent fbc corruption/system hangs with high bw
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (20 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 16:54   ` [PATCH 22/23] drm/i915/gen9: Add WaFbcWakeMemOn Mika Kuoppala
  2016-05-26 15:29 ` [PATCH 23/23] drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl Mika Kuoppala
                   ` (3 subsequent siblings)
  25 siblings, 1 reply; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: Paulo Zanoni

Set bit 8 in 0x43224 to prevent screen corruption and system
hangs on high memory bandwidth conditions. The same wa also suggest
setting bit 31 on ARB_CTL. According to another workaround we gain
better idle power savings when FBC is enabled.

References: HSD#2137218, HSD#2227171, HSD#2136579
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 2 ++
 drivers/gpu/drm/i915/intel_pm.c | 8 ++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 280d2137f90f..2f3a3960f5f7 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2208,6 +2208,7 @@ enum skl_disp_power_wells {
 #define ILK_DPFC_STATUS		_MMIO(0x43210)
 #define ILK_DPFC_FENCE_YOFF	_MMIO(0x43218)
 #define ILK_DPFC_CHICKEN	_MMIO(0x43224)
+#define   ILK_DPFC_DISABLE_DUMMY0 (1<<8)
 #define ILK_FBC_RT_BASE		_MMIO(0x2128)
 #define   ILK_FBC_RT_VALID	(1<<0)
 #define   SNB_FBC_FRONT_BUFFER	(1<<1)
@@ -6053,6 +6054,7 @@ enum skl_disp_power_wells {
 #define CHICKEN_PIPESL_1(pipe) _MMIO_PIPE(pipe, _CHICKEN_PIPESL_1_A, _CHICKEN_PIPESL_1_B)
 
 #define DISP_ARB_CTL	_MMIO(0x45000)
+#define  DISP_FBC_MEMORY_WAKE		(1<<31)
 #define  DISP_TILE_SURFACE_SWIZZLING	(1<<13)
 #define  DISP_FBC_WM_DIS		(1<<15)
 #define DISP_ARB_CTL2	_MMIO(0x45004)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 62734a16e873..6bd73fb5c4bb 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -68,8 +68,12 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 
-	I915_WRITE(DISP_ARB_CTL,
-		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);
+	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
+		   DISP_FBC_WM_DIS |
+		   DISP_FBC_MEMORY_WAKE);
+
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_DISABLE_DUMMY0);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 23/23] drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (21 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 22/23] drm/i915/gen9: Prevent fbc corruption/system hangs with high bw Mika Kuoppala
@ 2016-05-26 15:29 ` Mika Kuoppala
  2016-05-26 16:55   ` [PATCH 23/23] drm/i195/fbc: Add WaFbcNukeOnHostModify Mika Kuoppala
  2016-05-26 16:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds Patchwork
                   ` (2 subsequent siblings)
  25 siblings, 1 reply; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 15:29 UTC (permalink / raw)
  To: intel-gfx

Bspec states that we need to set nuke on modify all to prevent
screen corruption with fbc on skl and kbl.

References: HSDES#1404569388
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 drivers/gpu/drm/i915/intel_pm.c | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 2f3a3960f5f7..e08f29685b25 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2209,6 +2209,7 @@ enum skl_disp_power_wells {
 #define ILK_DPFC_FENCE_YOFF	_MMIO(0x43218)
 #define ILK_DPFC_CHICKEN	_MMIO(0x43224)
 #define   ILK_DPFC_DISABLE_DUMMY0 (1<<8)
+#define   ILK_DPFC_NUKE_ON_ANY_MODIFICATION	(1<<23)
 #define ILK_FBC_RT_BASE		_MMIO(0x2128)
 #define   ILK_FBC_RT_VALID	(1<<0)
 #define   SNB_FBC_FRONT_BUFFER	(1<<1)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 6bd73fb5c4bb..a6606156a40f 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6884,6 +6884,9 @@ static void kabylake_init_clock_gating(struct drm_device *dev)
 	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
 		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
 			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
+
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
 }
 
 static void skylake_init_clock_gating(struct drm_device *dev)
@@ -6899,6 +6902,9 @@ static void skylake_init_clock_gating(struct drm_device *dev)
 	/* WAC6entrylatency:skl */
 	I915_WRITE(FBC_LLC_READ_CTRL, I915_READ(FBC_LLC_READ_CTRL) |
 		   FBC_LLC_FULLY_OPEN);
+
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
 }
 
 static void broadwell_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* Re: [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled
  2016-05-26 15:29 ` [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled Mika Kuoppala
@ 2016-05-26 15:53   ` Ville Syrjälä
  2016-05-26 16:06     ` Ville Syrjälä
  2016-05-26 16:54   ` [PATCH 21/23] drm/i915/gen9: Add WaFbcTurnOffFbcWatermark Mika Kuoppala
  1 sibling, 1 reply; 35+ messages in thread
From: Ville Syrjälä @ 2016-05-26 15:53 UTC (permalink / raw)
  To: Mika Kuoppala; +Cc: intel-gfx, Paulo Zanoni

On Thu, May 26, 2016 at 06:29:44PM +0300, Mika Kuoppala wrote:
> According to bspec this prevents screen corruption when fbc is
> used.
> 
> References: HSD#2135555, HSD#2137270
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 262180c0ba70..62734a16e873 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -67,6 +67,9 @@ static void gen9_init_clock_gating(struct drm_device *dev)
>  
>  	I915_WRITE(GEN8_CHICKEN_DCPR_1,
>  		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
> +
> +	I915_WRITE(DISP_ARB_CTL,
> +		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);

Hmm I thought that FBC WM doesn't exist anymore on SKL+. I'm pretty sure
we don't have any code for it at least.

>  }
>  
>  static void bxt_init_clock_gating(struct drm_device *dev)
> @@ -2798,7 +2801,7 @@ static void ilk_write_wm_values(struct drm_i915_private *dev_priv,
>  
>  	if (dirty & WM_DIRTY_FBC) {
>  		val = I915_READ(DISP_ARB_CTL);
> -		if (results->enable_fbc_wm)
> +		if (!IS_GEN9(dev) && results->enable_fbc_wm)

That code won't even run SKL+.

>  			val &= ~DISP_FBC_WM_DIS;
>  		else
>  			val |= DISP_FBC_WM_DIS;
> -- 
> 2.5.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled
  2016-05-26 15:53   ` Ville Syrjälä
@ 2016-05-26 16:06     ` Ville Syrjälä
  0 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjälä @ 2016-05-26 16:06 UTC (permalink / raw)
  To: Mika Kuoppala; +Cc: intel-gfx, Paulo Zanoni

On Thu, May 26, 2016 at 06:53:18PM +0300, Ville Syrjälä wrote:
> On Thu, May 26, 2016 at 06:29:44PM +0300, Mika Kuoppala wrote:
> > According to bspec this prevents screen corruption when fbc is
> > used.
> > 
> > References: HSD#2135555, HSD#2137270
> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_pm.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 262180c0ba70..62734a16e873 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -67,6 +67,9 @@ static void gen9_init_clock_gating(struct drm_device *dev)
> >  
> >  	I915_WRITE(GEN8_CHICKEN_DCPR_1,
> >  		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
> > +
> > +	I915_WRITE(DISP_ARB_CTL,
> > +		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);
> 
> Hmm I thought that FBC WM doesn't exist anymore on SKL+. I'm pretty sure
> we don't have any code for it at least.

Hmm. I guess the bit still does something though.

Do we want to start using the bspec w/a IDs in comments?

Hmm. w/a db seems to have a name for this FBC stuff as well. This one
looks like
WaFbcTurnOffFbcWatermark

> 
> >  }
> >  
> >  static void bxt_init_clock_gating(struct drm_device *dev)
> > @@ -2798,7 +2801,7 @@ static void ilk_write_wm_values(struct drm_i915_private *dev_priv,
> >  
> >  	if (dirty & WM_DIRTY_FBC) {
> >  		val = I915_READ(DISP_ARB_CTL);
> > -		if (results->enable_fbc_wm)
> > +		if (!IS_GEN9(dev) && results->enable_fbc_wm)
> 
> That code won't even run SKL+.
> 
> >  			val &= ~DISP_FBC_WM_DIS;
> >  		else
> >  			val |= DISP_FBC_WM_DIS;
> > -- 
> > 2.5.0
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Ville Syrjälä
> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (22 preceding siblings ...)
  2016-05-26 15:29 ` [PATCH 23/23] drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl Mika Kuoppala
@ 2016-05-26 16:37 ` Patchwork
  2016-05-26 17:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds (rev5) Patchwork
  2016-06-06  7:51 ` [PATCH 00/23] kbl and gen9 workarounds Jani Nikula
  25 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2016-05-26 16:37 UTC (permalink / raw)
  To: Mika Kuoppala; +Cc: intel-gfx

== Series Details ==

Series: kbl and gen9 workarounds
URL   : https://patchwork.freedesktop.org/series/7824/
State : warning

== Summary ==

Series 7824v1 kbl and gen9 workarounds
http://patchwork.freedesktop.org/api/1.0/series/7824/revisions/1/mbox

Test drv_module_reload_basic:
                pass       -> SKIP       (ro-skl-i7-6700hq)
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-skl-i7-6700k)
        Subgroup suspend-read-crc-pipe-b:
                incomplete -> PASS       (fi-hsw-i7-4770k)
Test kms_psr_sink_crc:
        Subgroup psr_basic:
                dmesg-warn -> PASS       (ro-skl-i7-6700hq)
Test kms_sink_crc_basic:
                skip       -> PASS       (ro-skl-i7-6700hq)

fi-bdw-i7-5557u  total:209  pass:197  dwarn:0   dfail:0   fail:0   skip:12 
fi-hsw-i7-4770k  total:209  pass:190  dwarn:0   dfail:0   fail:0   skip:19 
fi-hsw-i7-4770r  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
fi-skl-i7-6700k  total:209  pass:183  dwarn:1   dfail:0   fail:0   skip:25 
fi-snb-i7-2600   total:209  pass:170  dwarn:0   dfail:0   fail:0   skip:39 
ro-bdw-i5-5250u  total:209  pass:172  dwarn:0   dfail:0   fail:0   skip:37 
ro-bdw-i7-5557U  total:209  pass:197  dwarn:0   dfail:0   fail:0   skip:12 
ro-bdw-i7-5600u  total:209  pass:181  dwarn:0   dfail:0   fail:0   skip:28 
ro-bsw-n3050     total:209  pass:168  dwarn:0   dfail:0   fail:2   skip:39 
ro-byt-n2820     total:209  pass:169  dwarn:0   dfail:0   fail:3   skip:37 
ro-hsw-i3-4010u  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
ro-hsw-i7-4770r  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
ro-ilk-i7-620lm  total:1    pass:0    dwarn:0   dfail:0   fail:0   skip:0  
ro-ivb-i7-3770   total:209  pass:177  dwarn:0   dfail:0   fail:0   skip:32 
ro-ivb2-i7-3770  total:209  pass:181  dwarn:0   dfail:0   fail:0   skip:28 
ro-skl-i7-6700hq total:204  pass:181  dwarn:1   dfail:0   fail:0   skip:22 
ro-snb-i7-2620M  total:209  pass:170  dwarn:0   dfail:0   fail:1   skip:38 
fi-byt-n2820 failed to connect after reboot
ro-ilk1-i5-650 failed to connect after reboot

Results at /archive/results/CI_IGT_test/RO_Patchwork_1027/

c17d7e8 drm-intel-nightly: 2016y-05m-26d-15h-04m-52s UTC integration manifest
9ad30ac drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl
335ebfa drm/i915/gen9: Prevent fbc corruption/system hangs with high bw
4bc5809 drm/i915/gen9: Set fbc watermarks disabled
aeca8b0 drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling.
d217b10 drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing
cdd5209 drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl
3a8fffa drm/i915/kbl: Add WaForGAMHang
1638d63 drm/i915/skl: Add WAC6entrylatency
d2d65e2 drm/i915/gen9: Add WaDisableSkipCaching
d258bd6 drm/i915: Add WaInsertDummyPushConstP for bxt and kbl
eb97dc4 drm/i915/kbl: Add WaDisableDynamicCreditSharing
24c329e drm/i915/kbl: Add WaDisableGamClockGating
b30fa1a drm/i915/gen9: Enable must set chicken bits in config0 reg
794122fd drm/i915/kbl: Add WaDisableLSQCROPERFforOCL
4f52225 drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl
a187094 drm/i915/kbl: Add WaDisableSDEUnitClockGating
97483e1 drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0
7c8be959 drm/i915/kbl: Add WaEnableGapsTsvCreditFix
6e9f99e drm/i915: Mimic skl with WaForceEnableNonCoherent
9d5d6bc drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent
f85b90e drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0
c629726 drm/i915/kbl: Add REVID macro
f66b182 drm/i915/kbl: Init gen9 workarounds

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH 20/23] drm/i915/gen9: Add WaEnableChickenDCPR
  2016-05-26 15:29 ` [PATCH 20/23] drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling Mika Kuoppala
@ 2016-05-26 16:53   ` Mika Kuoppala
  0 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 16:53 UTC (permalink / raw)
  To: intel-gfx

Workaround for display underrun issues with Y & Yf Tiling.
Set this on all gen9 as stated by bspec.

v2: proper workaround name
References: HSD#2136383, BSID#857
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 3 +++
 drivers/gpu/drm/i915/intel_pm.c | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 509238561935..280d2137f90f 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -6066,6 +6066,9 @@ enum skl_disp_power_wells {
 #define HSW_NDE_RSTWRN_OPT	_MMIO(0x46408)
 #define  RESET_PCH_HANDSHAKE_ENABLE	(1<<4)
 
+#define GEN8_CHICKEN_DCPR_1		_MMIO(0x46430)
+#define   MASK_WAKEMEM			(1<<13)
+
 #define SKL_DFSM			_MMIO(0x51000)
 #define SKL_DFSM_CDCLK_LIMIT_MASK	(3 << 23)
 #define SKL_DFSM_CDCLK_LIMIT_675	(0 << 23)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 04b0a5fdccd8..2da09adb8d3d 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -64,6 +64,10 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 
 	I915_WRITE(GEN8_CONFIG0,
 		   I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
+
+	/* WaEnableChickenDCPR:skl,bxt,kbl */
+	I915_WRITE(GEN8_CHICKEN_DCPR_1,
+		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 21/23] drm/i915/gen9: Add WaFbcTurnOffFbcWatermark
  2016-05-26 15:29 ` [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled Mika Kuoppala
  2016-05-26 15:53   ` Ville Syrjälä
@ 2016-05-26 16:54   ` Mika Kuoppala
  1 sibling, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 16:54 UTC (permalink / raw)
  To: intel-gfx; +Cc: Paulo Zanoni

According to bspec this prevents screen corruption when fbc is
used.

v2: This workaround has a name, use it (Ville)

References: HSD#2135555, HSD#2137270, BSID#562
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 2da09adb8d3d..416a1a356dec 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -68,6 +68,10 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 	/* WaEnableChickenDCPR:skl,bxt,kbl */
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
+
+	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl */
+	I915_WRITE(DISP_ARB_CTL,
+		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
@@ -2799,7 +2803,7 @@ static void ilk_write_wm_values(struct drm_i915_private *dev_priv,
 
 	if (dirty & WM_DIRTY_FBC) {
 		val = I915_READ(DISP_ARB_CTL);
-		if (results->enable_fbc_wm)
+		if (!IS_GEN9(dev) && results->enable_fbc_wm)
 			val &= ~DISP_FBC_WM_DIS;
 		else
 			val |= DISP_FBC_WM_DIS;
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 22/23] drm/i915/gen9: Add WaFbcWakeMemOn
  2016-05-26 15:29 ` [PATCH 22/23] drm/i915/gen9: Prevent fbc corruption/system hangs with high bw Mika Kuoppala
@ 2016-05-26 16:54   ` Mika Kuoppala
  0 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 16:54 UTC (permalink / raw)
  To: intel-gfx; +Cc: Paulo Zanoni

Set bit 8 in 0x43224 to prevent screen corruption and system
hangs on high memory bandwidth conditions. The same wa also suggest
setting bit 31 on ARB_CTL. According to another workaround we gain
better idle power savings when FBC is enabled.

v2: use correct workaround name

References: HSD#2137218, HSD#2227171, HSD#2136579, BSID#883
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 2 ++
 drivers/gpu/drm/i915/intel_pm.c | 9 +++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 280d2137f90f..2f3a3960f5f7 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2208,6 +2208,7 @@ enum skl_disp_power_wells {
 #define ILK_DPFC_STATUS		_MMIO(0x43210)
 #define ILK_DPFC_FENCE_YOFF	_MMIO(0x43218)
 #define ILK_DPFC_CHICKEN	_MMIO(0x43224)
+#define   ILK_DPFC_DISABLE_DUMMY0 (1<<8)
 #define ILK_FBC_RT_BASE		_MMIO(0x2128)
 #define   ILK_FBC_RT_VALID	(1<<0)
 #define   SNB_FBC_FRONT_BUFFER	(1<<1)
@@ -6053,6 +6054,7 @@ enum skl_disp_power_wells {
 #define CHICKEN_PIPESL_1(pipe) _MMIO_PIPE(pipe, _CHICKEN_PIPESL_1_A, _CHICKEN_PIPESL_1_B)
 
 #define DISP_ARB_CTL	_MMIO(0x45000)
+#define  DISP_FBC_MEMORY_WAKE		(1<<31)
 #define  DISP_TILE_SURFACE_SWIZZLING	(1<<13)
 #define  DISP_FBC_WM_DIS		(1<<15)
 #define DISP_ARB_CTL2	_MMIO(0x45004)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 416a1a356dec..3ac0015f8508 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -70,8 +70,13 @@ static void gen9_init_clock_gating(struct drm_device *dev)
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 
 	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl */
-	I915_WRITE(DISP_ARB_CTL,
-		   I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS);
+	/* WaFbcWakeMemOn:skl,bxt,kbl */
+	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
+		   DISP_FBC_WM_DIS |
+		   DISP_FBC_MEMORY_WAKE);
+
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_DISABLE_DUMMY0);
 }
 
 static void bxt_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 23/23] drm/i195/fbc: Add WaFbcNukeOnHostModify
  2016-05-26 15:29 ` [PATCH 23/23] drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl Mika Kuoppala
@ 2016-05-26 16:55   ` Mika Kuoppala
  0 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-26 16:55 UTC (permalink / raw)
  To: intel-gfx

Bspec states that we need to set nuke on modify all to prevent
screen corruption with fbc on skl and kbl.

v2: proper workaround name

References: HSD#2227109, HSDES#1404569388
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 drivers/gpu/drm/i915/intel_pm.c | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 2f3a3960f5f7..e08f29685b25 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2209,6 +2209,7 @@ enum skl_disp_power_wells {
 #define ILK_DPFC_FENCE_YOFF	_MMIO(0x43218)
 #define ILK_DPFC_CHICKEN	_MMIO(0x43224)
 #define   ILK_DPFC_DISABLE_DUMMY0 (1<<8)
+#define   ILK_DPFC_NUKE_ON_ANY_MODIFICATION	(1<<23)
 #define ILK_FBC_RT_BASE		_MMIO(0x2128)
 #define   ILK_FBC_RT_VALID	(1<<0)
 #define   SNB_FBC_FRONT_BUFFER	(1<<1)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 3ac0015f8508..c91ff8254c8e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6887,6 +6887,10 @@ static void kabylake_init_clock_gating(struct drm_device *dev)
 	if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
 		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
 			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
+
+	/* WaFbcNukeOnHostModify:kbl */
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
 }
 
 static void skylake_init_clock_gating(struct drm_device *dev)
@@ -6902,6 +6906,10 @@ static void skylake_init_clock_gating(struct drm_device *dev)
 	/* WAC6entrylatency:skl */
 	I915_WRITE(FBC_LLC_READ_CTRL, I915_READ(FBC_LLC_READ_CTRL) |
 		   FBC_LLC_FULLY_OPEN);
+
+	/* WaFbcNukeOnHostModify:skl */
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
 }
 
 static void broadwell_init_clock_gating(struct drm_device *dev)
-- 
2.5.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds (rev5)
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (23 preceding siblings ...)
  2016-05-26 16:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds Patchwork
@ 2016-05-26 17:37 ` Patchwork
  2016-06-06  7:51 ` [PATCH 00/23] kbl and gen9 workarounds Jani Nikula
  25 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2016-05-26 17:37 UTC (permalink / raw)
  To: Mika Kuoppala; +Cc: intel-gfx

== Series Details ==

Series: kbl and gen9 workarounds (rev5)
URL   : https://patchwork.freedesktop.org/series/7824/
State : warning

== Summary ==

Series 7824v5 kbl and gen9 workarounds
http://patchwork.freedesktop.org/api/1.0/series/7824/revisions/5/mbox

Test gem_exec_basic:
        Subgroup gtt-default:
                pass       -> DMESG-WARN (ro-skl-i7-6700hq)
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-skl-i7-6700k)
Test kms_sink_crc_basic:
                skip       -> PASS       (ro-skl-i7-6700hq)

fi-hsw-i7-4770r  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
fi-skl-i7-6700k  total:209  pass:183  dwarn:1   dfail:0   fail:0   skip:25 
fi-snb-i7-2600   total:209  pass:170  dwarn:0   dfail:0   fail:0   skip:39 
ro-bdw-i5-5250u  total:209  pass:172  dwarn:0   dfail:0   fail:0   skip:37 
ro-bdw-i7-5557U  total:209  pass:197  dwarn:0   dfail:0   fail:0   skip:12 
ro-bdw-i7-5600u  total:209  pass:181  dwarn:0   dfail:0   fail:0   skip:28 
ro-bsw-n3050     total:209  pass:168  dwarn:0   dfail:0   fail:2   skip:39 
ro-byt-n2820     total:209  pass:169  dwarn:0   dfail:0   fail:3   skip:37 
ro-hsw-i3-4010u  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
ro-hsw-i7-4770r  total:209  pass:186  dwarn:0   dfail:0   fail:0   skip:23 
ro-ilk-i7-620lm  total:1    pass:0    dwarn:0   dfail:0   fail:0   skip:0  
ro-ilk1-i5-650   total:204  pass:146  dwarn:0   dfail:0   fail:1   skip:57 
ro-ivb-i7-3770   total:209  pass:177  dwarn:0   dfail:0   fail:0   skip:32 
ro-ivb2-i7-3770  total:209  pass:181  dwarn:0   dfail:0   fail:0   skip:28 
ro-skl-i7-6700hq total:204  pass:180  dwarn:3   dfail:0   fail:0   skip:21 
ro-snb-i7-2620M  total:209  pass:170  dwarn:0   dfail:0   fail:1   skip:38 
fi-bdw-i7-5557u failed to connect after reboot
fi-byt-n2820 failed to connect after reboot
fi-hsw-i7-4770k failed to connect after reboot

Results at /archive/results/CI_IGT_test/RO_Patchwork_1029/

c17d7e8 drm-intel-nightly: 2016y-05m-26d-15h-04m-52s UTC integration manifest
87be4c0 drm/i195/fbc: Add WaFbcNukeOnHostModify
8f40648 drm/i915/gen9: Add WaFbcWakeMemOn
9da082e drm/i915/gen9: Add WaFbcTurnOffFbcWatermark
fdc35ab drm/i915/gen9: Add WaEnableChickenDCPR
1381f29 drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing
ab1f052 drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl
ee87a20 drm/i915/kbl: Add WaForGAMHang
46e8133 drm/i915/skl: Add WAC6entrylatency
d0b632d drm/i915/gen9: Add WaDisableSkipCaching
cfb4f0a drm/i915: Add WaInsertDummyPushConstP for bxt and kbl
6eff6d2 drm/i915/kbl: Add WaDisableDynamicCreditSharing
7d1faa3 drm/i915/kbl: Add WaDisableGamClockGating
35d92fb drm/i915/gen9: Enable must set chicken bits in config0 reg
79f7b60 drm/i915/kbl: Add WaDisableLSQCROPERFforOCL
f665c0b drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl
1129de9 drm/i915/kbl: Add WaDisableSDEUnitClockGating
74edba7 drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0
0bf8e7a drm/i915/kbl: Add WaEnableGapsTsvCreditFix
528548d drm/i915: Mimic skl with WaForceEnableNonCoherent
f4427f0 drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent
851ccbac drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0
7139e3a drm/i915/kbl: Add REVID macro
112a177 drm/i915/kbl: Init gen9 workarounds

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix
  2016-05-26 15:29 ` [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix Mika Kuoppala
@ 2016-05-27  8:14   ` Arun Siluvery
  0 siblings, 0 replies; 35+ messages in thread
From: Arun Siluvery @ 2016-05-27  8:14 UTC (permalink / raw)
  To: Mika Kuoppala, intel-gfx

On 26/05/2016 20:59, Mika Kuoppala wrote:
> We need this crucial workaround from skl also to all kbl revisions.
> Lack of it was causing system hangs on skl enabling so this is
> a must have.
>
> References: HSD#2126660
> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_ringbuffer.c | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 91d5d093f3cb..3902700d37ef 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -1000,6 +1000,13 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>   		WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
>   				  GEN8_SAMPLER_POWER_BYPASS_DIS);
>
> +	/* WaEnableGapsTsvCreditFix:skl,kbl */
> +	if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, REVID_FOREVER) ||
> +	    IS_KABYLAKE(dev_priv)) {
> +		I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
> +					   GEN9_GAPS_TSV_CREDIT_DISABLE));
> +	}
Based on the feedback that I got earlier, if a WA is applicable to 
different platforms and specific revisions then it was suggested to keep 
them in individual functions so that we can avoid revid checks in the 
common function.

regards
Arun

> +
>   	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl */
>   	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
>
> @@ -1094,12 +1101,6 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
>   		I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
>   			   GEN8_LQSC_RO_PERF_DIS);
>
> -	/* WaEnableGapsTsvCreditFix:skl */
> -	if (IS_SKL_REVID(dev_priv, SKL_REVID_C0, REVID_FOREVER)) {
> -		I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
> -					   GEN9_GAPS_TSV_CREDIT_DISABLE));
> -	}
> -
>   	/* WaDisablePowerCompilerClockGating:skl */
>   	if (IS_SKL_REVID(dev_priv, SKL_REVID_B0, SKL_REVID_B0))
>   		WA_SET_BIT_MASKED(HIZ_CHICKEN,
>

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl
  2016-05-26 15:29 ` [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl Mika Kuoppala
@ 2016-05-27  8:18   ` Mika Kuoppala
  0 siblings, 0 replies; 35+ messages in thread
From: Mika Kuoppala @ 2016-05-27  8:18 UTC (permalink / raw)
  To: intel-gfx

Mika Kuoppala <mika.kuoppala@linux.intel.com> writes:

> [ text/plain ]
> According to bspec this workaround helps to reduce lag and improve
> performance on edp.
>

Bspec says this is for bdw,skl.
wa database says this is for bdw and all gen9.

If we write to 0x42090 on kbl,skl it doesn't
hold value and we get the mmio debug traces as
shown in the CI/bat.

Lets make this for bdw only as it seems to
have this register.

-Mika



> References: HSD#2134579
> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h | 3 +++
>  drivers/gpu/drm/i915/intel_pm.c | 8 ++++++++
>  2 files changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index e3077259541a..1f84c2ff3563 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -6035,6 +6035,9 @@ enum skl_disp_power_wells {
>  #define  FORCE_ARB_IDLE_PLANES	(1 << 14)
>  #define  SKL_EDP_PSR_FIX_RDWRAP	(1 << 3)
>  
> +#define CHICKEN_PAR2_1		_MMIO(0x42090)
> +#define  KVM_CONFIG_CHANGE_NOTIFICATION_SELECT	(1 << 14)
> +
>  #define _CHICKEN_PIPESL_1_A	0x420b0
>  #define _CHICKEN_PIPESL_1_B	0x420b4
>  #define  HSW_FBCQ_DIS			(1 << 22)
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index fc34add6ab82..5d9b7ff9dc18 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -6870,6 +6870,10 @@ static void skylake_init_clock_gating(struct drm_device *dev)
>  	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl */
>  	I915_WRITE(CHICKEN_PAR1_1,
>  		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
> +
> +	/* WaKVMNotificationOnConfigChange:skl */
> +	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
> +		   | KVM_CONFIG_CHANGE_NOTIFICATION_SELECT);
>  }
>  
>  static void broadwell_init_clock_gating(struct drm_device *dev)
> @@ -6916,6 +6920,10 @@ static void broadwell_init_clock_gating(struct drm_device *dev)
>  	 */
>  	I915_WRITE(HSW_GTT_CACHE_EN, GTT_CACHE_EN_ALL);
>  
> +	/* WaKVMNotificationOnConfigChange:bdw */
> +	I915_WRITE(CHICKEN_PAR2_1, I915_READ(CHICKEN_PAR2_1)
> +		   | KVM_CONFIG_CHANGE_NOTIFICATION_SELECT);
> +
>  	lpt_init_clock_gating(dev);
>  }
>  
> -- 
> 2.5.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 00/23] kbl and gen9 workarounds
  2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
                   ` (24 preceding siblings ...)
  2016-05-26 17:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds (rev5) Patchwork
@ 2016-06-06  7:51 ` Jani Nikula
  25 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2016-06-06  7:51 UTC (permalink / raw)
  To: Mika Kuoppala, intel-gfx

On Thu, 26 May 2016, Mika Kuoppala <mika.kuoppala@linux.intel.com> wrote:
> I noticed that we didn't setup any workarounds for kbl and so
> here is a series to get necessities covered on kbl. And while on
> it add few to bxt and skl. In the end there are also few fbc
> ones I bumped into.

On a related note, we should remove all skl pre-pro workarounds, and
make the production workarounds unconditional. Nobody should be running
early hardware anymore.

BR,
Jani.


>
> Mika Kuoppala (23):
>   drm/i915/kbl: Init gen9 workarounds
>   drm/i915/kbl: Add REVID macro
>   drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0
>   drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent
>   drm/i915: Mimic skl with WaForceEnableNonCoherent
>   drm/i915/kbl: Add WaEnableGapsTsvCreditFix
>   drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0
>   drm/i915/kbl: Add WaDisableSDEUnitClockGating
>   drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw,skl
>   drm/i915/kbl: Add WaDisableLSQCROPERFforOCL
>   drm/i915/gen9: Enable must set chicken bits in config0 reg
>   drm/i915/kbl: Add WaDisableGamClockGating
>   drm/i915/kbl: Add WaDisableDynamicCreditSharing
>   drm/i915: Add WaInsertDummyPushConstP for bxt and kbl
>   drm/i915/gen9: Add WaDisableSkipCaching
>   drm/i915/skl: Add WAC6entrylatency
>   drm/i915/kbl: Add WaForGAMHang
>   drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl
>   drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing
>   drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling.
>   drm/i915/gen9: Set fbc watermarks disabled
>   drm/i915/gen9: Prevent fbc corruption/system hangs with high bw
>   drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl
>
>  drivers/gpu/drm/i915/i915_drv.h         |   9 ++
>  drivers/gpu/drm/i915/i915_gem_stolen.c  |   6 +-
>  drivers/gpu/drm/i915/i915_reg.h         |  20 ++++
>  drivers/gpu/drm/i915/intel_lrc.c        |  57 ++++++++++-
>  drivers/gpu/drm/i915/intel_mocs.c       |  10 ++
>  drivers/gpu/drm/i915/intel_pm.c         |  67 +++++++++++--
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 167 +++++++++++++++++++++-----------
>  7 files changed, 266 insertions(+), 70 deletions(-)

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2016-06-06  7:51 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-26 15:29 [PATCH 00/23] kbl and gen9 workarounds Mika Kuoppala
2016-05-26 15:29 ` [PATCH 01/23] drm/i915/kbl: Init " Mika Kuoppala
2016-05-26 15:29 ` [PATCH 02/23] drm/i915/kbl: Add REVID macro Mika Kuoppala
2016-05-26 15:29 ` [PATCH 03/23] drm/i915/kbl: Add WaSkipStolenMemoryFirstPage for A0 Mika Kuoppala
2016-05-26 15:29 ` [PATCH 04/23] drm/i915/gen9: Always apply WaForceContextSaveRestoreNonCoherent Mika Kuoppala
2016-05-26 15:29 ` [PATCH 05/23] drm/i915: Mimic skl with WaForceEnableNonCoherent Mika Kuoppala
2016-05-26 15:29 ` [PATCH 06/23] drm/i915/kbl: Add WaEnableGapsTsvCreditFix Mika Kuoppala
2016-05-27  8:14   ` Arun Siluvery
2016-05-26 15:29 ` [PATCH 07/23] drm/i915/kbl: Add WaDisableFenceDestinationToSLM for A0 Mika Kuoppala
2016-05-26 15:29 ` [PATCH 08/23] drm/i915/kbl: Add WaDisableSDEUnitClockGating Mika Kuoppala
2016-05-26 15:29 ` [PATCH 09/23] drm/i915/edp: Add WaKVMNotificationOnConfigChange:bdw, skl Mika Kuoppala
2016-05-27  8:18   ` Mika Kuoppala
2016-05-26 15:29 ` [PATCH 10/23] drm/i915/kbl: Add WaDisableLSQCROPERFforOCL Mika Kuoppala
2016-05-26 15:29 ` [PATCH 11/23] drm/i915/gen9: Enable must set chicken bits in config0 reg Mika Kuoppala
2016-05-26 15:29 ` [PATCH 12/23] drm/i915/kbl: Add WaDisableGamClockGating Mika Kuoppala
2016-05-26 15:29 ` [PATCH 13/23] drm/i915/kbl: Add WaDisableDynamicCreditSharing Mika Kuoppala
2016-05-26 15:29 ` [PATCH 14/23] drm/i915: Add WaInsertDummyPushConstP for bxt and kbl Mika Kuoppala
2016-05-26 15:29 ` [PATCH 15/23] drm/i915/gen9: Add WaDisableSkipCaching Mika Kuoppala
2016-05-26 15:29 ` [PATCH 16/23] drm/i915/skl: Add WAC6entrylatency Mika Kuoppala
2016-05-26 15:29 ` [PATCH 17/23] drm/i915/kbl: Add WaForGAMHang Mika Kuoppala
2016-05-26 15:29 ` [PATCH 18/23] drm/i915: Add WaDisableGafsUnitClkGating for skl and kbl Mika Kuoppala
2016-05-26 15:29 ` [PATCH 19/23] drm/i915/kbl: Add WaDisableSbeCacheDispatchPortSharing Mika Kuoppala
2016-05-26 15:29 ` [PATCH 20/23] drm/i915/gen9: Set wa for display underrun issues with Y & Yf Tiling Mika Kuoppala
2016-05-26 16:53   ` [PATCH 20/23] drm/i915/gen9: Add WaEnableChickenDCPR Mika Kuoppala
2016-05-26 15:29 ` [PATCH 21/23] drm/i915/gen9: Set fbc watermarks disabled Mika Kuoppala
2016-05-26 15:53   ` Ville Syrjälä
2016-05-26 16:06     ` Ville Syrjälä
2016-05-26 16:54   ` [PATCH 21/23] drm/i915/gen9: Add WaFbcTurnOffFbcWatermark Mika Kuoppala
2016-05-26 15:29 ` [PATCH 22/23] drm/i915/gen9: Prevent fbc corruption/system hangs with high bw Mika Kuoppala
2016-05-26 16:54   ` [PATCH 22/23] drm/i915/gen9: Add WaFbcWakeMemOn Mika Kuoppala
2016-05-26 15:29 ` [PATCH 23/23] drm/i195/fbc: Enable wa to prevent fbc corruption with skl and kbl Mika Kuoppala
2016-05-26 16:55   ` [PATCH 23/23] drm/i195/fbc: Add WaFbcNukeOnHostModify Mika Kuoppala
2016-05-26 16:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds Patchwork
2016-05-26 17:37 ` ✗ Ro.CI.BAT: warning for kbl and gen9 workarounds (rev5) Patchwork
2016-06-06  7:51 ` [PATCH 00/23] kbl and gen9 workarounds Jani Nikula

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.