On Fri, 2025-09-05 at 17:58 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> While the spec only asks us to do the WM0 latency bump for 16Gb
> DRAM devices I believe we should apply it for larger DRAM chips.
> At the time the w/a was added there were no larger chips on
> the market, but I think I've seen at least 32Gb DDR4 chips
> being available these days.
> 
> Whether it's possible to actually find suitable DIMMs for the
> affected systems with largers chips I don't know. Also it's
> not known whether the 1 usec latency bump would be sufficient
> for larger chips. Someone would need to find such DIMMs and
> test this. Fortunately we do have a bit of extra latency already
> with the 1 usec bump, as the actual requirement was .4 usec for
> for 16Gb chips.
> 
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---

Sound reasonable.

Reviewed-by: Luca Coelho <luciano.coe...@intel.com>

--
Cheers,
Luca.




>  drivers/gpu/drm/i915/display/skl_watermark.c |  4 ++--
>  drivers/gpu/drm/i915/soc/intel_dram.c        | 10 +++++-----
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c 
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 0b9c86042e78..b7482d428868 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3209,9 +3209,9 @@ adjust_wm_latency(struct intel_display *display,
>       }
>  
>       /*
> -      * WA Level-0 adjustment for 16Gb DIMMs: SKL+
> +      * WA Level-0 adjustment for 16Gb+ DIMMs: SKL+
>        * If we could not get dimm info enable this WA to prevent from
> -      * any underrun. If not able to get DIMM info assume 16Gb DIMM
> +      * any underrun. If not able to get DIMM info assume 16Gb+ DIMM
>        * to avoid any underrun.
>        */
>       if (!display->platform.dg2 && dram_info->has_16gb_dimms)
> diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c 
> b/drivers/gpu/drm/i915/soc/intel_dram.c
> index 149527827624..8e81573022ff 100644
> --- a/drivers/gpu/drm/i915/soc/intel_dram.c
> +++ b/drivers/gpu/drm/i915/soc/intel_dram.c
> @@ -335,7 +335,7 @@ static bool
>  skl_is_16gb_dimm(const struct dram_dimm_info *dimm)
>  {
>       /* Convert total Gb to Gb per DRAM device */
> -     return dimm->size / (intel_dimm_num_devices(dimm) ?: 1) == 16;
> +     return dimm->size / (intel_dimm_num_devices(dimm) ?: 1) >= 16;
>  }
>  
>  static void
> @@ -354,7 +354,7 @@ skl_dram_get_dimm_info(struct drm_i915_private *i915,
>       }
>  
>       drm_dbg_kms(&i915->drm,
> -                 "CH%u DIMM %c size: %u Gb, width: X%u, ranks: %u, 16Gb 
> DIMMs: %s\n",
> +                 "CH%u DIMM %c size: %u Gb, width: X%u, ranks: %u, 16Gb+ 
> DIMMs: %s\n",
>                   channel, dimm_name, dimm->size, dimm->width, dimm->ranks,
>                   str_yes_no(skl_is_16gb_dimm(dimm)));
>  }
> @@ -384,7 +384,7 @@ skl_dram_get_channel_info(struct drm_i915_private *i915,
>       ch->is_16gb_dimm = skl_is_16gb_dimm(&ch->dimm_l) ||
>               skl_is_16gb_dimm(&ch->dimm_s);
>  
> -     drm_dbg_kms(&i915->drm, "CH%u ranks: %u, 16Gb DIMMs: %s\n",
> +     drm_dbg_kms(&i915->drm, "CH%u ranks: %u, 16Gb+ DIMMs: %s\n",
>                   channel, ch->ranks, str_yes_no(ch->is_16gb_dimm));
>  
>       return 0;
> @@ -406,7 +406,7 @@ skl_dram_get_channels_info(struct drm_i915_private *i915, 
> struct dram_info *dram
>       u32 val;
>       int ret;
>  
> -     /* Assume 16Gb DIMMs are present until proven otherwise */
> +     /* Assume 16Gb+ DIMMs are present until proven otherwise */
>       dram_info->has_16gb_dimms = true;
>  
>       val = intel_uncore_read(&i915->uncore,
> @@ -438,7 +438,7 @@ skl_dram_get_channels_info(struct drm_i915_private *i915, 
> struct dram_info *dram
>       drm_dbg_kms(&i915->drm, "Memory configuration is symmetric? %s\n",
>                   str_yes_no(dram_info->symmetric_memory));
>  
> -     drm_dbg_kms(&i915->drm, "16Gb DIMMs: %s\n",
> +     drm_dbg_kms(&i915->drm, "16Gb+ DIMMs: %s\n",
>                   str_yes_no(dram_info->has_16gb_dimms));
>  
>       return 0;

Reply via email to