summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-02-08 13:39:18 -0500
committerTom Rini <trini@konsulko.com>2023-02-08 14:09:39 -0500
commit1975a3b1f66e27ec9004213bb3d8c5f2f67b10c1 (patch)
tree0eca91b4779698c5d3ea8193019e991b421d092a /test
parent948d3999bfcdf91ef7a10c3eee9c763ed1323bd2 (diff)
test: lmb: Rework lib_test_lmb_max_regions test to scale
First, this test depends on CONFIG_LMB_USE_MAX_REGIONS, so add that as a test before building. Second, instead of using a hard-coded value of 8, which is the default of CONFIG_LMB_USE_MAX_REGIONS previously, use that directly and update the comments. The only trick here is that one part of the test itself also was written with the value of 8 itself in mind. Rework the size of the lmb region we allocate to scale with the value of CONFIG_LMB_USE_MAX_REGIONS. Cc: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/lib/lmb.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/test/lib/lmb.c b/test/lib/lmb.c
index 157c26394d..1628875035 100644
--- a/test/lib/lmb.c
+++ b/test/lib/lmb.c
@@ -665,10 +665,17 @@ static int lib_test_lmb_get_free_size(struct unit_test_state *uts)
DM_TEST(lib_test_lmb_get_free_size,
UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+#ifdef CONFIG_LMB_USE_MAX_REGIONS
static int lib_test_lmb_max_regions(struct unit_test_state *uts)
{
const phys_addr_t ram = 0x00000000;
- const phys_size_t ram_size = 0x8000000;
+ /*
+ * All of 32bit memory space will contain regions for this test, so
+ * we need to scale ram_size (which in this case is the size of the lmb
+ * region) to match.
+ */
+ const phys_size_t ram_size = ((0xFFFFFFFF >> CONFIG_LMB_MAX_REGIONS)
+ + 1) * CONFIG_LMB_MAX_REGIONS;
const phys_size_t blk_size = 0x10000;
phys_addr_t offset;
struct lmb lmb;
@@ -677,54 +684,55 @@ static int lib_test_lmb_max_regions(struct unit_test_state *uts)
lmb_init(&lmb);
ut_asserteq(lmb.memory.cnt, 0);
- ut_asserteq(lmb.memory.max, 8);
+ ut_asserteq(lmb.memory.max, CONFIG_LMB_MAX_REGIONS);
ut_asserteq(lmb.reserved.cnt, 0);
- ut_asserteq(lmb.reserved.max, 8);
+ ut_asserteq(lmb.reserved.max, CONFIG_LMB_MAX_REGIONS);
- /* Add 8 memory regions */
- for (i = 0; i < 8; i++) {
+ /* Add CONFIG_LMB_MAX_REGIONS memory regions */
+ for (i = 0; i < CONFIG_LMB_MAX_REGIONS; i++) {
offset = ram + 2 * i * ram_size;
ret = lmb_add(&lmb, offset, ram_size);
ut_asserteq(ret, 0);
}
- ut_asserteq(lmb.memory.cnt, 8);
+ ut_asserteq(lmb.memory.cnt, CONFIG_LMB_MAX_REGIONS);
ut_asserteq(lmb.reserved.cnt, 0);
- /* error for the 9th memory regions */
- offset = ram + 2 * 8 * ram_size;
+ /* error for the (CONFIG_LMB_MAX_REGIONS + 1) memory regions */
+ offset = ram + 2 * (CONFIG_LMB_MAX_REGIONS + 1) * ram_size;
ret = lmb_add(&lmb, offset, ram_size);
ut_asserteq(ret, -1);
- ut_asserteq(lmb.memory.cnt, 8);
+ ut_asserteq(lmb.memory.cnt, CONFIG_LMB_MAX_REGIONS);
ut_asserteq(lmb.reserved.cnt, 0);
- /* reserve 8 regions */
- for (i = 0; i < 8; i++) {
+ /* reserve CONFIG_LMB_MAX_REGIONS regions */
+ for (i = 0; i < CONFIG_LMB_MAX_REGIONS; i++) {
offset = ram + 2 * i * blk_size;
ret = lmb_reserve(&lmb, offset, blk_size);
ut_asserteq(ret, 0);
}
- ut_asserteq(lmb.memory.cnt, 8);
- ut_asserteq(lmb.reserved.cnt, 8);
+ ut_asserteq(lmb.memory.cnt, CONFIG_LMB_MAX_REGIONS);
+ ut_asserteq(lmb.reserved.cnt, CONFIG_LMB_MAX_REGIONS);
/* error for the 9th reserved blocks */
- offset = ram + 2 * 8 * blk_size;
+ offset = ram + 2 * (CONFIG_LMB_MAX_REGIONS + 1) * blk_size;
ret = lmb_reserve(&lmb, offset, blk_size);
ut_asserteq(ret, -1);
- ut_asserteq(lmb.memory.cnt, 8);
- ut_asserteq(lmb.reserved.cnt, 8);
+ ut_asserteq(lmb.memory.cnt, CONFIG_LMB_MAX_REGIONS);
+ ut_asserteq(lmb.reserved.cnt, CONFIG_LMB_MAX_REGIONS);
/* check each regions */
- for (i = 0; i < 8; i++)
+ for (i = 0; i < CONFIG_LMB_MAX_REGIONS; i++)
ut_asserteq(lmb.memory.region[i].base, ram + 2 * i * ram_size);
- for (i = 0; i < 8; i++)
+ for (i = 0; i < CONFIG_LMB_MAX_REGIONS; i++)
ut_asserteq(lmb.reserved.region[i].base, ram + 2 * i * blk_size);
return 0;
}
+#endif
DM_TEST(lib_test_lmb_max_regions,
UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);