[Intel-gfx] [PATCH V5 1/5] drm/i915/gt: Add support of mocs propagation

Siddiqui, Ayaz A ayaz.siddiqui at intel.com
Thu Sep 16 07:13:12 UTC 2021



> -----Original Message-----
> From: Roper, Matthew D <matthew.d.roper at intel.com>
> Sent: Wednesday, September 15, 2021 9:09 AM
> To: Siddiqui, Ayaz A <ayaz.siddiqui at intel.com>
> Cc: intel-gfx at lists.freedesktop.org; Tang, CQ <cq.tang at intel.com>
> Subject: Re: [PATCH V5 1/5] drm/i915/gt: Add support of mocs propagation
> 
> On Fri, Sep 03, 2021 at 02:51:49PM +0530, Ayaz A Siddiqui wrote:
> > Now there are lots of Command and registers that require mocs index
> > programming.
> > So propagating mocs_index from mocs to gt so that it can be used
> > directly without having platform-specific checks.
> >
> > V2:
> > Changed 'i915_mocs_index_gt' to anonymous structure.
> >
> > Cc: CQ Tang<cq.tang at intel.com>
> > Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
> > Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui at intel.com>
> > ---
> >  drivers/gpu/drm/i915/gt/intel_gt.c       |  2 ++
> >  drivers/gpu/drm/i915/gt/intel_gt_types.h |  4 ++++
> >  drivers/gpu/drm/i915/gt/intel_mocs.c     | 13 +++++++++++++
> >  drivers/gpu/drm/i915/gt/intel_mocs.h     |  1 +
> >  4 files changed, 20 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c
> > b/drivers/gpu/drm/i915/gt/intel_gt.c
> > index 62d40c9866427..2aeaae036a6f8 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> > @@ -682,6 +682,8 @@ int intel_gt_init(struct intel_gt *gt)
> >  		goto err_pm;
> >  	}
> >
> > +	set_mocs_index(gt);
> > +
> >  	err = intel_engines_init(gt);
> >  	if (err)
> >  		goto err_engines;
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h
> > b/drivers/gpu/drm/i915/gt/intel_gt_types.h
> > index a81e21bf1bd1a..6fdcde64c1800 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h
> > @@ -192,6 +192,10 @@ struct intel_gt {
> >
> >  		unsigned long mslice_mask;
> >  	} info;
> > +
> > +	struct {
> > +		u8 uc_index;
> > +	} mocs;
> >  };
> >
> >  enum intel_gt_scratch_field {
> > diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c
> > b/drivers/gpu/drm/i915/gt/intel_mocs.c
> > index 582c4423b95d6..7ccac15d9a331 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_mocs.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
> > @@ -22,6 +22,7 @@ struct drm_i915_mocs_table {
> >  	unsigned int size;
> >  	unsigned int n_entries;
> >  	const struct drm_i915_mocs_entry *table;
> > +	u8 uc_index;
> >  };
> >
> >  /* Defines for the tables (XXX_MOCS_0 - XXX_MOCS_63) */ @@ -340,14
> > +341,18 @@ static unsigned int get_mocs_settings(const struct
> > drm_i915_private *i915,  {
> >  	unsigned int flags;
> >
> > +	memset(table, 0, sizeof(struct drm_i915_mocs_table));
> > +
> >  	if (IS_DG1(i915)) {
> >  		table->size = ARRAY_SIZE(dg1_mocs_table);
> >  		table->table = dg1_mocs_table;
> > +		table->uc_index = 1;
> >  		table->n_entries = GEN9_NUM_MOCS_ENTRIES;
> >  	} else if (GRAPHICS_VER(i915) >= 12) {
> >  		table->size  = ARRAY_SIZE(tgl_mocs_table);
> >  		table->table = tgl_mocs_table;
> >  		table->n_entries = GEN9_NUM_MOCS_ENTRIES;
> > +		table->uc_index = 3;
> >  	} else if (GRAPHICS_VER(i915) == 11) {
> >  		table->size  = ARRAY_SIZE(icl_mocs_table);
> >  		table->table = icl_mocs_table;
> > @@ -504,6 +509,14 @@ static u32 global_mocs_offset(void)
> >  	return i915_mmio_reg_offset(GEN12_GLOBAL_MOCS(0));
> >  }
> >
> > +void set_mocs_index(struct intel_gt *gt)
> 
> Hi Ayaz,
> 
> I overlooked it when doing my review before, but for non-static functions like
> this we should have a proper function name prefix
> (intel_* in this case).
> 
> Would you mind writing a small patch to rename this?
> 
> Thanks.
> 
> 
> Matt
HI Matt,
 I have send a patch with above change in ML.
 Do we have some guideline link?
 It will be good to be
aware with all the guide to avoid such mistake in future.
-Ayaz
 
> 
> > +{
> > +	struct drm_i915_mocs_table table;
> > +
> > +	get_mocs_settings(gt->i915, &table);
> > +	gt->mocs.uc_index = table.uc_index;
> > +}
> > +
> >  void intel_mocs_init(struct intel_gt *gt)  {
> >  	struct drm_i915_mocs_table table;
> > diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.h
> > b/drivers/gpu/drm/i915/gt/intel_mocs.h
> > index d83274f5163bd..8a09d64b115f7 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_mocs.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_mocs.h
> > @@ -36,5 +36,6 @@ struct intel_gt;
> >
> >  void intel_mocs_init(struct intel_gt *gt);  void
> > intel_mocs_init_engine(struct intel_engine_cs *engine);
> > +void set_mocs_index(struct intel_gt *gt);
> >
> >  #endif
> > --
> > 2.26.2
> >
> 
> --
> Matt Roper
> Graphics Software Engineer
> VTT-OSGC Platform Enablement
> Intel Corporation
> (916) 356-2795


More information about the Intel-gfx mailing list