[igt-dev] [PATCH i-g-t v8 08/17] lib/intel_batchbuffer: Reacquire offset for reloc allocator in reset path
Manszewski, Christoph
christoph.manszewski at intel.com
Fri Apr 28 08:44:53 UTC 2023
On 28.04.2023 08:22, Zbigniew Kempczyński wrote:
> On reset path we recreate bo for batch (to avoid stalls) so we should
> reacquire the offset too. At the moment simple allocator will return
> same offset (so unfortunately we'll stall), but for reloc allocator
> we'll get new one (so we avoid stall).
>
> I've noticed this is missing during xe_intel_bb test, where on reloc
> I noticed unexpected result (direct consequence of using same offset
> which pointed to old batch, not new one).
>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Reviewed-by: Christoph Manszewski <christoph.manszewski at intel.com>
> ---
> lib/intel_batchbuffer.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 7dbd6dd582..99b0b61585 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -1280,8 +1280,9 @@ void intel_bb_reset(struct intel_bb *ibb, bool purge_objects_cache)
> gem_close(ibb->fd, ibb->handle);
> ibb->handle = gem_create(ibb->fd, ibb->size);
>
> - /* Keep address for bb in reloc mode and RANDOM allocator */
> - if (ibb->allocator_type == INTEL_ALLOCATOR_SIMPLE)
> + /* Reacquire offset for RELOC and SIMPLE */
> + if (ibb->allocator_type == INTEL_ALLOCATOR_SIMPLE ||
> + ibb->allocator_type == INTEL_ALLOCATOR_RELOC)
> ibb->batch_offset = __intel_bb_get_offset(ibb,
> ibb->handle,
> ibb->size,
More information about the igt-dev
mailing list