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

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Oct 11 16:05:47 UTC 2018


On Thu, Oct 11, 2018 at 02:30:41AM +0530, Mahesh Kumar wrote:
> On Thu, Oct 11, 2018 at 2:19 AM Mahesh Kumar <mahesh1.sh.kumar at gmail.com> wrote:
> >
> > Hi,
> >
> > On Wed, Oct 10, 2018 at 11:25 PM Ville Syrjala
> > <ville.syrjala at linux.intel.com> 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.
> > >
> > > 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>
> > > ---
> > >  drivers/gpu/drm/i915/intel_pm.c | 5 +++--
> > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > > index 1392aa56a55a..a51cd09bbf75 100644
> > > --- a/drivers/gpu/drm/i915/intel_pm.c
> > > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > > @@ -2881,8 +2881,9 @@ 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 (!IS_GEN9_LP(dev_priv) &&
> > > +                   (!dev_priv->dram_info.valid_dimm ||
> > > +                    dev_priv->dram_info.is_16gb_dimm))
> > >                         wm[0] += 1;
> >
> > I would rather prefer to update "intel_get_dram_info"  to fill
> > valid_dimm and is_16gb_dimm info properly
> >
> > -       if (INTEL_GEN(dev_priv) < 9 || IS_GEMINILAKE(dev_priv))
> > +       if (INTEL_GEN(dev_priv) < 9 )
> >                 return;
> >
> > +       if (IS_GEN9_LP(dev_priv)) {
> > +               dram_info->valid_dimm = true;
> > +               dram_info->is_16gb_dimm = false;
> > +       }
> > +
> > +
> We don't want to proceed for GLK. So, something like:
> 
> +       if (IS_GEN9_LP(dev_priv)) {
> +               dram_info->valid_dimm = true;
> +               dram_info->is_16gb_dimm = false;
> +       }
> +

I was going to do this initially but then I thought that it
might cause someone else to assume the dram info is actually
valid and rely on other stale data in there.

I guess a compromise is to ignore valid_dimm entirely and make
sure is_16gb_dimm is populated like we want for every platform.
Would probably need a comment to make sure no one extends the
16Gb dimm detection to cover BXT/GLK and accidentally re-enable
the w/a on those platforms (if they can even have 16Gb DIMMs?).

There's a bit of confusion in other parts of the dram detection
code as well. Eg. why does skl_dram_get_channels_info() set
valid_dimm=true before it configures is_16gb_dimm? There's a
return statement in between so we can be left with some kind
of bogus dram information, no?

>         if (INTEL_GEN(dev_priv) < 9 || IS_GEMINILAKE(dev_priv))
>                 return;
> 
> -Mahesh
> >
> > -Mahesh
> >
> > >
> > >         } 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

-- 
Ville Syrjälä
Intel


More information about the Intel-gfx mailing list