[Intel-xe] [PATCH v2 01/12] drm/xe/rtp: Add match helper for gslice fused off

Matt Roper matthew.d.roper at intel.com
Fri Mar 10 23:43:03 UTC 2023


On Fri, Mar 10, 2023 at 02:15:38PM -0800, Lucas De Marchi wrote:
> Add match helper to detect when the first gslice is fused off, as needed
> by future workarounds.
> 
> v2:
>   - Add warning if called on a platform without geometry pipeline
>     (Matt Roper)
>   - Hardcode 4 as the number of gslices, which matches all the currently
>     supported platforms. PVC doesn't have geometry pipeline and
>     shouldn't use this function (Matt Roper)
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>

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

> ---
>  drivers/gpu/drm/xe/xe_rtp.c | 16 ++++++++++++++++
>  drivers/gpu/drm/xe/xe_rtp.h | 11 +++++++++++
>  2 files changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c
> index 0d2f51bb06e8..cb9dd894547d 100644
> --- a/drivers/gpu/drm/xe/xe_rtp.c
> +++ b/drivers/gpu/drm/xe/xe_rtp.c
> @@ -8,6 +8,7 @@
>  #include <drm/xe_drm.h>
>  
>  #include "xe_gt.h"
> +#include "xe_gt_topology.h"
>  #include "xe_macros.h"
>  #include "xe_reg_sr.h"
>  
> @@ -170,3 +171,18 @@ bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt,
>  	return render_compute_mask &&
>  		hwe->engine_id == __ffs(render_compute_mask);
>  }
> +
> +bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt,
> +					 const struct xe_hw_engine *hwe)
> +{
> +	unsigned int dss_per_gslice = 4;
> +	unsigned int dss;
> +
> +	if (drm_WARN(&gt_to_xe(gt)->drm, !gt->fuse_topo.g_dss_mask,
> +		     "Checking gslice for platform without geometry pipeline\n"))
> +		return false;
> +
> +	dss = xe_dss_mask_group_ffs(gt->fuse_topo.g_dss_mask, 0, 0);
> +
> +	return dss >= dss_per_gslice;
> +}
> diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h
> index 433f0cbff57f..4140ef507fa0 100644
> --- a/drivers/gpu/drm/xe/xe_rtp.h
> +++ b/drivers/gpu/drm/xe/xe_rtp.h
> @@ -427,4 +427,15 @@ bool xe_rtp_match_even_instance(const struct xe_gt *gt,
>  bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt,
>  					  const struct xe_hw_engine *hwe);
>  
> +/*
> + * xe_rtp_match_first_gslice_fused_off - Match when first gslice is fused off
> + *
> + * @gt: GT structure
> + * @hwe: Engine instance
> + *
> + * Returns: true if first gslice is fused off, false otherwise.
> + */
> +bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt,
> +					 const struct xe_hw_engine *hwe);
> +
>  #endif
> -- 
> 2.39.0
> 

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


More information about the Intel-xe mailing list