[Intel-xe] [PATCH] drm/xe/pvc: Don't try to invalidate AuxCCS TLB

Kalvala, Haridhar haridhar.kalvala at intel.com
Thu May 25 13:16:03 UTC 2023


On 5/25/2023 12:56 AM, Matt Roper wrote:
> Generally !has_flatccs implies that a platform has AuxCCS compression
> and thus needs to invalidate the AuxCCS TLB.  However PVC is a special
> case because it has no compression of either type (FlatCCS or AuxCCS)
> so we should avoid writing to non-existent AuxCCS registers.

Hi Matt,

Looks good to me.

Just a query, if their is no compression support, do we need to remove flag

".has_flat_ccs" from PVC description structure.

Regards,

Haridhar Kalvala

> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_ring_ops.c | 16 ++++++++++++++--
>   1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
> index 74c1b5dfbaee..d2fa0b4c8bcc 100644
> --- a/drivers/gpu/drm/xe/xe_ring_ops.c
> +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
> @@ -190,6 +190,18 @@ static void __emit_job_gen12_copy(struct xe_sched_job *job, struct xe_lrc *lrc,
>   	xe_lrc_write_ring(lrc, dw, i * sizeof(*dw));
>   }
>   
> +static bool has_aux_ccs(struct xe_device *xe)
> +{
> +	/*
> +	 * PVC is a special case that has no compression of either type
> +	 * (FlatCCS or AuxCCS).
> +	 */
> +	if (xe->info.platform == XE_PVC)
> +		return false;
> +
> +	return !xe->info.has_flat_ccs;
> +}
> +
>   static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>   				   u64 batch_addr, u32 seqno)
>   {
> @@ -202,7 +214,7 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>   	dw[i++] = preparser_disable(true);
>   
>   	/* hsdes: 1809175790 */
> -	if (!xe->info.has_flat_ccs) {
> +	if (has_aux_ccs(xe)) {
>   		if (decode)
>   			i = emit_aux_table_inv(gt, VD0_AUX_NV, dw, i);
>   		else
> @@ -248,7 +260,7 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
>   	i = emit_pipe_invalidate(mask_flags, dw, i);
>   
>   	/* hsdes: 1809175790 */
> -	if (!xe->info.has_flat_ccs)
> +	if (has_aux_ccs(xe))
>   		i = emit_aux_table_inv(gt, GFX_CCS_AUX_NV, dw, i);
>   
>   	dw[i++] = preparser_disable(false);

-- 
Regards,
Haridhar Kalvala



More information about the Intel-xe mailing list