[igt-dev] [PATCH i-g-t] tests/gem_ctx_shared: Release offset after use

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Tue Dec 20 15:57:54 UTC 2022


Changes in reloc allocator requires releasing offsets. Additionally
allocator provides consecutive offsets (gem_close() + put_offset())
allowing batches to be executed without stalls. As offsets quickly can
reach 32b ppgtt border adding 48B flag for objects is now necessary.

Fixes: https://gitlab.freedesktop.org/drm/intel/-/issues/7672

Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
---
 tests/i915/gem_ctx_shared.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
index 55d3d5a975..18d8cc013d 100644
--- a/tests/i915/gem_ctx_shared.c
+++ b/tests/i915/gem_ctx_shared.c
@@ -538,13 +538,13 @@ static void store_dword(int i915, uint64_t ahnd, const intel_ctx_t *ctx,
 	obj[2].handle = gem_create(i915, 4096);
 	if (ahnd) {
 		obj[0].offset = get_offset(ahnd, cork, cork_size, 0);
-		obj[0].flags |= EXEC_OBJECT_PINNED;
+		obj[0].flags |= EXEC_OBJECT_PINNED | EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
 		obj[1].offset = get_offset(ahnd, target, target_size, 0);
-		obj[1].flags |= EXEC_OBJECT_PINNED;
+		obj[1].flags |= EXEC_OBJECT_PINNED | EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
 		if (write_domain)
 			obj[1].flags |= EXEC_OBJECT_WRITE;
 		obj[2].offset = get_offset(ahnd, obj[2].handle, 4096, 0x0);
-		obj[2].flags |= EXEC_OBJECT_PINNED;
+		obj[2].flags |= EXEC_OBJECT_PINNED | EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
 		execbuf.flags |= I915_EXEC_NO_RELOC;
 	} else {
 		obj[0].offset = cork << 20;
@@ -581,6 +581,7 @@ static void store_dword(int i915, uint64_t ahnd, const intel_ctx_t *ctx,
 	gem_write(i915, obj[2].handle, 0, batch, sizeof(batch));
 	gem_execbuf(i915, &execbuf);
 	gem_close(i915, obj[2].handle);
+	put_offset(ahnd, obj[2].handle);
 }
 
 static const intel_ctx_t *
-- 
2.34.1



More information about the igt-dev mailing list