[Intel-gfx] [PATCH v2 10/50] drm/i915/xehp: Define multicast register ranges

Souza, Jose jose.souza at intel.com
Mon Jul 19 18:19:28 UTC 2021


On Tue, 2021-07-13 at 20:15 -0700, Matt Roper wrote:
> Since we can't steer multicast register reads during ring-based
> workaround verification, we need to define the multicast ranges where
> failure to steer could potentially cause us to read back from a
> fused-off register instance.
> 
> As with gen12, we can ignore the multicast ranges that the bspec
> describes as 'SQIDI' since all instances of those registers will always
> be present and we'll always be able to read back a workaround value that
> was written with multicast.
> 

Reviewed-by: José Roberto de Souza <jose.souza at intel.com>

> Bspec: 66534
> Cc: José Roberto de Souza <jose.souza at intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_workarounds.c | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 72562c233ad2..3abe424ef9c9 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -2097,12 +2097,30 @@ static const struct mcr_range mcr_ranges_gen12[] = {
>  	{},
>  };
>  
> +static const struct mcr_range mcr_ranges_xehp[] = {
> +	{ .start =  0x4000, .end =  0x4aff },
> +	{ .start =  0x5200, .end =  0x52ff },
> +	{ .start =  0x5400, .end =  0x7fff },
> +	{ .start =  0x8140, .end =  0x815f },
> +	{ .start =  0x8c80, .end =  0x8dff },
> +	{ .start =  0x94d0, .end =  0x955f },
> +	{ .start =  0x9680, .end =  0x96ff },
> +	{ .start =  0xb000, .end =  0xb3ff },
> +	{ .start =  0xc800, .end =  0xcfff },
> +	{ .start =  0xd800, .end =  0xd8ff },
> +	{ .start =  0xdc00, .end =  0xffff },
> +	{ .start = 0x17000, .end = 0x17fff },
> +	{ .start = 0x24a00, .end = 0x24a7f },
> +};
> +
>  static bool mcr_range(struct drm_i915_private *i915, u32 offset)
>  {
>  	const struct mcr_range *mcr_ranges;
>  	int i;
>  
> -	if (GRAPHICS_VER(i915) >= 12)
> +	if (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 50))
> +		mcr_ranges = mcr_ranges_xehp;
> +	else if (GRAPHICS_VER(i915) >= 12)
>  		mcr_ranges = mcr_ranges_gen12;
>  	else if (GRAPHICS_VER(i915) >= 8)
>  		mcr_ranges = mcr_ranges_gen8;



More information about the Intel-gfx mailing list