[PATCH] drm/xe: Write all slices if its mcr register

Upadhyay, Tejas tejas.upadhyay at intel.com
Tue Aug 6 09:14:15 UTC 2024



> -----Original Message-----
> From: Roper, Matthew D <matthew.d.roper at intel.com>
> Sent: Thursday, August 1, 2024 1:52 AM
> To: Upadhyay, Tejas <tejas.upadhyay at intel.com>
> Cc: intel-xe at lists.freedesktop.org
> Subject: Re: [PATCH] drm/xe: Write all slices if its mcr register
> 
> On Wed, Jul 31, 2024 at 03:01:52PM +0530, Tejas Upadhyay wrote:
> > Register GAMREQSTRM_CTRL should be considered mcr register which
> > should write to all slices as per documentation.
> >
> > Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
> 
> Bspec: 71185
> Fixes: 01570b446939 ("drm/xe/bmg: implement Wa_16023588340")
> Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
> 
> > ---
> >  drivers/gpu/drm/xe/regs/xe_gt_regs.h | 2 +-
> >  drivers/gpu/drm/xe/xe_gt.c           | 8 ++++----
> >  2 files changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> > b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> > index 3b87f95f9ecf..b131e3171899 100644
> > --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> > +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> > @@ -80,7 +80,7 @@
> >  #define   LE_CACHEABILITY_MASK			REG_GENMASK(1, 0)
> >  #define   LE_CACHEABILITY(value)
> 	REG_FIELD_PREP(LE_CACHEABILITY_MASK, value)
> >
> > -#define XE2_GAMREQSTRM_CTRL			XE_REG(0x4194)
> > +#define XE2_GAMREQSTRM_CTRL
> 	XE_REG_MCR(0x4194)
> >  #define   CG_DIS_CNTLBUS			REG_BIT(6)
> >
> >  #define CCS_AUX_INV				XE_REG(0x4208)
> > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> > index 58895ed22f6e..c6296dc8897f 100644
> > --- a/drivers/gpu/drm/xe/xe_gt.c
> > +++ b/drivers/gpu/drm/xe/xe_gt.c
> > @@ -110,9 +110,9 @@ static void xe_gt_enable_host_l2_vram(struct xe_gt
> > *gt)
> >
> >  	if (!xe_gt_is_media_type(gt)) {
> >  		xe_mmio_write32(gt, SCRATCH1LPFC,
> EN_L3_RW_CCS_CACHE_FLUSH);
> > -		reg = xe_mmio_read32(gt, XE2_GAMREQSTRM_CTRL);
> > +		reg = xe_gt_mcr_unicast_read_any(gt,
> XE2_GAMREQSTRM_CTRL);

This is showing regression, mcr init is little later after this call. Should we read first slice default using  = xe_mmio_read32() or we should shuffle order of mcr_init and xe_gt_enable_host_l2_vram(). Any suggestion?

Thanks,
Tejas
> >  		reg |= CG_DIS_CNTLBUS;
> > -		xe_mmio_write32(gt, XE2_GAMREQSTRM_CTRL, reg);
> > +		xe_gt_mcr_multicast_write(gt, XE2_GAMREQSTRM_CTRL,
> reg);
> >  	}
> >
> >  	xe_gt_mcr_multicast_write(gt, XEHPC_L3CLOS_MASK(3), 0x3); @@ -
> 134,9
> > +134,9 @@ static void xe_gt_disable_host_l2_vram(struct xe_gt *gt)
> >  	if (WARN_ON(err))
> >  		return;
> >
> > -	reg = xe_mmio_read32(gt, XE2_GAMREQSTRM_CTRL);
> > +	reg = xe_gt_mcr_unicast_read_any(gt, XE2_GAMREQSTRM_CTRL);
> >  	reg &= ~CG_DIS_CNTLBUS;
> > -	xe_mmio_write32(gt, XE2_GAMREQSTRM_CTRL, reg);
> > +	xe_gt_mcr_multicast_write(gt, XE2_GAMREQSTRM_CTRL, reg);
> >
> >  	xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);  }
> > --
> > 2.25.1
> >
> 
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation


More information about the Intel-xe mailing list