[Intel-gfx] [PATCH] drm/i915: Add missed MI_BATCH_BUFFER_END in null state batch buffer.
Mika Kuoppala
mika.kuoppala at linux.intel.com
Wed Oct 29 13:10:45 CET 2014
Zhi Wang <zhi.a.wang at intel.com> writes:
> Currently MI_BATCH_BUFFER_END is missed in null state batch buffer.
> This fix is trying to append the missed instruction at the end of
> null state batch buffer gem bo after it was initialized and filled
> with null state commands.
>
> This issue was exposed under full GPU virtualization(Intel GVT-g) environment.
>
> Signed-off-by: Zhi Wang <zhi.a.wang at intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem_render_state.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c
> index 98dcd94..3495b4b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_render_state.c
> +++ b/drivers/gpu/drm/i915/i915_gem_render_state.c
> @@ -54,7 +54,8 @@ static int render_state_init(struct render_state *so, struct drm_device *dev)
> if (so->rodata == NULL)
> return 0;
>
> - if (so->rodata->batch_items * 4 > 4096)
> + /* Leave one dword for MI_BATCH_BUFFER_END. */
> + if ((so->rodata->batch_items * 4 + 1) > 4096)
> return -EINVAL;
>
> so->obj = i915_gem_alloc_object(dev, 4096);
> @@ -108,6 +109,7 @@ static int render_state_setup(struct render_state *so)
>
> d[i++] = s;
> }
> + d[i] = MI_BATCH_BUFFER_END;
> kunmap(page);
>
The states themselves have the end explicitly. In i-g-t:
intel-gpu-tools/tools/null_state_gen (master)$ grep BUFFER_END *.c
intel_renderstate_gen6.c: OUT_BATCH(MI_BATCH_BUFFER_END);
intel_renderstate_gen7.c: OUT_BATCH(MI_BATCH_BUFFER_END);
intel_renderstate_gen8.c: OUT_BATCH(MI_BATCH_BUFFER_END);
intel_renderstate_gen9.c: OUT_BATCH(MI_BATCH_BUFFER_END);
Please check that your state generator emits it correctly.
-Mika
> ret = i915_gem_object_set_to_gtt_domain(so->obj, false);
> --
> 1.8.3.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list