All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition.
@ 2017-06-06 19:19 Rodrigo Vivi
  2017-06-06 19:19 ` [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH Rodrigo Vivi
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2017-06-06 19:19 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

Coffee Lake is a Intel® Processor containing Intel® HD Graphics
following Kabylake.

It is Gen9 graphics based platform on top of CNP PCH.

Let's start by adding the platform definition based on previous
platforms but yet as preliminary_hw_support.

On following patches we will start adding PCI IDs and the
platform specific changes.

v2: Also add BS2 ring that is present on GT3. As on KBL, according
    spec: "GT3 also has additional media blocks with second instance
    of VEBox and VDBox each", i.e. BSD2 ring in our case. Noticed
    when reviewing PCI ID patches.

v3: CFL_PLATFORM instead for CFL_FEATURES because it contains
    Platform information and no new features when compared to
    BDW_FEATURES definition.

Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h          |  2 ++
 drivers/gpu/drm/i915/i915_pci.c          | 16 ++++++++++++++++
 drivers/gpu/drm/i915/intel_device_info.c |  1 +
 3 files changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index c31c0cf..2f20e87 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -826,6 +826,7 @@ enum intel_platform {
 	INTEL_BROXTON,
 	INTEL_KABYLAKE,
 	INTEL_GEMINILAKE,
+	INTEL_COFFEELAKE,
 	INTEL_MAX_PLATFORMS
 };
 
@@ -2768,6 +2769,7 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg)
 #define IS_BROXTON(dev_priv)	((dev_priv)->info.platform == INTEL_BROXTON)
 #define IS_KABYLAKE(dev_priv)	((dev_priv)->info.platform == INTEL_KABYLAKE)
 #define IS_GEMINILAKE(dev_priv)	((dev_priv)->info.platform == INTEL_GEMINILAKE)
+#define IS_COFFEELAKE(dev_priv)	((dev_priv)->info.platform == INTEL_COFFEELAKE)
 #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
 #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
 				    (INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index f940e48..89f71e0 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -425,6 +425,22 @@
 	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING | BSD2_RING,
 };
 
+#define CFL_PLATFORM \
+	.is_alpha_support = 1, \
+	BDW_FEATURES, \
+	.gen = 9, \
+	.platform = INTEL_COFFEELAKE, \
+	.ddb_size = 896
+
+static const struct intel_device_info intel_coffeelake_info = {
+	CFL_PLATFORM,
+};
+
+static const struct intel_device_info intel_coffeelake_gt3_info = {
+	CFL_PLATFORM,
+	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING | BSD2_RING,
+};
+
 /*
  * Make sure any device matches here are from most specific to most
  * general.  For example, since the Quanta match is based on the subsystem
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 3718341..acc746f 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -51,6 +51,7 @@
 	PLATFORM_NAME(BROXTON),
 	PLATFORM_NAME(KABYLAKE),
 	PLATFORM_NAME(GEMINILAKE),
+	PLATFORM_NAME(COFFEELAKE),
 };
 #undef PLATFORM_NAME
 
-- 
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] 17+ messages in thread

* [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
@ 2017-06-06 19:19 ` Rodrigo Vivi
  2017-06-07 17:40   ` Pandiyan, Dhinakaran
  2017-06-06 19:20 ` [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake Rodrigo Vivi
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Rodrigo Vivi @ 2017-06-06 19:19 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

So let's force it on the virtual detection.

Also it is still the only silicon for now on this PCH,
so WARN otherwise.

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 6ca99de..ed051a6e 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -139,6 +139,8 @@ static enum intel_pch intel_virt_detect_pch(struct drm_i915_private *dev_priv)
 	} else if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) {
 		ret = PCH_SPT;
 		DRM_DEBUG_KMS("Assuming SunrisePoint PCH\n");
+	} else if (IS_COFFEELAKE(dev_priv)) {
+		ret = PCH_CNP;
 	}
 
 	return ret;
@@ -222,9 +224,11 @@ static void intel_detect_pch(struct drm_i915_private *dev_priv)
 			} else if (id == INTEL_PCH_CNP_DEVICE_ID_TYPE) {
 				dev_priv->pch_type = PCH_CNP;
 				DRM_DEBUG_KMS("Found CannonPoint PCH\n");
+				WARN_ON(!IS_COFFEELAKE(dev_priv));
 			} else if (id_ext == INTEL_PCH_CNP_LP_DEVICE_ID_TYPE) {
 				dev_priv->pch_type = PCH_CNP;
 				DRM_DEBUG_KMS("Found CannonPoint LP PCH\n");
+				WARN_ON(!IS_COFFEELAKE(dev_priv));
 			} else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) ||
 				   (id == INTEL_PCH_P3X_DEVICE_ID_TYPE) ||
 				   ((id == INTEL_PCH_QEMU_DEVICE_ID_TYPE) &&
-- 
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] 17+ messages in thread

* [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
  2017-06-06 19:19 ` [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH Rodrigo Vivi
@ 2017-06-06 19:20 ` Rodrigo Vivi
  2017-06-07 18:04   ` Pandiyan, Dhinakaran
  2017-06-06 19:20 ` [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds " Rodrigo Vivi
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Rodrigo Vivi @ 2017-06-06 19:20 UTC (permalink / raw)
  To: intel-gfx; +Cc: Dhinakaran Pandiyan, Rodrigo Vivi

All here is pretty much like Kabylake.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 8bac628..5b5bee6 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -429,7 +429,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder)
 		}
 	}
 
-	if (IS_KABYLAKE(dev_priv))
+	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
 		return kbl_get_buf_trans_dp(dev_priv, n_entries);
 	else
 		return skl_get_buf_trans_dp(dev_priv, n_entries);
