[PATCH] drm/xe/xe2lpm: Add Wa_15015404425
Upadhyay, Tejas
tejas.upadhyay at intel.com
Wed May 29 12:39:59 UTC 2024
> -----Original Message-----
> From: Jani Nikula <jani.nikula at linux.intel.com>
> Sent: Wednesday, May 29, 2024 1:06 PM
> To: Upadhyay, Tejas <tejas.upadhyay at intel.com>; intel-
> xe at lists.freedesktop.org
> Cc: Upadhyay, Tejas <tejas.upadhyay at intel.com>
> Subject: Re: [PATCH] drm/xe/xe2lpm: Add Wa_15015404425
>
> On Fri, 24 May 2024, Tejas Upadhyay <tejas.upadhyay at intel.com> wrote:
> > Wa_15015404425 applies to xe2_lpm all steppings
> >
> > Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
> > ---
> > drivers/gpu/drm/xe/regs/xe_regs.h | 1 +
> > drivers/gpu/drm/xe/xe_mmio.c | 18 ++++++++++++++++++
> > 2 files changed, 19 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/xe/regs/xe_regs.h
> > b/drivers/gpu/drm/xe/regs/xe_regs.h
> > index 722fb6dbb72e..07c8a23bd7c2 100644
> > --- a/drivers/gpu/drm/xe/regs/xe_regs.h
> > +++ b/drivers/gpu/drm/xe/regs/xe_regs.h
> > @@ -42,6 +42,7 @@
> > #define STOLEN_RESERVED XE_REG(0x1082c0)
> > #define WOPCM_SIZE_MASK REG_GENMASK64(9,
> 7)
> >
> > +#define MEDIA_DUMMY_REG
> XE_REG(0x138000)
> > #define MTL_RP_STATE_CAP XE_REG(0x138000)
> >
> > #define MTL_GT_RPE_FREQUENCY XE_REG(0x13800c)
> > diff --git a/drivers/gpu/drm/xe/xe_mmio.c
> > b/drivers/gpu/drm/xe/xe_mmio.c index ff7a7cf99530..e1dc87078387
> 100644
> > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > @@ -450,6 +450,21 @@ int xe_mmio_init(struct xe_device *xe)
> > return devm_add_action_or_reset(xe->drm.dev, mmio_fini, xe); }
> >
> > +static void mmio_flush_pending_writes(struct xe_gt *gt) {
> > + struct xe_device *xe = gt_to_xe(gt);
> > +
> > + if (!(xe->info.platform == XE_LUNARLAKE))
> > + return;
> > +
> > + if (xe_gt_is_media_type(gt) && MEDIA_VER(xe) == 20) {
> > + int itr = 4;
> > + /* 4 dummy writes */
> > + while (itr--)
>
> If you need to do something N times, the paradigm loop is:
>
> for (i = 0; i < N; i++)
>
> and nobody has to pause to consider the loop condition.
Thanks for comment. However I don't understand whats adding pause here, for() is also adding similar pause and variable.
Thanks,
Tejas
>
> BR,
> Jani.
>
> > + xe_mmio_write32(gt, MEDIA_DUMMY_REG, 0);
> > + }
> > +}
> > +
> > u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg) {
> > struct xe_tile *tile = gt_to_tile(gt); @@ -479,6 +494,9 @@ u32
> > xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > struct xe_tile *tile = gt_to_tile(gt);
> > u32 addr = xe_mmio_adjusted_addr(gt, reg.addr);
> >
> > + /* Wa_15015404425 */
> > + mmio_flush_pending_writes(gt);
> > +
> > return readl((reg.ext ? tile->mmio_ext.regs : tile->mmio.regs) +
> > addr); }
>
> --
> Jani Nikula, Intel
More information about the Intel-xe
mailing list