[igt-dev] [PATCH i-g-t v8 11/15] lib/intel_allocator: treat default_alignment as the minimum
Matthew Auld
matthew.auld at intel.com
Tue Nov 7 11:48:12 UTC 2023
If something overrides the default alignment, we should only apply the
alignment if it is larger than the default_alignment.
v2 (Niranjana):
- Simplify slightly
v3:
- Also update the default-alignment testcase
Signed-off-by: Matthew Auld <matthew.auld at intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: José Roberto de Souza <jose.souza at intel.com>
Cc: Pallavi Mishra <pallavi.mishra at intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
---
lib/intel_allocator.c | 4 ++--
tests/intel/api_intel_allocator.c | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/intel_allocator.c b/lib/intel_allocator.c
index 01e025b46..341db2a50 100644
--- a/lib/intel_allocator.c
+++ b/lib/intel_allocator.c
@@ -584,8 +584,8 @@ static int handle_request(struct alloc_req *req, struct alloc_resp *resp)
break;
case REQ_ALLOC:
- if (!req->alloc.alignment)
- req->alloc.alignment = ial->default_alignment;
+ req->alloc.alignment = max(ial->default_alignment,
+ req->alloc.alignment);
resp->response_type = RESP_ALLOC;
resp->alloc.offset = ial->alloc(ial,
diff --git a/tests/intel/api_intel_allocator.c b/tests/intel/api_intel_allocator.c
index d19be3ce9..8e13a8808 100644
--- a/tests/intel/api_intel_allocator.c
+++ b/tests/intel/api_intel_allocator.c
@@ -206,7 +206,7 @@ static void reserve(int fd, uint8_t type)
static void default_alignment(int fd)
{
struct test_obj obj[3];
- uint64_t ahnd, default_alignment = 0x4000;
+ uint64_t ahnd, default_alignment = SZ_4K;
ahnd = intel_allocator_open_full(fd, 0, 0, 0, INTEL_ALLOCATOR_SIMPLE,
ALLOC_STRATEGY_LOW_TO_HIGH,
@@ -214,13 +214,13 @@ static void default_alignment(int fd)
for (int i = 0; i < ARRAY_SIZE(obj); i++) {
obj[i].handle = gem_handle_gen();
- obj[i].offset = intel_allocator_alloc(ahnd, obj[i].handle, 4096,
- i == 2 ? 4096 : 0);
+ obj[i].offset = intel_allocator_alloc(ahnd, obj[i].handle,
+ SZ_4K, i == 2 ? 0 : SZ_16K);
igt_debug("obj[%d].offset: %llx, handle: %u\n", i,
(long long) obj[i].offset, obj[i].handle);
}
- igt_assert_eq(obj[1].offset - obj[0].offset, default_alignment);
+ igt_assert_eq(obj[1].offset - obj[0].offset, SZ_16K);
/* obj[2] should be between obj[0] and obj[1] */
igt_assert(obj[0].offset < obj[2].offset);
igt_assert(obj[2].offset < obj[1].offset);
--
2.41.0
More information about the igt-dev
mailing list