@@ -485,7 +485,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
 intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv,
 			   int *n_entries)
 {
-	if (IS_KABYLAKE(dev_priv)) {
+	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {
 		return kbl_get_buf_trans_dp(dev_priv, n_entries);
 	} else if (IS_SKYLAKE(dev_priv)) {
 		return skl_get_buf_trans_dp(dev_priv, n_entries);
@@ -1478,7 +1478,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
 		if (dp_iboost) {
 			iboost = dp_iboost;
 		} else {
-			if (IS_KABYLAKE(dev_priv))
+			if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
 				ddi_translations = kbl_get_buf_trans_dp(dev_priv,
 									&n_entries);
 			else
-- 
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] 17+ messages in thread

* [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds for Coffee Lake.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
  2017-06-06 19:19 ` [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH Rodrigo Vivi
  2017-06-06 19:20 ` [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake Rodrigo Vivi
@ 2017-06-06 19:20 ` Rodrigo Vivi
  2017-06-07 18:44   ` Pandiyan, Dhinakaran
  2017-06-06 19:20 ` [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds Rodrigo Vivi
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Rodrigo Vivi @ 2017-06-06 19:20 UTC (permalink / raw)
  To: intel-gfx; +Cc: Arthur Runyan, Dhinakaran Pandiyan, Rodrigo Vivi

The whole Display engine for Coffee Lake is pretty much
identical to the Kabylake. For this reason let's reuse
all display related production workardounds here even though
CFL is not explicit listed at Display workarounds page at Spec.

Cc: Arthur Runyan <arthur.j.runyan@intel.com>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index aa9d8ce..98aeba9 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3549,7 +3549,7 @@ static bool skl_needs_memory_bw_wa(struct intel_atomic_state *state)
 static bool
 intel_has_sagv(struct drm_i915_private *dev_priv)
 {
-	if (IS_KABYLAKE(dev_priv))
+	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
 		return true;
 
 	if (IS_SKYLAKE(dev_priv) &&
@@ -4459,8 +4459,9 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
 		  fb->modifier == I915_FORMAT_MOD_Yf_TILED;
 	x_tiled = fb->modifier == I915_FORMAT_MOD_X_TILED;
 
-	/* Display WA #1141: kbl. */
-	if (IS_KABYLAKE(dev_priv) && dev_priv->ipc_enabled)
+	/* Display WA #1141: kbl,cfl */
+	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) &&
+	    dev_priv->ipc_enabled)
 		latency += 4;
 
 	if (apply_memory_bw_wa && x_tiled)
@@ -8312,7 +8313,7 @@ static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
 		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
 			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
 
-	/* WaFbcNukeOnHostModify:kbl */
+	/* WaFbcNukeOnHostModify:kbl,cfl */
 	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
 		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
 }
@@ -8780,7 +8781,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))
+	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
 		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;
-- 
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] 17+ messages in thread

* [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
                   ` (2 preceding siblings ...)
  2017-06-06 19:20 ` [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds " Rodrigo Vivi
@ 2017-06-06 19:20 ` Rodrigo Vivi
  2017-06-07 22:40   ` Pandiyan, Dhinakaran
  2017-06-08 14:01   ` Mika Kuoppala
  2017-06-06 21:26 ` [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Srivatsa, Anusha
  2017-06-07  7:42 ` ✓ Fi.CI.BAT: success for series starting with [1/5] " Patchwork
  5 siblings, 2 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2017-06-06 19:20 UTC (permalink / raw)
  To: intel-gfx; +Cc: Dhinakaran Pandiyan, Rodrigo Vivi

Coffee Lake inherit most of Kabylake production
workardounds.

Only difference identified so far is:
- WaDisableLSQCROPERFforOCL is marked as SIWA_NEVER

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c    |  2 +-
 drivers/gpu/drm/i915/intel_engine_cs.c | 75 +++++++++++++++++++++++++---------
 drivers/gpu/drm/i915/intel_pm.c        | 10 ++---
 3 files changed, 61 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 4ff854e..8e055b1 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -1884,7 +1884,7 @@ 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 */
+	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
 	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))
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index bc38bd1..630ff6e 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -814,24 +814,24 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	struct drm_i915_private *dev_priv = engine->i915;
 	int ret;
 
-	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk */
+	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk,cfl */
 	I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE));
 
-	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk */
+	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk,cfl */
 	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
 		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);
 
-	/* WaDisableKillLogic:bxt,skl,kbl */
+	/* WaDisableKillLogic:bxt,skl,kbl,cfl */
 	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
 		   ECOCHK_DIS_TLB);
 
-	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk */
-	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk */
+	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk,cfl */
+	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk,cfl */
 	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
 			  FLOW_CONTROL_ENABLE |
 			  PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
 
-	/* Syncing dependencies between camera and graphics:skl,bxt,kbl */
+	/* Syncing dependencies between camera and graphics:skl,bxt,kbl,cfl */
 	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
 			  GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
 
@@ -851,18 +851,18 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		 */
 	}
 
-	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk */
-	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl */
+	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk,cfl */
+	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl,cfl */
 	WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
 			  GEN9_ENABLE_YV12_BUGFIX |
 			  GEN9_ENABLE_GPGPU_PREEMPTION);
 
-	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk */
-	/* WaDisablePartialResolveInVc:skl,bxt,kbl */
+	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk,cfl */
+	/* WaDisablePartialResolveInVc:skl,bxt,kbl,cfl */
 	WA_SET_BIT_MASKED(CACHE_MODE_1, (GEN8_4x4_STC_OPTIMIZATION_DISABLE |
 					 GEN9_PARTIAL_RESOLVE_IN_VC_DISABLE));
 
-	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk */
+	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk,cfl */
 	WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
 			  GEN9_CCS_TLB_PREFETCH_ENABLE);
 
@@ -871,7 +871,7 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 		WA_SET_BIT_MASKED(SLICE_ECO_CHICKEN0,
 				  PIXEL_MASK_CAMMING_DISABLE);
 
-	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl */
+	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl,cfl */
 	WA_SET_BIT_MASKED(HDC_CHICKEN0,
 			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
 			  HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE);
@@ -889,39 +889,40 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
 	 * a TLB invalidation occurs during a PSD flush.
 	 */
 
-	/* WaForceEnableNonCoherent:skl,bxt,kbl */
+	/* WaForceEnableNonCoherent:skl,bxt,kbl,cfl */
 	WA_SET_BIT_MASKED(HDC_CHICKEN0,
 			  HDC_FORCE_NON_COHERENT);
 
-	/* WaDisableHDCInvalidation:skl,bxt,kbl */
+	/* WaDisableHDCInvalidation:skl,bxt,kbl,cfl */
 	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
 		   BDW_DISABLE_HDC_INVALIDATION);
 
-	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
+	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl,cfl */
 	if (IS_SKYLAKE(dev_priv) ||
 	    IS_KABYLAKE(dev_priv) ||
+	    IS_COFFEELAKE(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,kbl,glk */
+	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl,glk,cfl */
 	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
 
-	/* WaOCLCoherentLineFlush:skl,bxt,kbl */
+	/* WaOCLCoherentLineFlush:skl,bxt,kbl,cfl */
 	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
 				    GEN8_LQSC_FLUSH_COHERENT_LINES));
 
-	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk */
+	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk,cfl */
 	ret = wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
 	if (ret)
 		return ret;
 
-	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl */
+	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl,cfl */
 	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
 	if (ret)
 		return ret;
 
-	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk */
+	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk,cfl */
 	ret = wa_ring_whitelist_reg(engine, GEN8_HDC_CHICKEN1);
 	if (ret)
 		return ret;
@@ -1140,6 +1141,38 @@ static int glk_init_workarounds(struct intel_engine_cs *engine)
 	return 0;
 }
 
+static int cfl_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;
+
+	/* WaEnableGapsTsvCreditFix:cfl */
+	I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
+				   GEN9_GAPS_TSV_CREDIT_DISABLE));
+
+	/* WaToEnableHwFixForPushConstHWBug:cfl */
+	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
+			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
+
+	/* WaDisableGafsUnitClkGating:cfl */
+	WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);
+
+	/* WaDisableSbeCacheDispatchPortSharing:cfl */
+	WA_SET_BIT_MASKED(
+		GEN7_HALF_SLICE_CHICKEN1,
+		GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
+
+	/* WaInPlaceDecompressionHang:cfl */
+	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
+	return 0;
+}
+
 int init_workarounds_ring(struct intel_engine_cs *engine)
 {
 	struct drm_i915_private *dev_priv = engine->i915;
@@ -1162,6 +1195,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
 		err = kbl_init_workarounds(engine);
 	else if (IS_GEMINILAKE(dev_priv))
 		err =  glk_init_workarounds(engine);
+	else if (IS_COFFEELAKE(dev_priv))
+		err = cfl_init_workarounds(engine);
 	else
 		err = 0;
 	if (err)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 98aeba9..0aed13d 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 */
+	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
 	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 */
+	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
 	I915_WRITE(GEN8_CHICKEN_DCPR_1,
 		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
 
-	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl */
-	/* WaFbcWakeMemOn:skl,bxt,kbl,glk */
+	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
+	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
 	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
 		   DISP_FBC_WM_DIS |
 		   DISP_FBC_MEMORY_WAKE);
 
-	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl */
+	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
 	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
 		   ILK_DPFC_DISABLE_DUMMY0);
 }
-- 
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] 17+ messages in thread

