[Intel-gfx] [PATCH] drm/i915: Do not end i915 batch buffers prematurely

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Thu Oct 17 21:42:27 UTC 2019



On 10/17/19 12:37 PM, Stuart Summers wrote:
> During engine initialization in i915 load, the batch buffers
> being used to set up the initial context are being prematurely
> ended. In most scenarios, this does not cause a problem, but

That's not a batch that we add the BBEND to, that's the context itself.

> in the rare event the engine expects the context to be added
> without an explicit MI_BATCH_BUFFER_END instruction, do not
> insert this instruction prematurely.
> 

We only add the BBEND when there is no state to restore, so why would 
the engine expect to execute a bunch of no-ops?

Daniele

> Signed-off-by: Stuart Summers <stuart.summers at intel.com>
> ---
>   drivers/gpu/drm/i915/gt/intel_lrc.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index e9fe9f79cedd..ec067c29ac65 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -3805,7 +3805,7 @@ populate_lr_context(struct intel_context *ce,
>   	/* The second page of the context object contains some fields which must
>   	 * be set up prior to the first execution. */
>   	regs = vaddr + LRC_STATE_PN * PAGE_SIZE;
> -	execlists_init_reg_state(regs, ce, engine, ring, inhibit);
> +	execlists_init_reg_state(regs, ce, engine, ring, false);
>   	if (inhibit)
>   		regs[CTX_CONTEXT_CONTROL] |=
>   			_MASKED_BIT_ENABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT);
> 


More information about the Intel-gfx mailing list