[Intel-gfx] [PATCH] drm/i915/execlists: Select arb on/off around batches based on preemption

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Fri Dec 20 11:26:45 UTC 2019


On 13/12/2019 15:13, Chris Wilson wrote:
> Decide whether or not we need to disable arbitration within user batches
> based on our intel_engine_has_preemption() flag.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
>   drivers/gpu/drm/i915/gt/intel_lrc.c | 17 +++++++++--------
>   1 file changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 929f6bae4eba..983e0e6e909b 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -3263,9 +3263,9 @@ static void execlists_reset_finish(struct intel_engine_cs *engine)
>   		  atomic_read(&execlists->tasklet.count));
>   }
>   
> -static int gen8_emit_bb_start(struct i915_request *rq,
> -			      u64 offset, u32 len,
> -			      const unsigned int flags)
> +static int gen8_emit_bb_start_noarb(struct i915_request *rq,
> +				    u64 offset, u32 len,
> +				    const unsigned int flags)
>   {
>   	u32 *cs;
>   
> @@ -3299,7 +3299,7 @@ static int gen8_emit_bb_start(struct i915_request *rq,
>   	return 0;
>   }
>   
> -static int gen9_emit_bb_start(struct i915_request *rq,
> +static int gen8_emit_bb_start(struct i915_request *rq,
>   			      u64 offset, u32 len,
>   			      const unsigned int flags)
>   {
> @@ -3774,6 +3774,11 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
>   
>   	if (INTEL_GEN(engine->i915) >= 12)
>   		engine->flags |= I915_ENGINE_HAS_RELATIVE_MMIO;
> +
> +	if (intel_engine_has_preemption(engine))
> +		engine->emit_bb_start = gen8_emit_bb_start;
> +	else
> +		engine->emit_bb_start = gen8_emit_bb_start_noarb;
>   }
>   
>   static void execlists_shutdown(struct intel_engine_cs *engine)
> @@ -3827,10 +3832,6 @@ logical_ring_default_vfuncs(struct intel_engine_cs *engine)
>   		 * until a more refined solution exists.
>   		 */
>   	}
> -	if (IS_GEN(engine->i915, 8))
> -		engine->emit_bb_start = gen8_emit_bb_start;
> -	else
> -		engine->emit_bb_start = gen9_emit_bb_start;
>   }
>   
>   static inline void
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko


More information about the Intel-gfx mailing list