* Re: [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
                   ` (3 preceding siblings ...)
  2017-06-06 19:20 ` [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds Rodrigo Vivi
@ 2017-06-06 21:26 ` Srivatsa, Anusha
  2017-06-07  7:42 ` ✓ Fi.CI.BAT: success for series starting with [1/5] " Patchwork
  5 siblings, 0 replies; 17+ messages in thread
From: Srivatsa, Anusha @ 2017-06-06 21:26 UTC (permalink / raw)
  To: Vivi, Rodrigo, intel-gfx



>-----Original Message-----
>From: Vivi, Rodrigo
>Sent: Tuesday, June 6, 2017 12:20 PM
>To: intel-gfx@lists.freedesktop.org
>Cc: Vivi, Rodrigo <rodrigo.vivi@intel.com>; Srivatsa, Anusha
><anusha.srivatsa@intel.com>
>Subject: [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition.
>
>Coffee Lake is a Intel® Processor containing Intel® HD Graphics following
>Kabylake.
>
>It is Gen9 graphics based platform on top of CNP PCH.
>
>Let's start by adding the platform definition based on previous platforms but yet
>as preliminary_hw_support.
>
>On following patches we will start adding PCI IDs and the platform specific
>changes.
>
>v2: Also add BS2 ring that is present on GT3. As on KBL, according
>    spec: "GT3 also has additional media blocks with second instance
>    of VEBox and VDBox each", i.e. BSD2 ring in our case. Noticed
>    when reviewing PCI ID patches.
>
>v3: CFL_PLATFORM instead for CFL_FEATURES because it contains
>    Platform information and no new features when compared to
>    BDW_FEATURES definition.
>
>Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>

> drivers/gpu/drm/i915/i915_drv.h          |  2 ++
> drivers/gpu/drm/i915/i915_pci.c          | 16 ++++++++++++++++
> drivers/gpu/drm/i915/intel_device_info.c |  1 +
> 3 files changed, 19 insertions(+)
>
>diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>index c31c0cf..2f20e87 100644
>--- a/drivers/gpu/drm/i915/i915_drv.h
>+++ b/drivers/gpu/drm/i915/i915_drv.h
>@@ -826,6 +826,7 @@ enum intel_platform {
> 	INTEL_BROXTON,
> 	INTEL_KABYLAKE,
> 	INTEL_GEMINILAKE,
>+	INTEL_COFFEELAKE,
> 	INTEL_MAX_PLATFORMS
> };
>
>@@ -2768,6 +2769,7 @@ static inline struct scatterlist *__sg_next(struct
>scatterlist *sg)
> #define IS_BROXTON(dev_priv)	((dev_priv)->info.platform == INTEL_BROXTON)
> #define IS_KABYLAKE(dev_priv)	((dev_priv)->info.platform == INTEL_KABYLAKE)
> #define IS_GEMINILAKE(dev_priv)	((dev_priv)->info.platform ==
>INTEL_GEMINILAKE)
>+#define IS_COFFEELAKE(dev_priv)	((dev_priv)->info.platform ==
>INTEL_COFFEELAKE)
> #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
> #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
> 				    (INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
>diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
>index f940e48..89f71e0 100644
>--- a/drivers/gpu/drm/i915/i915_pci.c
>+++ b/drivers/gpu/drm/i915/i915_pci.c
>@@ -425,6 +425,22 @@
> 	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING |
>BSD2_RING,  };
>
>+#define CFL_PLATFORM \
>+	.is_alpha_support = 1, \
>+	BDW_FEATURES, \
>+	.gen = 9, \
>+	.platform = INTEL_COFFEELAKE, \
>+	.ddb_size = 896
>+
>+static const struct intel_device_info intel_coffeelake_info = {
>+	CFL_PLATFORM,
>+};
>+
>+static const struct intel_device_info intel_coffeelake_gt3_info = {
>+	CFL_PLATFORM,
>+	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING |
>+BSD2_RING, };
>+
> /*
>  * Make sure any device matches here are from most specific to most
>  * general.  For example, since the Quanta match is based on the subsystem diff -
>-git a/drivers/gpu/drm/i915/intel_device_info.c
>b/drivers/gpu/drm/i915/intel_device_info.c
>index 3718341..acc746f 100644
>--- a/drivers/gpu/drm/i915/intel_device_info.c
>+++ b/drivers/gpu/drm/i915/intel_device_info.c
>@@ -51,6 +51,7 @@
> 	PLATFORM_NAME(BROXTON),
> 	PLATFORM_NAME(KABYLAKE),
> 	PLATFORM_NAME(GEMINILAKE),
>+	PLATFORM_NAME(COFFEELAKE),
> };
> #undef PLATFORM_NAME
>
>--
>1.9.1

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

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

* ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/cfl: Introduce Coffee Lake platform definition.
  2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
                   ` (4 preceding siblings ...)
  2017-06-06 21:26 ` [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Srivatsa, Anusha
@ 2017-06-07  7:42 ` Patchwork
  5 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2017-06-07  7:42 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/i915/cfl: Introduce Coffee Lake platform definition.
URL   : https://patchwork.freedesktop.org/series/25352/
State : success

== Summary ==

Series 25352v1 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/25352/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:
                dmesg-warn -> PASS       (fi-kbl-7560u) fdo#101022
Test kms_busy:
        Subgroup basic-flip-default-b:
                dmesg-warn -> PASS       (fi-skl-6700hq) fdo#101144 +2
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                fail       -> PASS       (fi-skl-6700hq) fdo#101154 +7
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (fi-skl-6700hq) fdo#100461

fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#101022 https://bugs.freedesktop.org/show_bug.cgi?id=101022
fdo#101144 https://bugs.freedesktop.org/show_bug.cgi?id=101144
fdo#101154 https://bugs.freedesktop.org/show_bug.cgi?id=101154
fdo#100461 https://bugs.freedesktop.org/show_bug.cgi?id=100461

fi-bdw-5557u     total:278  pass:267  dwarn:0   dfail:0   fail:0   skip:11  time:445s
fi-bdw-gvtdvm    total:278  pass:256  dwarn:8   dfail:0   fail:0   skip:14  time:432s
fi-bsw-n3050     total:278  pass:242  dwarn:0   dfail:0   fail:0   skip:36  time:573s
fi-bxt-j4205     total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time:506s
fi-byt-j1900     total:278  pass:254  dwarn:0   dfail:0   fail:0   skip:24  time:484s
fi-byt-n2820     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time:484s
fi-glk-2a        total:278  pass:259  dwarn:0   dfail:0   fail:0   skip:19  time:587s
fi-hsw-4770      total:278  pass:262  dwarn:0   dfail:0   fail:0   skip:16  time:427s
fi-hsw-4770r     total:278  pass:262  dwarn:0   dfail:0   fail:0   skip:16  time:415s
fi-ilk-650       total:278  pass:228  dwarn:0   dfail:0   fail:0   skip:50  time:421s
fi-ivb-3520m     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time:496s
fi-ivb-3770      total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time:459s
fi-kbl-7500u     total:278  pass:260  dwarn:0   dfail:0   fail:0   skip:18  time:469s
fi-kbl-7560u     total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time:568s
fi-skl-6260u     total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time:456s
fi-skl-6700hq    total:278  pass:239  dwarn:0   dfail:1   fail:17  skip:21  time:427s
fi-skl-6700k     total:278  pass:256  dwarn:4   dfail:0   fail:0   skip:18  time:466s
fi-skl-6770hq    total:278  pass:268  dwarn:0   dfail:0   fail:0   skip:10  time:507s
fi-skl-gvtdvm    total:278  pass:265  dwarn:0   dfail:0   fail:0   skip:13  time:438s
fi-snb-2520m     total:278  pass:250  dwarn:0   dfail:0   fail:0   skip:28  time:539s
fi-snb-2600      total:278  pass:249  dwarn:0   dfail:0   fail:0   skip:29  time:406s

9458d5928c9c2731fe32329ba2219d642b1f81f2 drm-tip: 2017y-06m-06d-16h-35m-12s UTC integration manifest
f330c57 drm/i915/cfl: Introduce Coffee Lake workardounds.
30cc9d5 drm/i915/cfl: Introduce Display workarounds for Coffee Lake.
5e533e9 drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
d9a5e5e drm/i915/cfl: Coffee Lake uses CNP PCH.
eb9198b drm/i915/cfl: Introduce Coffee Lake platform definition.

== Logs ==

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

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

* Re: [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH.
  2017-06-06 19:19 ` [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH Rodrigo Vivi
@ 2017-06-07 17:40   ` Pandiyan, Dhinakaran
  0 siblings, 0 replies; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 17:40 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx

On Tue, 2017-06-06 at 12:19 -0700, Rodrigo Vivi wrote:
> So let's force it on the virtual detection.
> 
> Also it is still the only silicon for now on this PCH,
> so WARN otherwise.
> 
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 6ca99de..ed051a6e 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -139,6 +139,8 @@ static enum intel_pch intel_virt_detect_pch(struct drm_i915_private *dev_priv)
>  	} else if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) {
>  		ret = PCH_SPT;
>  		DRM_DEBUG_KMS("Assuming SunrisePoint PCH\n");
> +	} else if (IS_COFFEELAKE(dev_priv)) {
> +		ret = PCH_CNP;

nit: You missed the debug logging.


>  	}
>  
>  	return ret;
> @@ -222,9 +224,11 @@ static void intel_detect_pch(struct drm_i915_private *dev_priv)
>  			} else if (id == INTEL_PCH_CNP_DEVICE_ID_TYPE) {
>  				dev_priv->pch_type = PCH_CNP;
>  				DRM_DEBUG_KMS("Found CannonPoint PCH\n");
> +				WARN_ON(!IS_COFFEELAKE(dev_priv));
>  			} else if (id_ext == INTEL_PCH_CNP_LP_DEVICE_ID_TYPE) {
>  				dev_priv->pch_type = PCH_CNP;
>  				DRM_DEBUG_KMS("Found CannonPoint LP PCH\n");
> +				WARN_ON(!IS_COFFEELAKE(dev_priv));
>  			} else if ((id == INTEL_PCH_P2X_DEVICE_ID_TYPE) ||
>  				   (id == INTEL_PCH_P3X_DEVICE_ID_TYPE) ||
>  				   ((id == INTEL_PCH_QEMU_DEVICE_ID_TYPE) &&

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

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

* Re: [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
  2017-06-06 19:20 ` [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake Rodrigo Vivi
@ 2017-06-07 18:04   ` Pandiyan, Dhinakaran
  2017-06-07 21:53     ` Vivi, Rodrigo
  0 siblings, 1 reply; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 18:04 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx

On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> All here is pretty much like Kabylake.
> 
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 8bac628..5b5bee6 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -429,7 +429,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder)
>  		}
>  	}
>  

I don't see the corresponding change in the caller
intel_ddi_get_buf_trans_edp(). 


> -	if (IS_KABYLAKE(dev_priv))
> +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
>  	else
>  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> @@ -485,7 +485,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
>  intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv,
>  			   int *n_entries)
>  {
> -	if (IS_KABYLAKE(dev_priv)) {
> +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {

What SKU's are being supported here? Anusha's sent patches for U, H and
S. I see distinct ddi_translation definitions for KBL U SKU's but I see
them missing for CFL in the callee kbl_get_buf_trans_dp. 


-DK


>  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
>  	} else if (IS_SKYLAKE(dev_priv)) {
>  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> @@ -1478,7 +1478,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
>  		if (dp_iboost) {
>  			iboost = dp_iboost;
>  		} else {
> -			if (IS_KABYLAKE(dev_priv))
> +			if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>  				ddi_translations = kbl_get_buf_trans_dp(dev_priv,
>  									&n_entries);
>  			else

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

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

* Re: [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds for Coffee Lake.
  2017-06-06 19:20 ` [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds " Rodrigo Vivi
@ 2017-06-07 18:44   ` Pandiyan, Dhinakaran
  2017-06-07 21:52     ` Vivi, Rodrigo
  0 siblings, 1 reply; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 18:44 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, Runyan, Arthur J

On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> The whole Display engine for Coffee Lake is pretty much
> identical to the Kabylake. For this reason let's reuse
> all display related production workardounds here even though

Are these all the display workarounds we have or is this patch just for
PM related ones?

> CFL is not explicit listed at Display workarounds page at Spec.
> 
> Cc: Arthur Runyan <arthur.j.runyan@intel.com>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index aa9d8ce..98aeba9 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3549,7 +3549,7 @@ static bool skl_needs_memory_bw_wa(struct intel_atomic_state *state)
>  static bool
>  intel_has_sagv(struct drm_i915_private *dev_priv)
>  {
> -	if (IS_KABYLAKE(dev_priv))
> +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>  		return true;
>  
>  	if (IS_SKYLAKE(dev_priv) &&
> @@ -4459,8 +4459,9 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
>  		  fb->modifier == I915_FORMAT_MOD_Yf_TILED;
>  	x_tiled = fb->modifier == I915_FORMAT_MOD_X_TILED;
>  
> -	/* Display WA #1141: kbl. */
> -	if (IS_KABYLAKE(dev_priv) && dev_priv->ipc_enabled)
> +	/* Display WA #1141: kbl,cfl */
> +	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) &&
> +	    dev_priv->ipc_enabled)

