+ I had Lucas' email id wrong. Fixed.

On Wed, 2025-10-01 at 16:10 +0300, Jani Nikula wrote:
> On Wed, 01 Oct 2025, "Govindapillai, Vinod" <[email protected]> 
> wrote:
> > On Wed, 2025-10-01 at 13:03 +0300, Jani Nikula wrote:
> > > On Wed, 01 Oct 2025, Vinod Govindapillai <[email protected]> 
> > > wrote:
> > > > wa_22014263786 is not applicable to the BMG and hence exclude it
> > > > from the wa.
> > > > 
> > > > v2: Limit this wa to display verion 11 to 14, drop DG2 from the
> > > >     exclusion list, use intel_display_wa (Lucas)
> > > > 
> > > > Bspec: 74212, 66624
> > > > Signed-off-by: Vinod Govindapillai <[email protected]>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_display_wa.c | 12 ++++++++++++
> > > >  drivers/gpu/drm/i915/display/intel_display_wa.h |  1 +
> > > >  drivers/gpu/drm/i915/display/intel_fbc.c        |  3 +--
> > > >  3 files changed, 14 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.c
> > > > b/drivers/gpu/drm/i915/display/intel_display_wa.c
> > > > index 31cd2c9cd488..7ca238725e30 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_wa.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_wa.c
> > > > @@ -52,6 +52,16 @@ static bool 
> > > > intel_display_needs_wa_16025573575(struct intel_display
> > > > *display)
> > > >         return DISPLAY_VERx100(display) == 3000 || 
> > > > DISPLAY_VERx100(display) == 3002;
> > > >  }
> > > >  
> > > > +/*
> > > > + * Wa_22014263786:
> > > > + * Fixes: Screen flicker with FBC and Package C state enabled
> > > > + * Workaround: Forced SLB invalidation before start of new frame.
> > > > + */
> > > > +static bool intel_display_needs_wa_22014263786(struct intel_display 
> > > > *display)
> > > > +{
> > > > +       return DISPLAY_VERx100(display) >= 1100 && 
> > > > DISPLAY_VERx100(display) < 1401;
> > > 
> > > IS_DISPLAY_VERx100(display, 1100, 1400)
> > > 
> > > Also I'm not sure if we really need separate functions for one-liners
> > > like this. The documentation could be in the switch case too? *shrug*.
> > 
> > Thanks. I will update that. I will get rid of the comments. I dont think it 
> > adds any extra
> > information other than what it can be found from wa details.
> 
> But I did not say we should get rid of the comments! We don't want to
> make people look up the wa details, because it's not publicly available
> information.
> 
> I'm just wondering if we need the separate *function*.

I got that part. I thought I will remove the comments along with that change! 
Originally this wa
also did not have much information as comments other than the impacted 
platforms. 

Okay. Will wait for Ville's feedback before floating another version

BR
Vinod
> 
> CC: Ville who's had pretty strong opinions on this whole thing.
> 
> 
> BR,
> Jani.
> 
> 
> > 
> > BR
> > Vinod
> > > 
> > > BR,
> > > Jani.
> > > 
> > > > +}
> > > > +
> > > >  /*
> > > >   * Wa_14011503117:
> > > >   * Fixes: Before enabling the scaler DE fatal error is masked
> > > > @@ -67,6 +77,8 @@ bool __intel_display_wa(struct intel_display 
> > > > *display, enum
> > > > intel_display_wa
> > > > wa,
> > > >                 return intel_display_needs_wa_16025573575(display);
> > > >         case INTEL_DISPLAY_WA_14011503117:
> > > >                 return DISPLAY_VER(display) == 13;
> > > > +       case INTEL_DISPLAY_WA_22014263786:
> > > > +               return intel_display_needs_wa_22014263786(display);
> > > >         default:
> > > >                 drm_WARN(display->drm, 1, "Missing Wa number: %s\n", 
> > > > name);
> > > >                 break;
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > > b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > > index abc1df83f066..3644e8e2b724 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > > @@ -25,6 +25,7 @@ enum intel_display_wa {
> > > >         INTEL_DISPLAY_WA_16023588340,
> > > >         INTEL_DISPLAY_WA_16025573575,
> > > >         INTEL_DISPLAY_WA_14011503117,
> > > > +       INTEL_DISPLAY_WA_22014263786,
> > > >  };
> > > >  
> > > >  bool __intel_display_wa(struct intel_display *display, enum 
> > > > intel_display_wa wa, const char
> > > > *name);
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> > > > b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > > index 0d380c825791..9607fdcb0cc0 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > > @@ -933,8 +933,7 @@ static void intel_fbc_program_workarounds(struct 
> > > > intel_fbc *fbc)
> > > >                 intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
> > > >                              0, DPFC_CHICKEN_COMP_DUMMY_PIXEL);
> > > >  
> > > > -       /* Wa_22014263786:icl,jsl,tgl,dg1,rkl,adls,adlp,mtl */
> > > > -       if (DISPLAY_VER(display) >= 11 && !display->platform.dg2)
> > > > +       if (intel_display_wa(display, 22014263786))
> > > >                 intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
> > > >                              0, DPFC_CHICKEN_FORCE_SLB_INVALIDATION);
> > > 
> > 
> 

Reply via email to