All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
@ 2017-07-06  1:02 Rodrigo Vivi
  2017-07-06  1:02 ` [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization Rodrigo Vivi
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2017-07-06  1:02 UTC (permalink / raw)
  To: intel-gfx; +Cc: Mika Kuoppala, Rodrigo Vivi

Let's inherit workarounds from previous platforms that
according to wa_database and BSpec are still valid for
Cannonlake.

v2: Add missed workarounds.
v3: Rebase
v4: Remove bad chunk that was added to rc6 disable. (Ander)
    Also remove A0 W/a that are not needed anymore.
v5: Rebase on top of CFL.
v6: Remove empty gen9_init_perctx_bb and gen9_init_indirectctx_bb
    since they don't carry any gen10 related W/a. (by Oscar).
    Also Remove A0 exclusive workaround.

Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c    |  4 ++--
 drivers/gpu/drm/i915/i915_reg.h        |  6 ++++++
 drivers/gpu/drm/i915/intel_engine_cs.c | 19 +++++++++++++++++++
 drivers/gpu/drm/i915/intel_lrc.c       |  2 ++
 drivers/gpu/drm/i915/intel_pm.c        | 28 ++++++++++++++++++++++------
 5 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index de67084..08570a3 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -1880,12 +1880,12 @@ static void gtt_write_workarounds(struct drm_i915_private *dev_priv)
 	 * called on driver load and after a GPU reset, so you can place
 	 * workarounds here even if they get overwritten by GPU reset.
 	 */
-	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
+	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl,cnl */
 	if (IS_BROADWELL(dev_priv))
 		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_BDW);
 	else if (IS_CHERRYVIEW(dev_priv))
 		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_CHV);
-	else if (IS_GEN9_BC(dev_priv))
+	else if (IS_GEN9_BC(dev_priv) || IS_GEN10(dev_priv))
 		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_SKL);
 	else if (IS_GEN9_LP(dev_priv))
 		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_BXT);
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 64cc674..2999a2b 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -3626,6 +3626,12 @@ enum {
 #define   PWM1_GATING_DIS		(1 << 13)
 
 /*
+ * GEN10 clock gating regs
+ */
+#define SLICE_UNIT_LEVEL_CLKGATE	_MMIO(0x94d4)
+#define  SARBUNIT_CLKGATE_DIS		(1 << 5)
+
+/*
  * Display engine regs
  */
 
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index a55cd72..c520a41 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1067,6 +1067,23 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
 	return 0;
 }
 
+static int cnl_init_workarounds(struct intel_engine_cs *engine)
+{
+	struct drm_i915_private *dev_priv = engine->i915;
+	int ret;
+
+	/* WaInPlaceDecompressionHang:cnl */
+	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
+	/* WaEnablePreemptionGranularityControlByUMD:cnl */
+	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
 static int kbl_init_workarounds(struct intel_engine_cs *engine)
 {
 	struct drm_i915_private *dev_priv = engine->i915;
@@ -1187,6 +1204,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
 		err =  glk_init_workarounds(engine);
 	else if (IS_COFFEELAKE(dev_priv))
 		err = cfl_init_workarounds(engine);
+	else if (IS_CANNONLAKE(dev_priv))
+		err = cnl_init_workarounds(engine);
 	else
 		err = 0;
 	if (err)
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 699868d..8904ad5 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1175,6 +1175,8 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
 		return -EINVAL;
 
 	switch (INTEL_GEN(engine->i915)) {
+	case 10:
+		return 0;
 	case 9:
 		wa_bb_fn[0] = gen9_init_indirectctx_bb;
 		wa_bb_fn[1] = gen9_init_perctx_bb;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index c3fcadf..df1b608 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -58,24 +58,24 @@
 
 static void gen9_init_clock_gating(struct drm_i915_private *dev_priv)
 {
-	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
+	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl,cnl */
 	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);
 
-	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
+	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl,cnl */
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 
-	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
-	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
+	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl,cnl */
+	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl,cnl */
 	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
 		   DISP_FBC_WM_DIS |
 		   DISP_FBC_MEMORY_WAKE);
 
-	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
+	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl,cnl */
 	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
 		   ILK_DPFC_DISABLE_DUMMY0);
 }
@@ -8226,6 +8226,20 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
 	I915_WRITE(GEN7_MISCCPCTL, misccpctl);
 }
 
+static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
+{
+	gen9_init_clock_gating(dev_priv);
+
+	/* WaFbcNukeOnHostModify:cnl */
+	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
+		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
+
+	/* WaSarbUnitClockGatingDisable:cnl (pre-prod) */
+	if (IS_CNL_REVID(dev_priv, CNL_REVID_A0, CNL_REVID_B0))
+		I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE, I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
+			   SARBUNIT_CLKGATE_DIS);
+}
+
 static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
 {
 	gen9_init_clock_gating(dev_priv);
@@ -8706,7 +8720,9 @@ static void nop_init_clock_gating(struct drm_i915_private *dev_priv)
  */
 void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
 {
-	if (IS_SKYLAKE(dev_priv))
+	if (IS_CANNONLAKE(dev_priv))
+		dev_priv->display.init_clock_gating = cannonlake_init_clock_gating;
+	else if (IS_SKYLAKE(dev_priv))
 		dev_priv->display.init_clock_gating = skylake_init_clock_gating;
 	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
 		dev_priv->display.init_clock_gating = kabylake_init_clock_gating;
-- 
1.9.1

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

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

* [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
@ 2017-07-06  1:02 ` Rodrigo Vivi
  2017-08-15 11:06   ` Oscar Mateo
  2017-07-06  1:02 ` [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching Rodrigo Vivi
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Rodrigo Vivi @ 2017-07-06  1:02 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

WA to disable replay buffer destination buffer arbitration optimization.

Same Wa on previous platforms has a different name: WaToEnableHwFixForPushConstHWBug

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_engine_cs.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index c520a41..bc14f0b 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1072,6 +1072,10 @@ static int cnl_init_workarounds(struct intel_engine_cs *engine)
 	struct drm_i915_private *dev_priv = engine->i915;
 	int ret;
 
+	/* WaDisableReplayBufferBankArbitrationOptimization:cnl */
+	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
+			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
+
 	/* WaInPlaceDecompressionHang:cnl */
 	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
 		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
-- 
1.9.1

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

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

* [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
  2017-07-06  1:02 ` [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization Rodrigo Vivi
@ 2017-07-06  1:02 ` Rodrigo Vivi
  2017-08-15 11:08   ` Oscar Mateo
  2017-07-06  1:02 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Rodrigo Vivi @ 2017-07-06  1:02 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

WA forTDS handle reallocation getting dropped by SDE,
which may result in PS attribute corruption.

Disable enhanced SBE vertex caching in COMMON_SLICE_CHICKEN2 offset.

v2: Make it until B0 as spec tells. (by Mika).

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
 drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index bc14f0b..f7ebadb 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1076,6 +1076,11 @@ static int cnl_init_workarounds(struct intel_engine_cs *engine)
 	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
 			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
 
+	/* WaDisableEnhancedSBEVertexCaching:cnl (pre-prod) */
+	if (IS_CNL_REVID(dev_priv, 0, CNL_REVID_B0))
+		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
+				  GEN8_CSC2_SBE_VUE_CACHE_CONSERVATIVE);
+
 	/* WaInPlaceDecompressionHang:cnl */
 	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
 		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
-- 
1.9.1

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

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

* [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
  2017-07-06  1:02 ` [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization Rodrigo Vivi
  2017-07-06  1:02 ` [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching Rodrigo Vivi
@ 2017-07-06  1:02 ` Rodrigo Vivi
  2017-08-15 11:14   ` Oscar Mateo
  2017-07-06  1:50 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Rodrigo Vivi @ 2017-07-06  1:02 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ben Widawsky, Rodrigo Vivi

This bit enables hardware that will change the approximation used for distances
calculations for AA wide lines so that they are rendered more accurately.

The default value for this bit leaves the legacy behavior. There is no good
reason to not enable the new approximation except if comparing to previous GEN
rendered images.

v2: Rebase

Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 drivers/gpu/drm/i915/intel_pm.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 2999a2b..78af798 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2310,6 +2310,7 @@ enum skl_disp_power_wells {
 # define _3D_CHICKEN2_WM_READ_PIPELINED			(1 << 14)
 #define _3D_CHICKEN3	_MMIO(0x2090)
 #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL		(1 << 10)
+#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE	(1 << 5)
 #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL		(1 << 5)
 #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)	((x)<<1) /* gen8+ */
 #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH	(1 << 1) /* gen6 */
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index df1b608..5d5df2b 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -8230,6 +8230,9 @@ static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
 {
 	gen9_init_clock_gating(dev_priv);
 
+	I915_WRITE(_3D_CHICKEN3,
+		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
+
 	/* WaFbcNukeOnHostModify:cnl */
 	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
 		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
-- 
1.9.1

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

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

* ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
                   ` (2 preceding siblings ...)
  2017-07-06  1:02 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
@ 2017-07-06  1:50 ` Patchwork
  2017-08-12  0:28 ` [PATCH 1/4] " Rodrigo Vivi
  2017-08-15 10:54 ` Oscar Mateo
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2017-07-06  1:50 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
URL   : https://patchwork.freedesktop.org/series/26881/
State : success

== Summary ==

Series 26881v1 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/26881/revisions/1/mbox/

Test gem_exec_flush:
        Subgroup basic-batch-kernel-default-uc:
                fail       -> PASS       (fi-snb-2600) fdo#100007
Test gem_exec_suspend:
        Subgroup basic-s4-devices:
                pass       -> DMESG-WARN (fi-kbl-7560u) fdo#100125

fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#100125 https://bugs.freedesktop.org/show_bug.cgi?id=100125

fi-bdw-5557u     total:279  pass:268  dwarn:0   dfail:0   fail:0   skip:11  time:439s
fi-bdw-gvtdvm    total:279  pass:257  dwarn:8   dfail:0   fail:0   skip:14  time:430s
fi-blb-e6850     total:279  pass:224  dwarn:1   dfail:0   fail:0   skip:54  time:357s
fi-bsw-n3050     total:279  pass:243  dwarn:0   dfail:0   fail:0   skip:36  time:528s
fi-bxt-j4205     total:279  pass:260  dwarn:0   dfail:0   fail:0   skip:19  time:508s
fi-byt-j1900     total:279  pass:254  dwarn:1   dfail:0   fail:0   skip:24  time:482s
fi-byt-n2820     total:279  pass:250  dwarn:1   dfail:0   fail:0   skip:28  time:480s
fi-glk-2a        total:279  pass:260  dwarn:0   dfail:0   fail:0   skip:19  time:592s
fi-hsw-4770      total:279  pass:263  dwarn:0   dfail:0   fail:0   skip:16  time:434s
fi-hsw-4770r     total:279  pass:263  dwarn:0   dfail:0   fail:0   skip:16  time:421s
fi-ilk-650       total:279  pass:229  dwarn:0   dfail:0   fail:0   skip:50  time:417s
fi-ivb-3520m     total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:494s
fi-ivb-3770      total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:471s
fi-kbl-7500u     total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:467s
fi-kbl-7560u     total:279  pass:268  dwarn:1   dfail:0   fail:0   skip:10  time:572s
fi-kbl-r         total:279  pass:260  dwarn:1   dfail:0   fail:0   skip:18  time:575s
fi-pnv-d510      total:279  pass:222  dwarn:2   dfail:0   fail:0   skip:55  time:562s
fi-skl-6260u     total:279  pass:269  dwarn:0   dfail:0   fail:0   skip:10  time:457s
fi-skl-6700hq    total:279  pass:262  dwarn:0   dfail:0   fail:0   skip:17  time:578s
fi-skl-6700k     total:279  pass:257  dwarn:4   dfail:0   fail:0   skip:18  time:470s
fi-skl-6770hq    total:279  pass:269  dwarn:0   dfail:0   fail:0   skip:10  time:474s
fi-skl-gvtdvm    total:279  pass:266  dwarn:0   dfail:0   fail:0   skip:13  time:436s
fi-snb-2520m     total:279  pass:251  dwarn:0   dfail:0   fail:0   skip:28  time:540s
fi-snb-2600      total:279  pass:250  dwarn:0   dfail:0   fail:0   skip:29  time:406s

cefc82aab8bb8ec201e922cf23d227c47845094c drm-tip: 2017y-07m-05d-20h-21m-17s UTC integration manifest
fc6ef70 drm/i915/cnl: Apply large line width optimization
655d897 drm/i915/cnl: WaDisableEnhancedSBEVertexCaching
8a9e76d drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization
aa879b4 drm/i915/cnl: Introduce initial Cannonlake Workarounds.

== Logs ==

For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_5122/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
                   ` (3 preceding siblings ...)
  2017-07-06  1:50 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Patchwork
@ 2017-08-12  0:28 ` Rodrigo Vivi
  2017-08-15 10:54 ` Oscar Mateo
  5 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2017-08-12  0:28 UTC (permalink / raw)
  To: Rodrigo Vivi, Oscar Mateo; +Cc: intel-gfx, Mika Kuoppala

Mika and/or Oscar, could you please review these 4 patches?

On Wed, Jul 5, 2017 at 6:02 PM, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote:
> Let's inherit workarounds from previous platforms that
> according to wa_database and BSpec are still valid for
> Cannonlake.
>
> v2: Add missed workarounds.
> v3: Rebase
> v4: Remove bad chunk that was added to rc6 disable. (Ander)
>     Also remove A0 W/a that are not needed anymore.
> v5: Rebase on top of CFL.
> v6: Remove empty gen9_init_perctx_bb and gen9_init_indirectctx_bb
>     since they don't carry any gen10 related W/a. (by Oscar).
>     Also Remove A0 exclusive workaround.
>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Mika Kuoppala <mika.kuoppala@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c    |  4 ++--
>  drivers/gpu/drm/i915/i915_reg.h        |  6 ++++++
>  drivers/gpu/drm/i915/intel_engine_cs.c | 19 +++++++++++++++++++
>  drivers/gpu/drm/i915/intel_lrc.c       |  2 ++
>  drivers/gpu/drm/i915/intel_pm.c        | 28 ++++++++++++++++++++++------
>  5 files changed, 51 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index de67084..08570a3 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -1880,12 +1880,12 @@ static void gtt_write_workarounds(struct drm_i915_private *dev_priv)
>          * called on driver load and after a GPU reset, so you can place
>          * workarounds here even if they get overwritten by GPU reset.
>          */
> -       /* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
> +       /* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl,cnl */
>         if (IS_BROADWELL(dev_priv))
>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_BDW);
>         else if (IS_CHERRYVIEW(dev_priv))
>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_CHV);
> -       else if (IS_GEN9_BC(dev_priv))
> +       else if (IS_GEN9_BC(dev_priv) || IS_GEN10(dev_priv))
>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_SKL);
>         else if (IS_GEN9_LP(dev_priv))
>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_BXT);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 64cc674..2999a2b 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -3626,6 +3626,12 @@ enum {
>  #define   PWM1_GATING_DIS              (1 << 13)
>
>  /*
> + * GEN10 clock gating regs
> + */
> +#define SLICE_UNIT_LEVEL_CLKGATE       _MMIO(0x94d4)
> +#define  SARBUNIT_CLKGATE_DIS          (1 << 5)
> +
> +/*
>   * Display engine regs
>   */
>
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index a55cd72..c520a41 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -1067,6 +1067,23 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
>         return 0;
>  }
>
> +static int cnl_init_workarounds(struct intel_engine_cs *engine)
> +{
> +       struct drm_i915_private *dev_priv = engine->i915;
> +       int ret;
> +
> +       /* WaInPlaceDecompressionHang:cnl */
> +       WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
> +                  GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> +
> +       /* WaEnablePreemptionGranularityControlByUMD:cnl */
> +       ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
> +       if (ret)
> +               return ret;
> +
> +       return 0;
> +}
> +
>  static int kbl_init_workarounds(struct intel_engine_cs *engine)
>  {
>         struct drm_i915_private *dev_priv = engine->i915;
> @@ -1187,6 +1204,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
>                 err =  glk_init_workarounds(engine);
>         else if (IS_COFFEELAKE(dev_priv))
>                 err = cfl_init_workarounds(engine);
> +       else if (IS_CANNONLAKE(dev_priv))
> +               err = cnl_init_workarounds(engine);
>         else
>                 err = 0;
>         if (err)
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 699868d..8904ad5 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1175,6 +1175,8 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
>                 return -EINVAL;
>
>         switch (INTEL_GEN(engine->i915)) {
> +       case 10:
> +               return 0;
>         case 9:
>                 wa_bb_fn[0] = gen9_init_indirectctx_bb;
>                 wa_bb_fn[1] = gen9_init_perctx_bb;
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index c3fcadf..df1b608 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -58,24 +58,24 @@
>
>  static void gen9_init_clock_gating(struct drm_i915_private *dev_priv)
>  {
> -       /* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
> +       /* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl,cnl */
>         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);
>
> -       /* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
> +       /* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl,cnl */
>         I915_WRITE(GEN8_CHICKEN_DCPR_1,
>                    I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>
> -       /* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
> -       /* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
> +       /* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl,cnl */
> +       /* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl,cnl */
>         I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
>                    DISP_FBC_WM_DIS |
>                    DISP_FBC_MEMORY_WAKE);
>
> -       /* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
> +       /* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl,cnl */
>         I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>                    ILK_DPFC_DISABLE_DUMMY0);
>  }
> @@ -8226,6 +8226,20 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
>         I915_WRITE(GEN7_MISCCPCTL, misccpctl);
>  }
>
> +static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
> +{
> +       gen9_init_clock_gating(dev_priv);
> +
> +       /* WaFbcNukeOnHostModify:cnl */
> +       I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
> +                  ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
> +
> +       /* WaSarbUnitClockGatingDisable:cnl (pre-prod) */
> +       if (IS_CNL_REVID(dev_priv, CNL_REVID_A0, CNL_REVID_B0))
> +               I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE, I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
> +                          SARBUNIT_CLKGATE_DIS);
> +}
> +
>  static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
>  {
>         gen9_init_clock_gating(dev_priv);
> @@ -8706,7 +8720,9 @@ static void nop_init_clock_gating(struct drm_i915_private *dev_priv)
>   */
>  void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
>  {
> -       if (IS_SKYLAKE(dev_priv))
> +       if (IS_CANNONLAKE(dev_priv))
> +               dev_priv->display.init_clock_gating = cannonlake_init_clock_gating;
> +       else if (IS_SKYLAKE(dev_priv))
>                 dev_priv->display.init_clock_gating = skylake_init_clock_gating;
>         else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>                 dev_priv->display.init_clock_gating = kabylake_init_clock_gating;
> --
> 1.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
  2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
                   ` (4 preceding siblings ...)
  2017-08-12  0:28 ` [PATCH 1/4] " Rodrigo Vivi
@ 2017-08-15 10:54 ` Oscar Mateo
  2017-08-15 23:03   ` Rodrigo Vivi
  5 siblings, 1 reply; 15+ messages in thread
From: Oscar Mateo @ 2017-08-15 10:54 UTC (permalink / raw)
  To: Rodrigo Vivi, intel-gfx; +Cc: Mika Kuoppala



On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
> Let's inherit workarounds from previous platforms that
> according to wa_database and BSpec are still valid for
> Cannonlake.
>
> v2: Add missed workarounds.
> v3: Rebase
> v4: Remove bad chunk that was added to rc6 disable. (Ander)
>      Also remove A0 W/a that are not needed anymore.
> v5: Rebase on top of CFL.
> v6: Remove empty gen9_init_perctx_bb and gen9_init_indirectctx_bb
>      since they don't carry any gen10 related W/a. (by Oscar).
>      Also Remove A0 exclusive workaround.
>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Mika Kuoppala <mika.kuoppala@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_gem_gtt.c    |  4 ++--
>   drivers/gpu/drm/i915/i915_reg.h        |  6 ++++++
>   drivers/gpu/drm/i915/intel_engine_cs.c | 19 +++++++++++++++++++
>   drivers/gpu/drm/i915/intel_lrc.c       |  2 ++
>   drivers/gpu/drm/i915/intel_pm.c        | 28 ++++++++++++++++++++++------
>   5 files changed, 51 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index de67084..08570a3 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -1880,12 +1880,12 @@ static void gtt_write_workarounds(struct drm_i915_private *dev_priv)
>   	 * called on driver load and after a GPU reset, so you can place
>   	 * workarounds here even if they get overwritten by GPU reset.
>   	 */
> -	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
> +	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl,cnl */
>   	if (IS_BROADWELL(dev_priv))
>   		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_BDW);
>   	else if (IS_CHERRYVIEW(dev_priv))
>   		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_CHV);
> -	else if (IS_GEN9_BC(dev_priv))
> +	else if (IS_GEN9_BC(dev_priv) || IS_GEN10(dev_priv))
>   		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_SKL);
>   	else if (IS_GEN9_LP(dev_priv))
>   		I915_WRITE(GEN8_L3_LRA_1_GPGPU, GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_BXT);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 64cc674..2999a2b 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -3626,6 +3626,12 @@ enum {
>   #define   PWM1_GATING_DIS		(1 << 13)
>   
>   /*
> + * GEN10 clock gating regs
> + */
> +#define SLICE_UNIT_LEVEL_CLKGATE	_MMIO(0x94d4)
> +#define  SARBUNIT_CLKGATE_DIS		(1 << 5)
> +
> +/*
>    * Display engine regs
>    */
>   
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index a55cd72..c520a41 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -1067,6 +1067,23 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
>   	return 0;
>   }
>   
> +static int cnl_init_workarounds(struct intel_engine_cs *engine)
> +{
> +	struct drm_i915_private *dev_priv = engine->i915;
> +	int ret;
> +
> +	/* WaInPlaceDecompressionHang:cnl */
> +	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
> +		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> +
> +	/* WaEnablePreemptionGranularityControlByUMD:cnl */
> +	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
> +	if (ret)
> +		return ret;
> +
> +	return 0;
> +}
> +
>   static int kbl_init_workarounds(struct intel_engine_cs *engine)
>   {
>   	struct drm_i915_private *dev_priv = engine->i915;
> @@ -1187,6 +1204,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
>   		err =  glk_init_workarounds(engine);
>   	else if (IS_COFFEELAKE(dev_priv))
>   		err = cfl_init_workarounds(engine);
> +	else if (IS_CANNONLAKE(dev_priv))
> +		err = cnl_init_workarounds(engine);
>   	else
>   		err = 0;
>   	if (err)
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 699868d..8904ad5 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1175,6 +1175,8 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
>   		return -EINVAL;
>   
>   	switch (INTEL_GEN(engine->i915)) {
> +	case 10:
> +		return 0;
>   	case 9:
>   		wa_bb_fn[0] = gen9_init_indirectctx_bb;
>   		wa_bb_fn[1] = gen9_init_perctx_bb;
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index c3fcadf..df1b608 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -58,24 +58,24 @@
>   
>   static void gen9_init_clock_gating(struct drm_i915_private *dev_priv)
>   {
> -	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
> +	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl,cnl */
>   	I915_WRITE(CHICKEN_PAR1_1,
>   		   I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
>   

I think the above Wa#828 (which should be called 
WaPSR2MultipleRegionUpdateCorruption) only applies to CNL A0.

>   	I915_WRITE(GEN8_CONFIG0,
>   		   I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
>   

The above (chicken bits in config0 reg) does not seem to be required for 
CNL. In fact, bits 1, 2 & 3 are not chicken bits in CNL anymore :(

When applying this patch to the latest drm-tip, I've also noticed there 
is a new display WA#0390 from Ville here. I believe it applies to CNL as 
well, so maybe it only requires adding the "cnl" tag to it (+Ville to 
confirm).

> -	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
> +	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl,cnl */
>   	I915_WRITE(GEN8_CHICKEN_DCPR_1,
>   		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>   
> -	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
> -	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
> +	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl,cnl */
> +	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl,cnl */
>   	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
>   		   DISP_FBC_WM_DIS |
>   		   DISP_FBC_MEMORY_WAKE);
>   

I have WaFbcTurnOffFbcWatermark only until CNL A0, but at the same time 
it's marked as permanent WA.

> -	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
> +	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl,cnl */
>   	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>   		   ILK_DPFC_DISABLE_DUMMY0);

Again, I have this only until CNL A0, but at the same time it's marked 
as permanent WA.

>   }
> @@ -8226,6 +8226,20 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
>   	I915_WRITE(GEN7_MISCCPCTL, misccpctl);
>   }
>   
> +static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
> +{
> +	gen9_init_clock_gating(dev_priv);
> +
> +	/* WaFbcNukeOnHostModify:cnl */
> +	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
> +		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);

This should have been fixed in B0.

> +	/* WaSarbUnitClockGatingDisable:cnl (pre-prod) */
> +	if (IS_CNL_REVID(dev_priv, CNL_REVID_A0, CNL_REVID_B0))
> +		I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE, I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
> +			   SARBUNIT_CLKGATE_DIS);
> +}
> +
>   static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
>   {
>   	gen9_init_clock_gating(dev_priv);
> @@ -8706,7 +8720,9 @@ static void nop_init_clock_gating(struct drm_i915_private *dev_priv)
>    */
>   void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
>   {
> -	if (IS_SKYLAKE(dev_priv))
> +	if (IS_CANNONLAKE(dev_priv))
> +		dev_priv->display.init_clock_gating = cannonlake_init_clock_gating;
> +	else if (IS_SKYLAKE(dev_priv))
>   		dev_priv->display.init_clock_gating = skylake_init_clock_gating;
>   	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>   		dev_priv->display.init_clock_gating = kabylake_init_clock_gating;

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

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

* Re: [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization
  2017-07-06  1:02 ` [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization Rodrigo Vivi
@ 2017-08-15 11:06   ` Oscar Mateo
  0 siblings, 0 replies; 15+ messages in thread
From: Oscar Mateo @ 2017-08-15 11:06 UTC (permalink / raw)
  To: Rodrigo Vivi, intel-gfx



On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
> WA to disable replay buffer destination buffer arbitration optimization.
>
> Same Wa on previous platforms has a different name: WaToEnableHwFixForPushConstHWBug
>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_engine_cs.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index c520a41..bc14f0b 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -1072,6 +1072,10 @@ static int cnl_init_workarounds(struct intel_engine_cs *engine)
>   	struct drm_i915_private *dev_priv = engine->i915;
>   	int ret;
>   
> +	/* WaDisableReplayBufferBankArbitrationOptimization:cnl */
> +	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> +			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
> +

This should be from B0 onwards. For A0, there is a 3D workaround 
(WaInsertDummyPushConstPs)

>   	/* WaInPlaceDecompressionHang:cnl */
>   	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
>   		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);

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

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

* Re: [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching
  2017-07-06  1:02 ` [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching Rodrigo Vivi
@ 2017-08-15 11:08   ` Oscar Mateo
  0 siblings, 0 replies; 15+ messages in thread
From: Oscar Mateo @ 2017-08-15 11:08 UTC (permalink / raw)
  To: Rodrigo Vivi, intel-gfx



On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
> WA forTDS handle reallocation getting dropped by SDE,
> which may result in PS attribute corruption.
>
> Disable enhanced SBE vertex caching in COMMON_SLICE_CHICKEN2 offset.
>
> v2: Make it until B0 as spec tells. (by Mika).
>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_engine_cs.c | 5 +++++
>   1 file changed, 5 insertions(+)

Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>

> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index bc14f0b..f7ebadb 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -1076,6 +1076,11 @@ static int cnl_init_workarounds(struct intel_engine_cs *engine)
>   	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
>   			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
>   
> +	/* WaDisableEnhancedSBEVertexCaching:cnl (pre-prod) */
> +	if (IS_CNL_REVID(dev_priv, 0, CNL_REVID_B0))
> +		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> +				  GEN8_CSC2_SBE_VUE_CACHE_CONSERVATIVE);
> +
>   	/* WaInPlaceDecompressionHang:cnl */
>   	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
>   		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);

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

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

* Re: [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-07-06  1:02 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
@ 2017-08-15 11:14   ` Oscar Mateo
  2017-08-15 22:45     ` Rodrigo Vivi
  0 siblings, 1 reply; 15+ messages in thread
From: Oscar Mateo @ 2017-08-15 11:14 UTC (permalink / raw)
  To: intel-gfx



On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
> This bit enables hardware that will change the approximation used for distances
> calculations for AA wide lines so that they are rendered more accurately.
>
> The default value for this bit leaves the legacy behavior. There is no good
> reason to not enable the new approximation except if comparing to previous GEN
> rendered images.

Sounds reasonable :)

> v2: Rebase
>
> Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_reg.h | 1 +
>   drivers/gpu/drm/i915/intel_pm.c | 3 +++
>   2 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 2999a2b..78af798 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2310,6 +2310,7 @@ enum skl_disp_power_wells {
>   # define _3D_CHICKEN2_WM_READ_PIPELINED			(1 << 14)
>   #define _3D_CHICKEN3	_MMIO(0x2090)
>   #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL		(1 << 10)
> +#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE	(1 << 5)
>   #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL		(1 << 5)
>   #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)	((x)<<1) /* gen8+ */
>   #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH	(1 << 1) /* gen6 */
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index df1b608..5d5df2b 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -8230,6 +8230,9 @@ static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
>   {
>   	gen9_init_clock_gating(dev_priv);
>   
> +	I915_WRITE(_3D_CHICKEN3,
> +		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
> +

Maybe add the justification for this as a comment?

>   	/* WaFbcNukeOnHostModify:cnl */
>   	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>   		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);

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

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

* Re: [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-08-15 11:14   ` Oscar Mateo
@ 2017-08-15 22:45     ` Rodrigo Vivi
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2017-08-15 22:45 UTC (permalink / raw)
  To: Oscar Mateo; +Cc: intel-gfx

On Tue, Aug 15, 2017 at 4:14 AM, Oscar Mateo <oscar.mateo@intel.com> wrote:
>
>
> On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
>>
>> This bit enables hardware that will change the approximation used for
>> distances
>> calculations for AA wide lines so that they are rendered more accurately.
>>
>> The default value for this bit leaves the legacy behavior. There is no
>> good
>> reason to not enable the new approximation except if comparing to previous
>> GEN
>> rendered images.
>
>
> Sounds reasonable :)
>
>
>> v2: Rebase
>>
>> Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_reg.h | 1 +
>>   drivers/gpu/drm/i915/intel_pm.c | 3 +++
>>   2 files changed, 4 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> b/drivers/gpu/drm/i915/i915_reg.h
>> index 2999a2b..78af798 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -2310,6 +2310,7 @@ enum skl_disp_power_wells {
>>   # define _3D_CHICKEN2_WM_READ_PIPELINED                       (1 << 14)
>>   #define _3D_CHICKEN3  _MMIO(0x2090)
>>   #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL           (1 << 10)
>> +#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE       (1 << 5)
>>   #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL                (1 << 5)
>>   #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)     ((x)<<1) /* gen8+
>> */
>>   #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH (1 << 1) /* gen6
>> */
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c
>> b/drivers/gpu/drm/i915/intel_pm.c
>> index df1b608..5d5df2b 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -8230,6 +8230,9 @@ static void cannonlake_init_clock_gating(struct
>> drm_i915_private *dev_priv)
>>   {
>>         gen9_init_clock_gating(dev_priv);
>>   +     I915_WRITE(_3D_CHICKEN3,
>> +
>> _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
>> +
>
>
> Maybe add the justification for this as a comment?

any suggestion?
I don't believe we need to replicate the commit message here and I don't know
what else to say besides that.

>
>>         /* WaFbcNukeOnHostModify:cnl */
>>         I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>>                    ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
>
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds.
  2017-08-15 10:54 ` Oscar Mateo
@ 2017-08-15 23:03   ` Rodrigo Vivi
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2017-08-15 23:03 UTC (permalink / raw)
  To: Oscar Mateo; +Cc: intel-gfx, Mika Kuoppala, Rodrigo Vivi

On Tue, Aug 15, 2017 at 3:54 AM, Oscar Mateo <oscar.mateo@intel.com> wrote:
>
>
> On 07/05/2017 06:02 PM, Rodrigo Vivi wrote:
>>
>> Let's inherit workarounds from previous platforms that
>> according to wa_database and BSpec are still valid for
>> Cannonlake.
>>
>> v2: Add missed workarounds.
>> v3: Rebase
>> v4: Remove bad chunk that was added to rc6 disable. (Ander)
>>      Also remove A0 W/a that are not needed anymore.
>> v5: Rebase on top of CFL.
>> v6: Remove empty gen9_init_perctx_bb and gen9_init_indirectctx_bb
>>      since they don't carry any gen10 related W/a. (by Oscar).
>>      Also Remove A0 exclusive workaround.
>>
>> Cc: Oscar Mateo <oscar.mateo@intel.com>
>> Cc: Mika Kuoppala <mika.kuoppala@intel.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_gem_gtt.c    |  4 ++--
>>   drivers/gpu/drm/i915/i915_reg.h        |  6 ++++++
>>   drivers/gpu/drm/i915/intel_engine_cs.c | 19 +++++++++++++++++++
>>   drivers/gpu/drm/i915/intel_lrc.c       |  2 ++
>>   drivers/gpu/drm/i915/intel_pm.c        | 28 ++++++++++++++++++++++------
>>   5 files changed, 51 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c
>> b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> index de67084..08570a3 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> @@ -1880,12 +1880,12 @@ static void gtt_write_workarounds(struct
>> drm_i915_private *dev_priv)
>>          * called on driver load and after a GPU reset, so you can place
>>          * workarounds here even if they get overwritten by GPU reset.
>>          */
>> -       /* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
>> +       /* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl,cnl */
>>         if (IS_BROADWELL(dev_priv))
>>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU,
>> GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_BDW);
>>         else if (IS_CHERRYVIEW(dev_priv))
>>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU,
>> GEN8_L3_LRA_1_GPGPU_DEFAULT_VALUE_CHV);
>> -       else if (IS_GEN9_BC(dev_priv))
>> +       else if (IS_GEN9_BC(dev_priv) || IS_GEN10(dev_priv))
>>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU,
>> GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_SKL);
>>         else if (IS_GEN9_LP(dev_priv))
>>                 I915_WRITE(GEN8_L3_LRA_1_GPGPU,
>> GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_BXT);
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> b/drivers/gpu/drm/i915/i915_reg.h
>> index 64cc674..2999a2b 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -3626,6 +3626,12 @@ enum {
>>   #define   PWM1_GATING_DIS             (1 << 13)
>>     /*
>> + * GEN10 clock gating regs
>> + */
>> +#define SLICE_UNIT_LEVEL_CLKGATE       _MMIO(0x94d4)
>> +#define  SARBUNIT_CLKGATE_DIS          (1 << 5)
>> +
>> +/*
>>    * Display engine regs
>>    */
>>   diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c
>> b/drivers/gpu/drm/i915/intel_engine_cs.c
>> index a55cd72..c520a41 100644
>> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
>> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
>> @@ -1067,6 +1067,23 @@ static int bxt_init_workarounds(struct
>> intel_engine_cs *engine)
>>         return 0;
>>   }
>>   +static int cnl_init_workarounds(struct intel_engine_cs *engine)
>> +{
>> +       struct drm_i915_private *dev_priv = engine->i915;
>> +       int ret;
>> +
>> +       /* WaInPlaceDecompressionHang:cnl */
>> +       WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
>> +                  GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
>> +
>> +       /* WaEnablePreemptionGranularityControlByUMD:cnl */
>> +       ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
>> +       if (ret)
>> +               return ret;
>> +
>> +       return 0;
>> +}
>> +
>>   static int kbl_init_workarounds(struct intel_engine_cs *engine)
>>   {
>>         struct drm_i915_private *dev_priv = engine->i915;
>> @@ -1187,6 +1204,8 @@ int init_workarounds_ring(struct intel_engine_cs
>> *engine)
>>                 err =  glk_init_workarounds(engine);
>>         else if (IS_COFFEELAKE(dev_priv))
>>                 err = cfl_init_workarounds(engine);
>> +       else if (IS_CANNONLAKE(dev_priv))
>> +               err = cnl_init_workarounds(engine);
>>         else
>>                 err = 0;
>>         if (err)
>> diff --git a/drivers/gpu/drm/i915/intel_lrc.c
>> b/drivers/gpu/drm/i915/intel_lrc.c
>> index 699868d..8904ad5 100644
>> --- a/drivers/gpu/drm/i915/intel_lrc.c
>> +++ b/drivers/gpu/drm/i915/intel_lrc.c
>> @@ -1175,6 +1175,8 @@ static int intel_init_workaround_bb(struct
>> intel_engine_cs *engine)
>>                 return -EINVAL;
>>         switch (INTEL_GEN(engine->i915)) {
>> +       case 10:
>> +               return 0;
>>         case 9:
>>                 wa_bb_fn[0] = gen9_init_indirectctx_bb;
>>                 wa_bb_fn[1] = gen9_init_perctx_bb;
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c
>> b/drivers/gpu/drm/i915/intel_pm.c
>> index c3fcadf..df1b608 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -58,24 +58,24 @@
>>     static void gen9_init_clock_gating(struct drm_i915_private *dev_priv)
>>   {
>> -       /* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
>> +       /* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl,cnl
>> */
>>         I915_WRITE(CHICKEN_PAR1_1,
>>                    I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
>>
>
>
> I think the above Wa#828 (which should be called
> WaPSR2MultipleRegionUpdateCorruption) only applies to CNL A0.
>
>>         I915_WRITE(GEN8_CONFIG0,
>>                    I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
>>
>
>
> The above (chicken bits in config0 reg) does not seem to be required for
> CNL. In fact, bits 1, 2 & 3 are not chicken bits in CNL anymore :(
>
> When applying this patch to the latest drm-tip, I've also noticed there is a
> new display WA#0390 from Ville here. I believe it applies to CNL as well, so
> maybe it only requires adding the "cnl" tag to it (+Ville to confirm).

spec only mentions that for gen9 all.
so leaving it out on next version. If needed we can add in a separated
patch anyways.

>
>> -       /* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
>> +       /* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl,cnl */
>>         I915_WRITE(GEN8_CHICKEN_DCPR_1,
>>                    I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>>   -     /* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
>> -       /* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
>> +       /* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl,cnl */
>> +       /* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl,cnl */
>>         I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
>>                    DISP_FBC_WM_DIS |
>>                    DISP_FBC_MEMORY_WAKE);
>>
>
>
> I have WaFbcTurnOffFbcWatermark only until CNL A0, but at the same time it's
> marked as permanent WA.
>
>> -       /* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
>> +       /* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl,cnl */
>>         I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>>                    ILK_DPFC_DISABLE_DUMMY0);
>
>
> Again, I have this only until CNL A0, but at the same time it's marked as
> permanent WA.
>
>>   }
>> @@ -8226,6 +8226,20 @@ static void gen8_set_l3sqc_credits(struct
>> drm_i915_private *dev_priv,
>>         I915_WRITE(GEN7_MISCCPCTL, misccpctl);
>>   }
>>   +static void cannonlake_init_clock_gating(struct drm_i915_private
>> *dev_priv)
>> +{
>> +       gen9_init_clock_gating(dev_priv);
>> +
>> +       /* WaFbcNukeOnHostModify:cnl */
>> +       I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>> +                  ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
>
>
> This should have been fixed in B0.
>
>> +       /* WaSarbUnitClockGatingDisable:cnl (pre-prod) */
>> +       if (IS_CNL_REVID(dev_priv, CNL_REVID_A0, CNL_REVID_B0))
>> +               I915_WRITE(SLICE_UNIT_LEVEL_CLKGATE,
>> I915_READ(SLICE_UNIT_LEVEL_CLKGATE) |
>> +                          SARBUNIT_CLKGATE_DIS);
>> +}
>> +
>>   static void kabylake_init_clock_gating(struct drm_i915_private
>> *dev_priv)
>>   {
>>         gen9_init_clock_gating(dev_priv);
>> @@ -8706,7 +8720,9 @@ static void nop_init_clock_gating(struct
>> drm_i915_private *dev_priv)
>>    */
>>   void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
>>   {
>> -       if (IS_SKYLAKE(dev_priv))
>> +       if (IS_CANNONLAKE(dev_priv))
>> +               dev_priv->display.init_clock_gating =
>> cannonlake_init_clock_gating;
>> +       else if (IS_SKYLAKE(dev_priv))
>>                 dev_priv->display.init_clock_gating =
>> skylake_init_clock_gating;
>>         else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>>                 dev_priv->display.init_clock_gating =
>> kabylake_init_clock_gating;
>
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-08-18 13:39   ` Oscar Mateo
@ 2017-08-18 22:41     ` Rodrigo Vivi
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2017-08-18 22:41 UTC (permalink / raw)
  To: Oscar Mateo; +Cc: intel-gfx, Ben Widawsky, Rodrigo Vivi

patches merged to dinq
thanks for the reviews

On Fri, Aug 18, 2017 at 6:39 AM, Oscar Mateo <oscar.mateo@intel.com> wrote:
>
>
> On 08/15/2017 04:16 PM, Rodrigo Vivi wrote:
>>
>> From: Ben Widawsky <benjamin.widawsky@intel.com>
>>
>> This bit enables hardware that will change the approximation used for
>> distances
>> calculations for AA wide lines so that they are rendered more accurately.
>>
>> The default value for this bit leaves the legacy behavior. There is no
>> good
>> reason to not enable the new approximation except if comparing to previous
>> GEN
>> rendered images.
>>
>> v2: Rebase
>> v3: Fix author.
>>      Rebased by Rodrigo who also added  a comment as suggested by Oscar.
>>      Since it is surrounded by Workarounds let's just add a comment to
>>      make clear it is not an Wa.
>>
>> Cc: Oscar Mateo <oscar.mateo@intel.com>
>> Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>
>
> Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>
>
>
>>   drivers/gpu/drm/i915/i915_reg.h | 1 +
>>   drivers/gpu/drm/i915/intel_pm.c | 4 ++++
>>   2 files changed, 5 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> b/drivers/gpu/drm/i915/i915_reg.h
>> index 11d5cb690c9c..48b847ddc09a 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -2490,6 +2490,7 @@ enum i915_power_well_id {
>>   # define _3D_CHICKEN2_WM_READ_PIPELINED                       (1 << 14)
>>   #define _3D_CHICKEN3  _MMIO(0x2090)
>>   #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL           (1 << 10)
>> +#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE       (1 << 5)
>>   #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL                (1 << 5)
>>   #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)     ((x)<<1) /* gen8+
>> */
>>   #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH (1 << 1) /* gen6
>> */
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c
>> b/drivers/gpu/drm/i915/intel_pm.c
>> index 5d2d248d4c9e..30eb34979917 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -8256,6 +8256,10 @@ static void gen8_set_l3sqc_credits(struct
>> drm_i915_private *dev_priv,
>>     static void cannonlake_init_clock_gating(struct drm_i915_private
>> *dev_priv)
>>   {
>> +       /* This is not an Wa. Enable for better image quality */
>> +       I915_WRITE(_3D_CHICKEN3,
>> +
>> _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
>> +
>>         /* WaEnableChickenDCPR:cnl */
>>         I915_WRITE(GEN8_CHICKEN_DCPR_1,
>>                    I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-08-15 23:16 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
@ 2017-08-18 13:39   ` Oscar Mateo
  2017-08-18 22:41     ` Rodrigo Vivi
  0 siblings, 1 reply; 15+ messages in thread
From: Oscar Mateo @ 2017-08-18 13:39 UTC (permalink / raw)
  To: Rodrigo Vivi, intel-gfx; +Cc: Ben Widawsky



On 08/15/2017 04:16 PM, Rodrigo Vivi wrote:
> From: Ben Widawsky <benjamin.widawsky@intel.com>
>
> This bit enables hardware that will change the approximation used for distances
> calculations for AA wide lines so that they are rendered more accurately.
>
> The default value for this bit leaves the legacy behavior. There is no good
> reason to not enable the new approximation except if comparing to previous GEN
> rendered images.
>
> v2: Rebase
> v3: Fix author.
>      Rebased by Rodrigo who also added  a comment as suggested by Oscar.
>      Since it is surrounded by Workarounds let's just add a comment to
>      make clear it is not an Wa.
>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---

Reviewed-by: Oscar Mateo <oscar.mateo@intel.com>

>   drivers/gpu/drm/i915/i915_reg.h | 1 +
>   drivers/gpu/drm/i915/intel_pm.c | 4 ++++
>   2 files changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 11d5cb690c9c..48b847ddc09a 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2490,6 +2490,7 @@ enum i915_power_well_id {
>   # define _3D_CHICKEN2_WM_READ_PIPELINED			(1 << 14)
>   #define _3D_CHICKEN3	_MMIO(0x2090)
>   #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL		(1 << 10)
> +#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE	(1 << 5)
>   #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL		(1 << 5)
>   #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)	((x)<<1) /* gen8+ */
>   #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH	(1 << 1) /* gen6 */
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 5d2d248d4c9e..30eb34979917 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -8256,6 +8256,10 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
>   
>   static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
>   {
> +	/* This is not an Wa. Enable for better image quality */
> +	I915_WRITE(_3D_CHICKEN3,
> +		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
> +
>   	/* WaEnableChickenDCPR:cnl */
>   	I915_WRITE(GEN8_CHICKEN_DCPR_1,
>   		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);

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

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

* [PATCH 4/4] drm/i915/cnl: Apply large line width optimization
  2017-08-15 23:16 Rodrigo Vivi
@ 2017-08-15 23:16 ` Rodrigo Vivi
  2017-08-18 13:39   ` Oscar Mateo
  0 siblings, 1 reply; 15+ messages in thread
From: Rodrigo Vivi @ 2017-08-15 23:16 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi, Ben Widawsky

From: Ben Widawsky <benjamin.widawsky@intel.com>

This bit enables hardware that will change the approximation used for distances
calculations for AA wide lines so that they are rendered more accurately.

The default value for this bit leaves the legacy behavior. There is no good
reason to not enable the new approximation except if comparing to previous GEN
rendered images.

v2: Rebase
v3: Fix author.
    Rebased by Rodrigo who also added  a comment as suggested by Oscar.
    Since it is surrounded by Workarounds let's just add a comment to
    make clear it is not an Wa.

Cc: Oscar Mateo <oscar.mateo@intel.com>
Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h | 1 +
 drivers/gpu/drm/i915/intel_pm.c | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 11d5cb690c9c..48b847ddc09a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2490,6 +2490,7 @@ enum i915_power_well_id {
 # define _3D_CHICKEN2_WM_READ_PIPELINED			(1 << 14)
 #define _3D_CHICKEN3	_MMIO(0x2090)
 #define  _3D_CHICKEN_SF_DISABLE_OBJEND_CULL		(1 << 10)
+#define  _3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE	(1 << 5)
 #define  _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL		(1 << 5)
 #define  _3D_CHICKEN_SDE_LIMIT_FIFO_POLY_DEPTH(x)	((x)<<1) /* gen8+ */
 #define  _3D_CHICKEN3_SF_DISABLE_PIPELINED_ATTR_FETCH	(1 << 1) /* gen6 */
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 5d2d248d4c9e..30eb34979917 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -8256,6 +8256,10 @@ static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
 
 static void cannonlake_init_clock_gating(struct drm_i915_private *dev_priv)
 {
+	/* This is not an Wa. Enable for better image quality */
+	I915_WRITE(_3D_CHICKEN3,
+		   _MASKED_BIT_ENABLE(_3D_CHICKEN3_AA_LINE_QUALITY_FIX_ENABLE));
+
 	/* WaEnableChickenDCPR:cnl */
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
-- 
2.13.2

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

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

end of thread, other threads:[~2017-08-18 22:41 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-06  1:02 [PATCH 1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Rodrigo Vivi
2017-07-06  1:02 ` [PATCH 2/4] drm/i915/cnl: Add WaDisableReplayBufferBankArbitrationOptimization Rodrigo Vivi
2017-08-15 11:06   ` Oscar Mateo
2017-07-06  1:02 ` [PATCH 3/4] drm/i915/cnl: WaDisableEnhancedSBEVertexCaching Rodrigo Vivi
2017-08-15 11:08   ` Oscar Mateo
2017-07-06  1:02 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
2017-08-15 11:14   ` Oscar Mateo
2017-08-15 22:45     ` Rodrigo Vivi
2017-07-06  1:50 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/cnl: Introduce initial Cannonlake Workarounds Patchwork
2017-08-12  0:28 ` [PATCH 1/4] " Rodrigo Vivi
2017-08-15 10:54 ` Oscar Mateo
2017-08-15 23:03   ` Rodrigo Vivi
2017-08-15 23:16 Rodrigo Vivi
2017-08-15 23:16 ` [PATCH 4/4] drm/i915/cnl: Apply large line width optimization Rodrigo Vivi
2017-08-18 13:39   ` Oscar Mateo
2017-08-18 22:41     ` Rodrigo Vivi

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.