I am not sure about this, bspec does not say whether it applies to CFL
or not. So unless we get more clarification, makes sense to go with
this.

I have audited all occurrences of KBL special cases in this file,
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

>  		latency += 4;
>  
>  	if (apply_memory_bw_wa && x_tiled)
> @@ -8312,7 +8313,7 @@ static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
>  		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
>  			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
>  
> -	/* WaFbcNukeOnHostModify:kbl */
> +	/* WaFbcNukeOnHostModify:kbl,cfl */
>  	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>  		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
>  }
> @@ -8780,7 +8781,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))
> +	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
>  		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;

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

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

* Re: [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds for Coffee Lake.
  2017-06-07 18:44   ` Pandiyan, Dhinakaran
@ 2017-06-07 21:52     ` Vivi, Rodrigo
  2017-06-07 22:00       ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 17+ messages in thread
From: Vivi, Rodrigo @ 2017-06-07 21:52 UTC (permalink / raw)
  To: Pandiyan, Dhinakaran; +Cc: intel-gfx, Runyan, Arthur J

On Wed, 2017-06-07 at 18:44 +0000, Pandiyan, Dhinakaran wrote:
> On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> > The whole Display engine for Coffee Lake is pretty much
> > identical to the Kabylake. For this reason let's reuse
> > all display related production workardounds here even though
> 
> Are these all the display workarounds we have or is this patch just for
> PM related ones?

All this are Display W/a but needed on pm init... Maybe they would
deserve a better and more clear place in our code like in intel_display
that gets called on the right time... not sure, but anyways for a follow
up patch.

But I just noticed not all of Display W/a are here as well. I need to
move all other intel_pm.c changes from  drm/i915/cfl: Introduce Coffee
Lake workardounds. to this patch :/ and also rename that patch to GT
workarounds.

I hope to still count with your rv-b here.


> 
> > CFL is not explicit listed at Display workarounds page at Spec.

CFL Display is identical to KBL, this is why the spec has no specific
mention about CFL. Only page that is apparently updated is the
configuration SKUs with the IDs.

> > 
> > Cc: Arthur Runyan <arthur.j.runyan@intel.com>
> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_pm.c | 11 ++++++-----
> >  1 file changed, 6 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index aa9d8ce..98aeba9 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -3549,7 +3549,7 @@ static bool skl_needs_memory_bw_wa(struct intel_atomic_state *state)
> >  static bool
> >  intel_has_sagv(struct drm_i915_private *dev_priv)
> >  {
> > -	if (IS_KABYLAKE(dev_priv))
> > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> >  		return true;
> >  
> >  	if (IS_SKYLAKE(dev_priv) &&
> > @@ -4459,8 +4459,9 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
> >  		  fb->modifier == I915_FORMAT_MOD_Yf_TILED;
> >  	x_tiled = fb->modifier == I915_FORMAT_MOD_X_TILED;
> >  
> > -	/* Display WA #1141: kbl. */
> > -	if (IS_KABYLAKE(dev_priv) && dev_priv->ipc_enabled)
> > +	/* Display WA #1141: kbl,cfl */
> > +	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) &&
> > +	    dev_priv->ipc_enabled)
> 
> I am not sure about this, bspec does not say whether it applies to CFL
> or not. So unless we get more clarification, makes sense to go with
> this.

yep, let's consider all same as KBL. If something changes later we
follow up with updates in the code.

> 
> I have audited all occurrences of KBL special cases in this file,
> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>

> 
> >  		latency += 4;
> >  
> >  	if (apply_memory_bw_wa && x_tiled)
> > @@ -8312,7 +8313,7 @@ static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
> >  		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
> >  			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
> >  
> > -	/* WaFbcNukeOnHostModify:kbl */
> > +	/* WaFbcNukeOnHostModify:kbl,cfl */
> >  	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
> >  		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
> >  }
> > @@ -8780,7 +8781,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))
> > +	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> >  		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;
> 

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

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

