[PATCH] drm/xe/xe3: Extend wa_15015404425 for xe3
Matt Atwood
matthew.s.atwood at intel.com
Fri Feb 7 17:03:23 UTC 2025
On Fri, Feb 07, 2025 at 08:24:06AM -0800, Matt Roper wrote:
> On Thu, Feb 06, 2025 at 08:56:32PM -0800, Upadhyay, Tejas wrote:
> >
> >
> > > -----Original Message-----
> > > From: De Marchi, Lucas <lucas.demarchi at intel.com>
> > > Sent: Friday, February 7, 2025 5:03 AM
> > > To: Atwood, Matthew S <matthew.s.atwood at intel.com>
> > > Cc: Roper, Matthew D <matthew.d.roper at intel.com>; intel-
> > > xe at lists.freedesktop.org; Upadhyay, Tejas <tejas.upadhyay at intel.com>
> > > Subject: Re: [PATCH] drm/xe/xe3: Extend wa_15015404425 for xe3
> > >
> > > On Thu, Feb 06, 2025 at 09:12:49AM -0800, Matt Atwood wrote:
> > > >On Thu, Jan 30, 2025 at 09:30:30AM -0800, Matt Roper wrote:
> > > >> On Tue, Jan 28, 2025 at 04:55:51PM -0800, Matt Atwood wrote:
> > > >> > From: Tejas Upadhyay <tejas.upadhyay at intel.com>
> > > >> >
> > > >> > wa_15015404425 applies to xe3 A0 step as well.
> > > >>
> > > >> We really need a better commit message explaining how this workaround
> > > >> is different from our usual ones and why it needs to be handled in a
> > > >> special way that's different from all of our other workarounds,
> > > >> especially since someone who just quickly skims the workaround
> > > >> database without digging into the details is going to incorrectly
> > > >> think this just applies to Xe2 media and isn't relevant to PTL.
> > > >Ack.
> > > >>
> > > >> I was kind of hoping we'd add a more well-defined infrastructure for
> > > >> handling device / SoC workarounds. Adding quick hacks like this is
> > > >> going to get out of hand quickly if more of these start showing up.
> > > >Any particular ideas here?
> > >
> > > at the very least, use XE_WA(). You may need to extend the matches it knows
> > > about to implement what you need here.
> >
> > As far as I remember, init of wa_oob was little late so we could not use XE_WA. I am not sure if init wa_oob moved elsewhere and we are good here!
> >
> > I was seeing below assert and thus we decided to go with what we have here,
> >
> > It asserts,
> > [ 778.229096] xe 0000:00:02.0: [drm] [drm] Assertion `(gt)->wa_active.oob_initialized` failed!
> > platform: LUNARLAKE subplatform: 1
> > graphics: (null) 0.00 step **
> > media: (null) 0.00 step **
> > tile: 0 VRAM 0 B
> > GT: 0 type 0
> > [ 778.229121] WARNING: CPU: 1 PID: 1567 at drivers/gpu/drm/xe/xe_mmio.c:133 mmio_flush_pending_writes+0x33d/0x350 [xe]
>
> You can't use XE_WA unmodified since it's currently GT-centric and
> relies on various stuff in the GT already being initialized, as you see
> above. However you can either extend it to also support device-level
> workarounds, or at least create a similar XE_DEVICE_WA() framework that
> works in a similar way. Device workarounds ultimately depend on the
> platform and an SoC stepping derived from the PCI revid, and that
> information is immediately available on probe without needing to bring
> up the GTs.
Ack.
>
>
> Matt
>
> >
> > Tejas
> > >
> > > Lucas De Marchi
> > >
> > > >+Lucas
> > > >>
> > > >>
> > > >> Matt
> > > >>
> > > >> >
> > > >> > v2: query based off SOC stepping
> > > >> >
> > > >> > Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
> > > >> > Signed-off-by: Matt Atwood <matthew.s.atwood at intel.com>
> > > >> > ---
> > > >> > drivers/gpu/drm/xe/xe_mmio.c | 13 +++++++------
> > > >> > drivers/gpu/drm/xe/xe_step.h | 2 ++
> > > >> > 2 files changed, 9 insertions(+), 6 deletions(-)
> > > >> >
> > > >> > diff --git a/drivers/gpu/drm/xe/xe_mmio.c
> > > >> > b/drivers/gpu/drm/xe/xe_mmio.c index d321a21aacf0..98d068ad33bb
> > > >> > 100644
> > > >> > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > >> > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > >> > @@ -150,14 +150,15 @@ int xe_mmio_init(struct xe_device *xe)
> > > >> > static void mmio_flush_pending_writes(struct xe_mmio *mmio) {
> > > >> > #define DUMMY_REG_OFFSET 0x130030
> > > >> > + struct xe_device *xe = tile_to_xe(mmio->tile);
> > > >> > int i;
> > > >> >
> > > >> > - if (mmio->tile->xe->info.platform != XE_LUNARLAKE)
> > > >> > - return;
> > > >> > -
> > > >> > - /* 4 dummy writes */
> > > >> > - for (i = 0; i < 4; i++)
> > > >> > - writel(0, mmio->regs + DUMMY_REG_OFFSET);
> > > >> > + if (xe->info.platform == XE_LUNARLAKE ||
> > > >> > + (xe->info.platform == XE_PANTHERLAKE &&
> > > >> > + xe->info.revid == PTL_SOC_STEP_A0))
> > > >> > + /* 4 dummy writes */
> > > >> > + for (i = 0; i < 4; i++)
> > > >> > + writel(0, mmio->regs + DUMMY_REG_OFFSET);
> > > >> > }
> > > >> >
> > > >> > u8 xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg) diff
> > > >> > --git a/drivers/gpu/drm/xe/xe_step.h b/drivers/gpu/drm/xe/xe_step.h
> > > >> > index 686cb59200c2..879486a818e9 100644
> > > >> > --- a/drivers/gpu/drm/xe/xe_step.h
> > > >> > +++ b/drivers/gpu/drm/xe/xe_step.h
> > > >> > @@ -20,4 +20,6 @@ static inline u32 xe_step_to_gmdid(enum xe_step
> > > >> > step) { return step - STEP_A0; }
> > > >> >
> > > >> > const char *xe_step_name(enum xe_step step);
> > > >> >
> > > >> > +#define PTL_SOC_STEP_A0 0x0
> > > >> > +
> > > >> > #endif
> > > >> > --
> > > >> > 2.45.0
> > > >> >
> > > >>
> > > >> --
> > > >> Matt Roper
> > > >> Graphics Software Engineer
> > > >> Linux GPU Platform Enablement
> > > >> Intel Corporation
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation
More information about the Intel-xe
mailing list