[PATCH 03/12] drm/xe: Pass flags directly to emit_flush_imm_ggtt

Matt Roper matthew.d.roper at intel.com
Thu Feb 27 23:47:35 UTC 2025


On Fri, Feb 21, 2025 at 10:17:22AM +0000, Tvrtko Ursulin wrote:
> This is more readable than the nameless booleans and will also come handy
> later.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>

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

> ---
>  drivers/gpu/drm/xe/xe_ring_ops.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
> index a2d1fb8f0adf..21520ff97599 100644
> --- a/drivers/gpu/drm/xe/xe_ring_ops.c
> +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
> @@ -90,11 +90,10 @@ static int emit_flush_dw(u32 *dw, int i)
>  	return i;
>  }
>  
> -static int emit_flush_imm_ggtt(u32 addr, u32 value, bool invalidate_tlb,
> -			       u32 *dw, int i)
> +static int emit_flush_imm_ggtt(u32 addr, u32 value, u32 flags, u32 *dw, int i)
>  {
>  	dw[i++] = MI_FLUSH_DW | MI_FLUSH_DW_OP_STOREDW | MI_FLUSH_IMM_DW |
> -		(invalidate_tlb ? MI_INVALIDATE_TLB : 0);
> +		  flags;
>  	dw[i++] = addr | MI_FLUSH_DW_USE_GTT;
>  	dw[i++] = 0;
>  	dw[i++] = value;
> @@ -250,7 +249,7 @@ static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc
>  	if (job->ring_ops_flush_tlb) {
>  		dw[i++] = preparser_disable(true);
>  		i = emit_flush_imm_ggtt(xe_lrc_start_seqno_ggtt_addr(lrc),
> -					seqno, true, dw, i);
> +					seqno, MI_INVALIDATE_TLB, dw, i);
>  		dw[i++] = preparser_disable(false);
>  	} else {
>  		i = emit_store_imm_ggtt(xe_lrc_start_seqno_ggtt_addr(lrc),
> @@ -266,7 +265,7 @@ static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc
>  						dw, i);
>  	}
>  
> -	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
> +	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, 0, dw, i);
>  
>  	i = emit_user_interrupt(dw, i);
>  
> @@ -312,7 +311,7 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>  
>  	if (job->ring_ops_flush_tlb)
>  		i = emit_flush_imm_ggtt(xe_lrc_start_seqno_ggtt_addr(lrc),
> -					seqno, true, dw, i);
> +					seqno, MI_INVALIDATE_TLB, dw, i);
>  
>  	dw[i++] = preparser_disable(false);
>  
> @@ -329,7 +328,7 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>  						dw, i);
>  	}
>  
> -	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, false, dw, i);
> +	i = emit_flush_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, 0, dw, i);
>  
>  	i = emit_user_interrupt(dw, i);
>  
> -- 
> 2.48.0
> 

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


More information about the Intel-xe mailing list