* Re: [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
  2017-06-07 18:04   ` Pandiyan, Dhinakaran
@ 2017-06-07 21:53     ` Vivi, Rodrigo
  2017-06-07 22:06       ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 17+ messages in thread
From: Vivi, Rodrigo @ 2017-06-07 21:53 UTC (permalink / raw)
  To: Pandiyan, Dhinakaran; +Cc: intel-gfx

On Wed, 2017-06-07 at 18:04 +0000, Pandiyan, Dhinakaran wrote:
> On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> > All here is pretty much like Kabylake.
> > 
> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_ddi.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> > index 8bac628..5b5bee6 100644
> > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > @@ -429,7 +429,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder)
> >  		}
> >  	}
> >  
> 
> I don't see the corresponding change in the caller
> intel_ddi_get_buf_trans_edp(). 
> 
> 
> > -	if (IS_KABYLAKE(dev_priv))
> > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> >  	else
> >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > @@ -485,7 +485,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
> >  intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv,
> >  			   int *n_entries)
> >  {
> > -	if (IS_KABYLAKE(dev_priv)) {
> > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {
> 
> What SKU's are being supported here? Anusha's sent patches for U, H and
> S. I see distinct ddi_translation definitions for KBL U SKU's but I see
> them missing for CFL in the callee kbl_get_buf_trans_dp. 

good catch! CFL-U is same as KBL-U and according to hardware engineers
should start with same translation table. If something changes in the
future we update here.

I will rebase and put this patch on top of PCI ID ones so I reuse the
Anusha's definition to get CFL-U.

> 
> 
> -DK
> 
> 
> >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> >  	} else if (IS_SKYLAKE(dev_priv)) {
> >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > @@ -1478,7 +1478,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
> >  		if (dp_iboost) {
> >  			iboost = dp_iboost;
> >  		} else {
> > -			if (IS_KABYLAKE(dev_priv))
> > +			if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> >  				ddi_translations = kbl_get_buf_trans_dp(dev_priv,
> >  									&n_entries);
> >  			else
> 

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

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

* Re: [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds for Coffee Lake.
  2017-06-07 21:52     ` Vivi, Rodrigo
@ 2017-06-07 22:00       ` Pandiyan, Dhinakaran
  0 siblings, 0 replies; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 22:00 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, Runyan, Arthur J

On Wed, 2017-06-07 at 21:52 +0000, Vivi, Rodrigo wrote:
> On Wed, 2017-06-07 at 18:44 +0000, Pandiyan, Dhinakaran wrote:
> > On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> > > The whole Display engine for Coffee Lake is pretty much
> > > identical to the Kabylake. For this reason let's reuse
> > > all display related production workardounds here even though
> > 
> > Are these all the display workarounds we have or is this patch just for
> > PM related ones?
> 
> All this are Display W/a but needed on pm init... Maybe they would
> deserve a better and more clear place in our code like in intel_display
> that gets called on the right time... not sure, but anyways for a follow
> up patch.
> 
> But I just noticed not all of Display W/a are here as well. I need to
> move all other intel_pm.c changes from  drm/i915/cfl: Introduce Coffee
> Lake workardounds. to this patch :/ and also rename that patch to GT
> workarounds.

I noticed that in patch 5/5 and had a half-written email with comments
for that.

> 
> I hope to still count with your rv-b here.

Sure, please move the intel_pm.c hunk from 5/5 to this patch and retain
the R-B.

-DK

> 
> 
> > 
> > > CFL is not explicit listed at Display workarounds page at Spec.
> 
> CFL Display is identical to KBL, this is why the spec has no specific
> mention about CFL. Only page that is apparently updated is the
> configuration SKUs with the IDs.
> 
> > > 
> > > Cc: Arthur Runyan <arthur.j.runyan@intel.com>
> > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/intel_pm.c | 11 ++++++-----
> > >  1 file changed, 6 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > > index aa9d8ce..98aeba9 100644
> > > --- a/drivers/gpu/drm/i915/intel_pm.c
> > > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > > @@ -3549,7 +3549,7 @@ static bool skl_needs_memory_bw_wa(struct intel_atomic_state *state)
> > >  static bool
> > >  intel_has_sagv(struct drm_i915_private *dev_priv)
> > >  {
> > > -	if (IS_KABYLAKE(dev_priv))
> > > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > >  		return true;
> > >  
> > >  	if (IS_SKYLAKE(dev_priv) &&
> > > @@ -4459,8 +4459,9 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
> > >  		  fb->modifier == I915_FORMAT_MOD_Yf_TILED;
> > >  	x_tiled = fb->modifier == I915_FORMAT_MOD_X_TILED;
> > >  
> > > -	/* Display WA #1141: kbl. */
> > > -	if (IS_KABYLAKE(dev_priv) && dev_priv->ipc_enabled)
> > > +	/* Display WA #1141: kbl,cfl */
> > > +	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) &&
> > > +	    dev_priv->ipc_enabled)
> > 
> > I am not sure about this, bspec does not say whether it applies to CFL
> > or not. So unless we get more clarification, makes sense to go with
> > this.
> 
> yep, let's consider all same as KBL. If something changes later we
> follow up with updates in the code.
> 
> > 
> > I have audited all occurrences of KBL special cases in this file,
> > Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> 
> > 
> > >  		latency += 4;
> > >  
> > >  	if (apply_memory_bw_wa && x_tiled)
> > > @@ -8312,7 +8313,7 @@ static void kabylake_init_clock_gating(struct drm_i915_private *dev_priv)
> > >  		I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
> > >  			   GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
> > >  
> > > -	/* WaFbcNukeOnHostModify:kbl */
> > > +	/* WaFbcNukeOnHostModify:kbl,cfl */
> > >  	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
> > >  		   ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
> > >  }
> > > @@ -8780,7 +8781,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))
> > > +	else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > >  		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;
> > 
> 

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

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

* Re: [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
  2017-06-07 21:53     ` Vivi, Rodrigo
@ 2017-06-07 22:06       ` Pandiyan, Dhinakaran
  2017-06-07 22:14         ` Vivi, Rodrigo
  0 siblings, 1 reply; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 22:06 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx

On Wed, 2017-06-07 at 21:53 +0000, Vivi, Rodrigo wrote:
> On Wed, 2017-06-07 at 18:04 +0000, Pandiyan, Dhinakaran wrote:
> > On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> > > All here is pretty much like Kabylake.
> > > 
> > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/intel_ddi.c | 6 +++---
> > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> > > index 8bac628..5b5bee6 100644
> > > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > > @@ -429,7 +429,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder)
> > >  		}
> > >  	}
> > >  
> > 
> > I don't see the corresponding change in the caller
> > intel_ddi_get_buf_trans_edp(). 
> > 
^How about this?

intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv,
                            int *n_entries)
{
        if (IS_KABYLAKE(dev_priv) || IS_SKYLAKE(dev_priv)) {
                return skl_get_buf_trans_edp(dev_priv, n_entries);


> > 
> > > -	if (IS_KABYLAKE(dev_priv))
> > > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> > >  	else
> > >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > > @@ -485,7 +485,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
> > >  intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv,
> > >  			   int *n_entries)
> > >  {
> > > -	if (IS_KABYLAKE(dev_priv)) {
> > > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {
> > 
> > What SKU's are being supported here? Anusha's sent patches for U, H and
> > S. I see distinct ddi_translation definitions for KBL U SKU's but I see
> > them missing for CFL in the callee kbl_get_buf_trans_dp. 
> 
> good catch! CFL-U is same as KBL-U and according to hardware engineers
> should start with same translation table. If something changes in the
> future we update here.
> 
> I will rebase and put this patch on top of PCI ID ones so I reuse the
> Anusha's definition to get CFL-U.
> 
> > 
> > 
> > -DK
> > 
> > 
> > >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> > >  	} else if (IS_SKYLAKE(dev_priv)) {
> > >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > > @@ -1478,7 +1478,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
> > >  		if (dp_iboost) {
> > >  			iboost = dp_iboost;
> > >  		} else {
> > > -			if (IS_KABYLAKE(dev_priv))
> > > +			if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > >  				ddi_translations = kbl_get_buf_trans_dp(dev_priv,
> > >  									&n_entries);
> > >  			else
> > 
> 

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

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

* Re: [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
  2017-06-07 22:06       ` Pandiyan, Dhinakaran
@ 2017-06-07 22:14         ` Vivi, Rodrigo
  0 siblings, 0 replies; 17+ messages in thread
From: Vivi, Rodrigo @ 2017-06-07 22:14 UTC (permalink / raw)
  To: Pandiyan, Dhinakaran; +Cc: intel-gfx

On Wed, 2017-06-07 at 22:06 +0000, Pandiyan, Dhinakaran wrote:
> On Wed, 2017-06-07 at 21:53 +0000, Vivi, Rodrigo wrote:
> > On Wed, 2017-06-07 at 18:04 +0000, Pandiyan, Dhinakaran wrote:
> > > On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> > > > All here is pretty much like Kabylake.
> > > > 
> > > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/intel_ddi.c | 6 +++---
> > > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> > > > index 8bac628..5b5bee6 100644
> > > > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > > > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > > > @@ -429,7 +429,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder)
> > > >  		}
> > > >  	}
> > > >  
> > > 
> > > I don't see the corresponding change in the caller
> > > intel_ddi_get_buf_trans_edp(). 
> > > 
> ^How about this?
> 
> intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv,
>                             int *n_entries)
> {
>         if (IS_KABYLAKE(dev_priv) || IS_SKYLAKE(dev_priv)) {
>                 return skl_get_buf_trans_edp(dev_priv, n_entries);

ouch!!!

I will include this...

> 
> 
> > > 
> > > > -	if (IS_KABYLAKE(dev_priv))
> > > > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > > >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> > > >  	else
> > > >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > > > @@ -485,7 +485,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
> > > >  intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv,
> > > >  			   int *n_entries)
> > > >  {
> > > > -	if (IS_KABYLAKE(dev_priv)) {
> > > > +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {
> > > 
> > > What SKU's are being supported here? Anusha's sent patches for U, H and
> > > S. I see distinct ddi_translation definitions for KBL U SKU's but I see
> > > them missing for CFL in the callee kbl_get_buf_trans_dp. 
> > 
> > good catch! CFL-U is same as KBL-U and according to hardware engineers
> > should start with same translation table. If something changes in the
> > future we update here.
> > 
> > I will rebase and put this patch on top of PCI ID ones so I reuse the
> > Anusha's definition to get CFL-U.
> > 
> > > 
> > > 
> > > -DK
> > > 
> > > 
> > > >  		return kbl_get_buf_trans_dp(dev_priv, n_entries);
> > > >  	} else if (IS_SKYLAKE(dev_priv)) {
> > > >  		return skl_get_buf_trans_dp(dev_priv, n_entries);
> > > > @@ -1478,7 +1478,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
> > > >  		if (dp_iboost) {
> > > >  			iboost = dp_iboost;
> > > >  		} else {
> > > > -			if (IS_KABYLAKE(dev_priv))
> > > > +			if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> > > >  				ddi_translations = kbl_get_buf_trans_dp(dev_priv,
> > > >  									&n_entries);
> > > >  			else
> > > 
> > 
> 

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

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

* Re: [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds.
  2017-06-06 19:20 ` [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds Rodrigo Vivi
@ 2017-06-07 22:40   ` Pandiyan, Dhinakaran
  2017-06-08 14:01   ` Mika Kuoppala
  1 sibling, 0 replies; 17+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-06-07 22:40 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, Kuoppala, Mika

On Tue, 2017-06-06 at 12:20 -0700, Rodrigo Vivi wrote:
> Coffee Lake inherit most of Kabylake production
> workardounds.
> 
> Only difference identified so far is:
> - WaDisableLSQCROPERFforOCL is marked as SIWA_NEVER
> 
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c    |  2 +-
>  drivers/gpu/drm/i915/intel_engine_cs.c | 75 +++++++++++++++++++++++++---------
>  drivers/gpu/drm/i915/intel_pm.c        | 10 ++---
>  3 files changed, 61 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 4ff854e..8e055b1 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -1884,7 +1884,7 @@ 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 */
> +	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
>  	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))
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index bc38bd1..630ff6e 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -814,24 +814,24 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  	struct drm_i915_private *dev_priv = engine->i915;
>  	int ret;
>  
> -	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk */
> +	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE));
>  
> -	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk */
> +	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
>  		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);
>  
> -	/* WaDisableKillLogic:bxt,skl,kbl */
> +	/* WaDisableKillLogic:bxt,skl,kbl,cfl */
>  	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
>  		   ECOCHK_DIS_TLB);
>  
> -	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk */
> -	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk */
> +	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk,cfl */
> +	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk,cfl */
>  	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
>  			  FLOW_CONTROL_ENABLE |
>  			  PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
>  
> -	/* Syncing dependencies between camera and graphics:skl,bxt,kbl */
> +	/* Syncing dependencies between camera and graphics:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
>  			  GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
>  
> @@ -851,18 +851,18 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  		 */
>  	}
>  
> -	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk */
> -	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl */
> +	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk,cfl */
> +	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
>  			  GEN9_ENABLE_YV12_BUGFIX |
>  			  GEN9_ENABLE_GPGPU_PREEMPTION);
>  
> -	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk */
> -	/* WaDisablePartialResolveInVc:skl,bxt,kbl */
> +	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk,cfl */
> +	/* WaDisablePartialResolveInVc:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(CACHE_MODE_1, (GEN8_4x4_STC_OPTIMIZATION_DISABLE |
>  					 GEN9_PARTIAL_RESOLVE_IN_VC_DISABLE));
>  
> -	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk */
> +	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk,cfl */
>  	WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
>  			  GEN9_CCS_TLB_PREFETCH_ENABLE);
>  
> @@ -871,7 +871,7 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  		WA_SET_BIT_MASKED(SLICE_ECO_CHICKEN0,
>  				  PIXEL_MASK_CAMMING_DISABLE);
>  
> -	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl */
> +	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HDC_CHICKEN0,
>  			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
>  			  HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE);
> @@ -889,39 +889,40 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  	 * a TLB invalidation occurs during a PSD flush.
>  	 */
>  
> -	/* WaForceEnableNonCoherent:skl,bxt,kbl */
> +	/* WaForceEnableNonCoherent:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HDC_CHICKEN0,
>  			  HDC_FORCE_NON_COHERENT);
>  
> -	/* WaDisableHDCInvalidation:skl,bxt,kbl */
> +	/* WaDisableHDCInvalidation:skl,bxt,kbl,cfl */
>  	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
>  		   BDW_DISABLE_HDC_INVALIDATION);
>  
> -	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
> +	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl,cfl */
>  	if (IS_SKYLAKE(dev_priv) ||
>  	    IS_KABYLAKE(dev_priv) ||
> +	    IS_COFFEELAKE(dev_priv)||

GEN9_BC?


>  	    IS_BXT_REVID(dev_priv, 0, BXT_REVID_B0))
>  		WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
>  				  GEN8_SAMPLER_POWER_BYPASS_DIS);
>  
> -	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl,glk */
> +	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl,glk,cfl */
>  	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
>  
> -	/* WaOCLCoherentLineFlush:skl,bxt,kbl */
> +	/* WaOCLCoherentLineFlush:skl,bxt,kbl,cfl */
>  	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
>  				    GEN8_LQSC_FLUSH_COHERENT_LINES));
>  
> -	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk */
> +	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk,cfl */
>  	ret = wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
>  	if (ret)
>  		return ret;
>  
> -	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl */
> +	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl,cfl */
>  	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
>  	if (ret)
>  		return ret;
>  
> -	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk */
> +	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk,cfl */
>  	ret = wa_ring_whitelist_reg(engine, GEN8_HDC_CHICKEN1);
>  	if (ret)
>  		return ret;
> @@ -1140,6 +1141,38 @@ static int glk_init_workarounds(struct intel_engine_cs *engine)
>  	return 0;
>  }
>  
> +static int cfl_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;
> +
> +	/* WaEnableGapsTsvCreditFix:cfl */
> +	I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
> +				   GEN9_GAPS_TSV_CREDIT_DISABLE));
> +
> +	/* WaToEnableHwFixForPushConstHWBug:cfl */
> +	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> +			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
> +
> +	/* WaDisableGafsUnitClkGating:cfl */
> +	WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);
> +
> +	/* WaDisableSbeCacheDispatchPortSharing:cfl */
> +	WA_SET_BIT_MASKED(
> +		GEN7_HALF_SLICE_CHICKEN1,
> +		GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
> +
> +	/* WaInPlaceDecompressionHang:cfl */
> +	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
> +		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> +
> +	return 0;
> +}
> +
>  int init_workarounds_ring(struct intel_engine_cs *engine)
>  {
>  	struct drm_i915_private *dev_priv = engine->i915;
> @@ -1162,6 +1195,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
>  		err = kbl_init_workarounds(engine);
>  	else if (IS_GEMINILAKE(dev_priv))
>  		err =  glk_init_workarounds(engine);
> +	else if (IS_COFFEELAKE(dev_priv))
> +		err = cfl_init_workarounds(engine);
>  	else
>  		err = 0;
>  	if (err)

Noting a couple of things that will change in the next version.
1) Commit message and title change to clarify these are GT workarounds.
2) The hunk below moves to patch 4/5. 


