[Intel-xe] [PATCH 1/4] drm/xe: Adjust mocs field mask definitions

Matt Roper matthew.d.roper at intel.com
Fri Sep 29 15:57:18 UTC 2023


On Thu, Sep 28, 2023 at 09:43:48PM -0700, Lucas De Marchi wrote:
> From: Haridhar Kalvala <haridhar.kalvala at intel.com>
> 
> Instead of using xe_mocs_index_to_value(), simply define the bitmask
> with the shift left applied. This will make it easier to adapt to new
> platforms that simply use the index.
> 
> This also fixes PVC bug in emit_clear_link_copy() where the MOCS was
> getting shifted both by PVC_MS_MOCS_INDEX_MASK definition and by the
> xe_moc_index_to_value function.
> 
> Bspec: 57562, 57566, 57565

None of these Xe2 bspec pages are correct for this patch which only
touches the Xe1 code.  Although there are separate Xe1 equivalent pages
for each instruction, those don't seem terribly useful as a reference
for this patch either since the fields on those pages just match the old
ones from the code.  In my mind the bspec page that would actually be
useful as a reference for the changes being made here is 44509 since
that explains what the hardware expects to receive in the 7-bit "MOCS"
fields of various Xe1 instructions.

Aside from the bspec references here, the rest of the patch looks fine,
so:

        Reviewed-by: Matt Roper <matthew.d.roper at intel.com>

with that updated.


Matt

> Cc: Matt Roper <matthew.d.roper at intel.com>
> Signed-off-by: Haridhar Kalvala <haridhar.kalvala at intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> ---
>  drivers/gpu/drm/xe/regs/xe_gpu_commands.h |  4 ++--
>  drivers/gpu/drm/xe/xe_migrate.c           |  6 +++---
>  drivers/gpu/drm/xe/xe_mocs.h              | 12 ------------
>  3 files changed, 5 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/regs/xe_gpu_commands.h b/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> index 12120dd37aa2..1ee8d46d92d9 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> @@ -44,7 +44,7 @@
>  #define   DST_ACCESS_TYPE_SHIFT		20
>  #define   CCS_SIZE_MASK			0x3FF
>  #define   CCS_SIZE_SHIFT		8
> -#define   XY_CTRL_SURF_MOCS_MASK	GENMASK(31, 25)
> +#define   XY_CTRL_SURF_MOCS_MASK	GENMASK(31, 26)
>  #define   NUM_CCS_BYTES_PER_BLOCK	256
>  #define   NUM_BYTES_PER_CCS_BYTE	256
>  #define   NUM_CCS_BLKS_PER_XFER		1024
> @@ -52,7 +52,7 @@
>  #define XY_FAST_COLOR_BLT_CMD		(2 << 29 | 0x44 << 22)
>  #define   XY_FAST_COLOR_BLT_DEPTH_32	(2 << 19)
>  #define   XY_FAST_COLOR_BLT_DW		16
> -#define   XY_FAST_COLOR_BLT_MOCS_MASK	GENMASK(27, 21)
> +#define   XY_FAST_COLOR_BLT_MOCS_MASK	GENMASK(27, 22)
>  #define   XY_FAST_COLOR_BLT_MEM_TYPE_SHIFT 31
>  
>  #define XY_FAST_COPY_BLT_CMD		(2 << 29 | 0x42 << 22)
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index cd2e00008aab..1d1e4076b29d 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -519,7 +519,7 @@ static void emit_copy_ccs(struct xe_gt *gt, struct xe_bb *bb,
>  {
>  	u32 *cs = bb->cs + bb->len;
>  	u32 num_ccs_blks;
> -	u32 mocs = xe_mocs_index_to_value(gt->mocs.uc_index);
> +	u32 mocs = gt->mocs.uc_index;
>  
>  	num_ccs_blks = DIV_ROUND_UP(xe_device_ccs_bytes(gt_to_xe(gt), size),
>  				    NUM_CCS_BYTES_PER_BLOCK);
> @@ -806,7 +806,7 @@ static void emit_clear_link_copy(struct xe_gt *gt, struct xe_bb *bb, u64 src_ofs
>  				 u32 size, u32 pitch)
>  {
>  	u32 *cs = bb->cs + bb->len;
> -	u32 mocs = xe_mocs_index_to_value(gt->mocs.uc_index);
> +	u32 mocs = gt->mocs.uc_index;
>  	u32 len = PVC_MEM_SET_CMD_LEN_DW;
>  
>  	*cs++ = PVC_MEM_SET_CMD | PVC_MS_MATRIX | (len - 2);
> @@ -828,7 +828,7 @@ static void emit_clear_main_copy(struct xe_gt *gt, struct xe_bb *bb,
>  	struct xe_device *xe = gt_to_xe(gt);
>  	u32 *cs = bb->cs + bb->len;
>  	u32 len = XY_FAST_COLOR_BLT_DW;
> -	u32 mocs = xe_mocs_index_to_value(gt->mocs.uc_index);
> +	u32 mocs = gt->mocs.uc_index;
>  
>  	if (GRAPHICS_VERx100(xe) < 1250)
>  		len = 11;
> diff --git a/drivers/gpu/drm/xe/xe_mocs.h b/drivers/gpu/drm/xe/xe_mocs.h
> index d0f1ec4b0336..053754c5a94e 100644
> --- a/drivers/gpu/drm/xe/xe_mocs.h
> +++ b/drivers/gpu/drm/xe/xe_mocs.h
> @@ -14,16 +14,4 @@ struct xe_gt;
>  void xe_mocs_init_early(struct xe_gt *gt);
>  void xe_mocs_init(struct xe_gt *gt);
>  
> -/**
> - * xe_mocs_index_to_value - Translate mocs index to the mocs value exected by
> - * most blitter commands.
> - * @mocs_index: index into the mocs tables
> - *
> - * Return: The corresponding mocs value to be programmed.
> - */
> -static inline u32 xe_mocs_index_to_value(u32 mocs_index)
> -{
> -	return mocs_index << 1;
> -}
> -
>  #endif
> -- 
> 2.40.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation


More information about the Intel-xe mailing list