[Intel-gfx] [PATCH v2] drm/i915: Don't apply the 16Gb DIMM wm latency w/a to BXT/GLK

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Oct 23 18:58:35 UTC 2018


On Tue, Oct 23, 2018 at 09:21:02PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> The 16Gb DIMM w/a is not applicable to BXT or GLK. Limit it to
> the appropriate platforms.
> 
> This was especially harsh on GLK since we don't even try to read
> the DIMM information on that platforms, hence valid_dimm was
> always false and thus we always tried to apply the w/a.
> Furthermore the w/a pushed the level 0 latency above the
> level 1 latency, which doesn't really make sense.
> 
> v2: Do the check when populating is_16gb_dimm (Mahesh)
> 
> Cc: Mahesh Kumar <mahesh1.kumar at intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Fixes: 86b592876cb6 ("drm/i915: Implement 16GB dimm wa for latency level-0")
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

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

> ---
>  drivers/gpu/drm/i915/i915_drv.c | 15 ++++++++-------
>  drivers/gpu/drm/i915/i915_drv.h |  1 -
>  drivers/gpu/drm/i915/intel_pm.c |  3 +--
>  3 files changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index baac35f698f9..6571044c9286 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1165,8 +1165,6 @@ skl_dram_get_channels_info(struct drm_i915_private *dev_priv)
>  		return -EINVAL;
>  	}
>  
> -	dram_info->valid_dimm = true;
> -
>  	/*
>  	 * If any of the channel is single rank channel, worst case output
>  	 * will be same as if single rank memory, so consider single rank
> @@ -1183,8 +1181,7 @@ skl_dram_get_channels_info(struct drm_i915_private *dev_priv)
>  		return -EINVAL;
>  	}
>  
> -	if (ch0.is_16gb_dimm || ch1.is_16gb_dimm)
> -		dram_info->is_16gb_dimm = true;
> +	dram_info->is_16gb_dimm = ch0.is_16gb_dimm || ch1.is_16gb_dimm;
>  
>  	dev_priv->dram_info.symmetric_memory = intel_is_dram_symmetric(val_ch0,
>  								       val_ch1,
> @@ -1304,7 +1301,6 @@ bxt_get_dram_info(struct drm_i915_private *dev_priv)
>  		return -EINVAL;
>  	}
>  
> -	dram_info->valid_dimm = true;
>  	dram_info->valid = true;
>  	return 0;
>  }
> @@ -1317,12 +1313,17 @@ intel_get_dram_info(struct drm_i915_private *dev_priv)
>  	int ret;
>  
>  	dram_info->valid = false;
> -	dram_info->valid_dimm = false;
> -	dram_info->is_16gb_dimm = false;
>  	dram_info->rank = I915_DRAM_RANK_INVALID;
>  	dram_info->bandwidth_kbps = 0;
>  	dram_info->num_channels = 0;
>  
> +	/*
> +	 * Assume 16Gb DIMMs are present until proven otherwise.
> +	 * This is only used for the level 0 watermark latency
> +	 * w/a which does not apply to bxt/glk.
> +	 */
> +	dram_info->is_16gb_dimm = !IS_GEN9_LP(dev_priv);
> +
>  	if (INTEL_GEN(dev_priv) < 9 || IS_GEMINILAKE(dev_priv))
>  		return;
>  
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 22cf3c75558c..2d7761b8ac07 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1933,7 +1933,6 @@ struct drm_i915_private {
>  
>  	struct dram_info {
>  		bool valid;
> -		bool valid_dimm;
>  		bool is_16gb_dimm;
>  		u8 num_channels;
>  		enum dram_rank {
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 67a4d0735291..faef7f528269 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -2881,8 +2881,7 @@ static void intel_read_wm_latency(struct drm_i915_private *dev_priv,
>  		 * any underrun. If not able to get Dimm info assume 16GB dimm
>  		 * to avoid any underrun.
>  		 */
> -		if (!dev_priv->dram_info.valid_dimm ||
> -		    dev_priv->dram_info.is_16gb_dimm)
> +		if (dev_priv->dram_info.is_16gb_dimm)
>  			wm[0] += 1;
>  
>  	} else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv)) {
> -- 
> 2.18.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list