I am unable review the workarounds themselves, will leave it for someone
who is competent in this area to do it.


> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 98aeba9..0aed13d 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 */
> +	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
>  	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 */
> +	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(GEN8_CHICKEN_DCPR_1,
>  		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>  
> -	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl */
> -	/* WaFbcWakeMemOn:skl,bxt,kbl,glk */
> +	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
> +	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
>  		   DISP_FBC_WM_DIS |
>  		   DISP_FBC_MEMORY_WAKE);
>  
> -	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl */
> +	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */
>  	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>  		   ILK_DPFC_DISABLE_DUMMY0);
>  }

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

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

* Re: [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds.
  2017-06-06 19:20 ` [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds Rodrigo Vivi
  2017-06-07 22:40   ` Pandiyan, Dhinakaran
@ 2017-06-08 14:01   ` Mika Kuoppala
  1 sibling, 0 replies; 17+ messages in thread
From: Mika Kuoppala @ 2017-06-08 14:01 UTC (permalink / raw)
  To: intel-gfx; +Cc: Dhinakaran Pandiyan, Rodrigo Vivi

Rodrigo Vivi <rodrigo.vivi@intel.com> writes:

> Coffee Lake inherit most of Kabylake production
> workardounds.
>
> Only difference identified so far is:
> - WaDisableLSQCROPERFforOCL is marked as SIWA_NEVER
>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c    |  2 +-
>  drivers/gpu/drm/i915/intel_engine_cs.c | 75 +++++++++++++++++++++++++---------
>  drivers/gpu/drm/i915/intel_pm.c        | 10 ++---
>  3 files changed, 61 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 4ff854e..8e055b1 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -1884,7 +1884,7 @@ 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 */
> +	/* WaIncreaseDefaultTLBEntries:chv,bdw,skl,bxt,kbl,glk,cfl */
>  	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))
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index bc38bd1..630ff6e 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -814,24 +814,24 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  	struct drm_i915_private *dev_priv = engine->i915;
>  	int ret;
>  
> -	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk */
> +	/* WaConextSwitchWithConcurrentTLBInvalidate:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN9_PREEMPT_GPGPU_SYNC_SWITCH_DISABLE));
>  
> -	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk */
> +	/* WaEnableLbsSlaRetryTimerDecrement:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) |
>  		   GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE);
>  
> -	/* WaDisableKillLogic:bxt,skl,kbl */
> +	/* WaDisableKillLogic:bxt,skl,kbl,cfl */
>  	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
>  		   ECOCHK_DIS_TLB);
>

I couldn't find reference to this in anywhere. So I
would suggest excluding it, unless you have better sources :)


> -	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk */
> -	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk */
> +	/* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk,cfl */
> +	/* WaDisablePartialInstShootdown:skl,bxt,kbl,glk,cfl */
>  	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
>  			  FLOW_CONTROL_ENABLE |
>  			  PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
>  
> -	/* Syncing dependencies between camera and graphics:skl,bxt,kbl */
> +	/* Syncing dependencies between camera and graphics:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
>  			  GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
>

Bspec says that should be disabled for skl+. Bspec is outdated?

> @@ -851,18 +851,18 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  		 */
>  	}
>  
> -	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk */
> -	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl */
> +	/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt,kbl,glk,cfl */
> +	/* WaEnableSamplerGPGPUPreemptionSupport:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
>  			  GEN9_ENABLE_YV12_BUGFIX |
>  			  GEN9_ENABLE_GPGPU_PREEMPTION);
>  
> -	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk */
> -	/* WaDisablePartialResolveInVc:skl,bxt,kbl */
> +	/* Wa4x4STCOptimizationDisable:skl,bxt,kbl,glk,cfl */
> +	/* WaDisablePartialResolveInVc:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(CACHE_MODE_1, (GEN8_4x4_STC_OPTIMIZATION_DISABLE |
>  					 GEN9_PARTIAL_RESOLVE_IN_VC_DISABLE));
>  
> -	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk */
> +	/* WaCcsTlbPrefetchDisable:skl,bxt,kbl,glk,cfl */
>  	WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
>  			  GEN9_CCS_TLB_PREFETCH_ENABLE);
>  
> @@ -871,7 +871,7 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  		WA_SET_BIT_MASKED(SLICE_ECO_CHICKEN0,
>  				  PIXEL_MASK_CAMMING_DISABLE);
>  
> -	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl */
> +	/* WaForceContextSaveRestoreNonCoherent:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HDC_CHICKEN0,
>  			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
>  			  HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE);
> @@ -889,39 +889,40 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
>  	 * a TLB invalidation occurs during a PSD flush.
>  	 */
>  
> -	/* WaForceEnableNonCoherent:skl,bxt,kbl */
> +	/* WaForceEnableNonCoherent:skl,bxt,kbl,cfl */
>  	WA_SET_BIT_MASKED(HDC_CHICKEN0,
>  			  HDC_FORCE_NON_COHERENT);
>  
> -	/* WaDisableHDCInvalidation:skl,bxt,kbl */
> +	/* WaDisableHDCInvalidation:skl,bxt,kbl,cfl */
>  	I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
>  		   BDW_DISABLE_HDC_INVALIDATION);
>

The two above are not mentioned with cfl. But the comment and
history of these workarounds speaks volumes, so I agree with these.

> -	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl */
> +	/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl,cfl */
>  	if (IS_SKYLAKE(dev_priv) ||
>  	    IS_KABYLAKE(dev_priv) ||
> +	    IS_COFFEELAKE(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,kbl,glk */
> +	/* WaDisableSTUnitPowerOptimization:skl,bxt,kbl,glk,cfl */
>  	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN2, GEN8_ST_PO_DISABLE);
>  
> -	/* WaOCLCoherentLineFlush:skl,bxt,kbl */
> +	/* WaOCLCoherentLineFlush:skl,bxt,kbl,cfl */
>  	I915_WRITE(GEN8_L3SQCREG4, (I915_READ(GEN8_L3SQCREG4) |
>  				    GEN8_LQSC_FLUSH_COHERENT_LINES));
>

For me it seems that the workaround name has changed:
WaPipelineFlushCoherentLines. Should be carried to cfl.

> -	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk */
> +	/* WaVFEStateAfterPipeControlwithMediaStateClear:skl,bxt,glk,cfl */
>  	ret = wa_ring_whitelist_reg(engine, GEN9_CTX_PREEMPT_REG);
>  	if (ret)
>  		return ret;
>  
> -	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl */
> +	/* WaEnablePreemptionGranularityControlByUMD:skl,bxt,kbl,cfl */
>  	ret= wa_ring_whitelist_reg(engine, GEN8_CS_CHICKEN1);
>  	if (ret)
>  		return ret;
>  
> -	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk */
> +	/* WaAllowUMDToModifyHDCChicken1:skl,bxt,kbl,glk,cfl */
>  	ret = wa_ring_whitelist_reg(engine, GEN8_HDC_CHICKEN1);
>  	if (ret)
>  		return ret;
> @@ -1140,6 +1141,38 @@ static int glk_init_workarounds(struct intel_engine_cs *engine)
>  	return 0;
>  }
>  
> +static int cfl_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;
> +
> +	/* WaEnableGapsTsvCreditFix:cfl */
> +	I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) |
> +				   GEN9_GAPS_TSV_CREDIT_DISABLE));
> +
> +	/* WaToEnableHwFixForPushConstHWBug:cfl */
> +	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> +			  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);
> +
> +	/* WaDisableGafsUnitClkGating:cfl */
> +	WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);
> +
> +	/* WaDisableSbeCacheDispatchPortSharing:cfl */
> +	WA_SET_BIT_MASKED(
> +		GEN7_HALF_SLICE_CHICKEN1,
> +		GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);
> +
> +	/* WaInPlaceDecompressionHang:cfl */
> +	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
> +		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> +
> +	return 0;
> +}
> +
>  int init_workarounds_ring(struct intel_engine_cs *engine)
>  {
>  	struct drm_i915_private *dev_priv = engine->i915;
> @@ -1162,6 +1195,8 @@ int init_workarounds_ring(struct intel_engine_cs *engine)
>  		err = kbl_init_workarounds(engine);
>  	else if (IS_GEMINILAKE(dev_priv))
>  		err =  glk_init_workarounds(engine);
> +	else if (IS_COFFEELAKE(dev_priv))
> +		err = cfl_init_workarounds(engine);
>  	else
>  		err = 0;
>  	if (err)
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 98aeba9..0aed13d 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 */
> +	/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
>  	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 */
> +	/* WaEnableChickenDCPR:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(GEN8_CHICKEN_DCPR_1,
>  		   I915_READ(GEN8_CHICKEN_DCPR_1) | MASK_WAKEMEM);
>  
> -	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl */
> -	/* WaFbcWakeMemOn:skl,bxt,kbl,glk */
> +	/* WaFbcTurnOffFbcWatermark:skl,bxt,kbl,cfl */
> +	/* WaFbcWakeMemOn:skl,bxt,kbl,glk,cfl */
>  	I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) |
>  		   DISP_FBC_WM_DIS |
>  		   DISP_FBC_MEMORY_WAKE);
>  
> -	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl */
> +	/* WaFbcHighMemBwCorruptionAvoidance:skl,bxt,kbl,cfl */

I haven't rummaged around what new we might be missing. So
we should do a second pass after month or two.

With WaDisableKillLogic and GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC
double checked.

Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>


>  	I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
>  		   ILK_DPFC_DISABLE_DUMMY0);
>  }
> -- 
> 1.9.1
>
> _______________________________________________
> 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] 17+ messages in thread

end of thread, other threads:[~2017-06-08 14:02 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-06 19:19 [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Rodrigo Vivi
2017-06-06 19:19 ` [PATCH 2/5] drm/i915/cfl: Coffee Lake uses CNP PCH Rodrigo Vivi
2017-06-07 17:40   ` Pandiyan, Dhinakaran
2017-06-06 19:20 ` [PATCH 3/5] drm/i915/cfl: Basic DDI plumbing for Coffee Lake Rodrigo Vivi
2017-06-07 18:04   ` Pandiyan, Dhinakaran
2017-06-07 21:53     ` Vivi, Rodrigo
2017-06-07 22:06       ` Pandiyan, Dhinakaran
2017-06-07 22:14         ` Vivi, Rodrigo
2017-06-06 19:20 ` [PATCH 4/5] drm/i915/cfl: Introduce Display workarounds " Rodrigo Vivi
2017-06-07 18:44   ` Pandiyan, Dhinakaran
2017-06-07 21:52     ` Vivi, Rodrigo
2017-06-07 22:00       ` Pandiyan, Dhinakaran
2017-06-06 19:20 ` [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds Rodrigo Vivi
2017-06-07 22:40   ` Pandiyan, Dhinakaran
2017-06-08 14:01   ` Mika Kuoppala
2017-06-06 21:26 ` [PATCH 1/5] drm/i915/cfl: Introduce Coffee Lake platform definition Srivatsa, Anusha
2017-06-07  7:42 ` ✓ Fi.CI.BAT: success for series starting with [1/5] " Patchwork

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.