[Intel-gfx] [PATCH] drm/i915/gt: Wait for the wa batch to be pinned

Mika Kuoppala mika.kuoppala at linux.intel.com
Mon Mar 9 10:50:45 UTC 2020


Chris Wilson <chris at chris-wilson.co.uk> writes:

> Be sure to wait for the vma to be in place before we tell the GPU to
> execute from the wa batch. Since initialisation is mostly synchronous
> (or rather at some point during start up we will need to sync anyway),
> we can affort to do an explicit i915_vma_sync() during wa batch
> construction rather than check for a required await on every context
> switch. (We don't expect to change the wa bb at run time so paying the
> cost once up front seems preferrable.)
>
> Fixes: ee2413eeed76 ("drm/i915: Add mechanism to submit a context WA on ring submission")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>

Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>

> ---
>  drivers/gpu/drm/i915/gt/intel_ring_submission.c    | 4 ++++
>  drivers/gpu/drm/i915/gt/selftest_ring_submission.c | 6 ++++++
>  2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ring_submission.c b/drivers/gpu/drm/i915/gt/intel_ring_submission.c
> index 6881317a747e..1424582e4a9b 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ring_submission.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ring_submission.c
> @@ -2015,6 +2015,10 @@ static int gen7_ctx_switch_bb_init(struct intel_engine_cs *engine)
>  	if (err)
>  		goto err_private;
>  
> +	err = i915_vma_sync(vma);
> +	if (err)
> +		goto err_unpin;
> +
>  	err = gen7_ctx_switch_bb_setup(engine, vma);
>  	if (err)
>  		goto err_unpin;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_ring_submission.c b/drivers/gpu/drm/i915/gt/selftest_ring_submission.c
> index fcfddcd2a63d..9995faadd7e8 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_ring_submission.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_ring_submission.c
> @@ -29,6 +29,12 @@ static struct i915_vma *create_wally(struct intel_engine_cs *engine)
>  		return ERR_PTR(err);
>  	}
>  
> +	err = i915_vma_sync(vma);
> +	if (err) {
> +		i915_gem_object_put(obj);
> +		return ERR_PTR(err);
> +	}
> +
>  	cs = i915_gem_object_pin_map(obj, I915_MAP_WC);
>  	if (IS_ERR(cs)) {
>  		i915_gem_object_put(obj);
> -- 
> 2.20.1


More information about the Intel-gfx mailing list