diff mbox series

[5/5] drm/i915: Move w/a 0477/WaDisableIPC:skl into intel_init_ipc()

Message ID 20190218205250.31215-5-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [1/5] drm/i915: Enable transition watermarks for glk | expand

Commit Message

Ville Syrjälä Feb. 18, 2019, 8:52 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Move the w/a to disable IPC on SKL closer to the actual code
that implements IPS. Otherwise I just end up confused as to
what is excluding SKL from considerations.

IMO this makes more sense anyway since the hw does have the
feature, we're just not supposed to use it.

And this also makes us actually disable IPC in case eg. the
BIOS enabled it when it shouldn't have.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_pci.c |  2 --
 drivers/gpu/drm/i915/intel_pm.c | 19 ++++++++++++++-----
 2 files changed, 14 insertions(+), 7 deletions(-)

Comments

Rodrigo Vivi Feb. 19, 2019, 5:50 p.m. UTC | #1
On Mon, Feb 18, 2019 at 10:52:50PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Move the w/a to disable IPC on SKL closer to the actual code
> that implements IPS. Otherwise I just end up confused as to
> what is excluding SKL from considerations.
> 
> IMO this makes more sense anyway since the hw does have the
> feature, we're just not supposed to use it.
> 
> And this also makes us actually disable IPC in case eg. the
> BIOS enabled it when it shouldn't have.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

iirc your argument had convinced me, but I forgot to state
that back, sorry...

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> ---
>  drivers/gpu/drm/i915/i915_pci.c |  2 --
>  drivers/gpu/drm/i915/intel_pm.c | 19 ++++++++++++++-----
>  2 files changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index c4d6b8da9b03..eaa69c83b8b2 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -505,8 +505,6 @@ static const struct intel_device_info intel_cherryview_info = {
>  
>  #define SKL_PLATFORM \
>  	GEN9_FEATURES, \
> -	/* Display WA #0477 WaDisableIPC: skl */ \
> -	.display.has_ipc = 0, \
>  	PLATFORM(INTEL_SKYLAKE)
>  
>  static const struct intel_device_info intel_skylake_gt1_info = {
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 2bd1a47a134a..e177f229a2ca 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -6333,16 +6333,25 @@ void intel_enable_ipc(struct drm_i915_private *dev_priv)
>  	I915_WRITE(DISP_ARB_CTL2, val);
>  }
>  
> +static bool intel_can_enable_ipc(struct drm_i915_private *dev_priv)
> +{
> +	/* Display WA #0477 WaDisableIPC: skl */
> +	if (IS_SKYLAKE(dev_priv))
> +		return false;
> +
> +	/* Display WA #1141: SKL:all KBL:all CFL */
> +	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> +		return dev_priv->dram_info.symmetric_memory;
> +
> +	return true;
> +}
> +
>  void intel_init_ipc(struct drm_i915_private *dev_priv)
>  {
>  	if (!HAS_IPC(dev_priv))
>  		return;
>  
> -	/* Display WA #1141: SKL:all KBL:all CFL */
> -	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
> -		dev_priv->ipc_enabled = dev_priv->dram_info.symmetric_memory;
> -	else
> -		dev_priv->ipc_enabled = true;
> +	dev_priv->ipc_enabled = intel_can_enable_ipc(dev_priv);
>  
>  	intel_enable_ipc(dev_priv);
>  }
> -- 
> 2.19.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index c4d6b8da9b03..eaa69c83b8b2 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -505,8 +505,6 @@  static const struct intel_device_info intel_cherryview_info = {
 
 #define SKL_PLATFORM \
 	GEN9_FEATURES, \
-	/* Display WA #0477 WaDisableIPC: skl */ \
-	.display.has_ipc = 0, \
 	PLATFORM(INTEL_SKYLAKE)
 
 static const struct intel_device_info intel_skylake_gt1_info = {
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 2bd1a47a134a..e177f229a2ca 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6333,16 +6333,25 @@  void intel_enable_ipc(struct drm_i915_private *dev_priv)
 	I915_WRITE(DISP_ARB_CTL2, val);
 }
 
+static bool intel_can_enable_ipc(struct drm_i915_private *dev_priv)
+{
+	/* Display WA #0477 WaDisableIPC: skl */
+	if (IS_SKYLAKE(dev_priv))
+		return false;
+
+	/* Display WA #1141: SKL:all KBL:all CFL */
+	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
+		return dev_priv->dram_info.symmetric_memory;
+
+	return true;
+}
+
 void intel_init_ipc(struct drm_i915_private *dev_priv)
 {
 	if (!HAS_IPC(dev_priv))
 		return;
 
-	/* Display WA #1141: SKL:all KBL:all CFL */
-	if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv))
-		dev_priv->ipc_enabled = dev_priv->dram_info.symmetric_memory;
-	else
-		dev_priv->ipc_enabled = true;
+	dev_priv->ipc_enabled = intel_can_enable_ipc(dev_priv);
 
 	intel_enable_ipc(dev_priv);
 }