Skip to content

Commit

Permalink
memblock tests: Split up reset_memblock function
Browse files Browse the repository at this point in the history
All memblock data structure fields are reset in one function. In some
test cases, it's preferred to reset memory region arrays without
modifying other values like allocation direction flag.

Extract two functions from reset_memblock, so it's possible to reset
different parts of memblock:
  - reset_memblock_regions    - reset region arrays and their counters
  - reset_memblock_attributes - set other fields to their default values

Update checks in basic_api.c to use new definitions. Remove
reset_memblock call from memblock_initialization_check, so the true
initial values are tested.

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
Link: https://lore.kernel.org/r/5cc1ba9a0ade922dbf4ba450165b81a9ed17d4a9.1646055639.git.karolinadrobnik@gmail.com
  • Loading branch information
Karolina Drobnik authored and Mike Rapoport committed Mar 9, 2022
1 parent 2a7ceac commit 2c3dacb
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 32 deletions.
48 changes: 23 additions & 25 deletions tools/testing/memblock/tests/basic_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@

static int memblock_initialization_check(void)
{
reset_memblock();

assert(memblock.memory.regions);
assert(memblock.memory.cnt == 1);
assert(memblock.memory.max == EXPECTED_MEMBLOCK_REGIONS);
Expand Down Expand Up @@ -43,7 +41,7 @@ static int memblock_add_simple_check(void)
.size = SZ_4M
};

reset_memblock();
reset_memblock_regions();
memblock_add(r.base, r.size);

assert(rgn->base == r.base);
Expand Down Expand Up @@ -72,7 +70,7 @@ static int memblock_add_node_simple_check(void)
.size = SZ_16M
};

reset_memblock();
reset_memblock_regions();
memblock_add_node(r.base, r.size, 1, MEMBLOCK_HOTPLUG);

assert(rgn->base == r.base);
Expand Down Expand Up @@ -110,7 +108,7 @@ static int memblock_add_disjoint_check(void)
.size = SZ_8K
};

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_add(r2.base, r2.size);

Expand Down Expand Up @@ -151,7 +149,7 @@ static int memblock_add_overlap_top_check(void)

total_size = (r1.base - r2.base) + r1.size;

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_add(r2.base, r2.size);

Expand Down Expand Up @@ -190,7 +188,7 @@ static int memblock_add_overlap_bottom_check(void)

total_size = (r2.base - r1.base) + r2.size;

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_add(r2.base, r2.size);

Expand Down Expand Up @@ -225,7 +223,7 @@ static int memblock_add_within_check(void)
.size = SZ_1M
};

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_add(r2.base, r2.size);

Expand All @@ -249,7 +247,7 @@ static int memblock_add_twice_check(void)
.size = SZ_2M
};

reset_memblock();
reset_memblock_regions();

memblock_add(r.base, r.size);
memblock_add(r.base, r.size);
Expand Down Expand Up @@ -290,7 +288,7 @@ static int memblock_reserve_simple_check(void)
.size = SZ_128M
};

reset_memblock();
reset_memblock_regions();
memblock_reserve(r.base, r.size);

assert(rgn->base == r.base);
Expand Down Expand Up @@ -321,7 +319,7 @@ static int memblock_reserve_disjoint_check(void)
.size = SZ_512M
};

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_reserve(r2.base, r2.size);

Expand Down Expand Up @@ -364,7 +362,7 @@ static int memblock_reserve_overlap_top_check(void)

total_size = (r1.base - r2.base) + r1.size;

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_reserve(r2.base, r2.size);

Expand Down Expand Up @@ -404,7 +402,7 @@ static int memblock_reserve_overlap_bottom_check(void)

total_size = (r2.base - r1.base) + r2.size;

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_reserve(r2.base, r2.size);

Expand Down Expand Up @@ -440,7 +438,7 @@ static int memblock_reserve_within_check(void)
.size = SZ_64K
};

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_reserve(r2.base, r2.size);

Expand All @@ -465,7 +463,7 @@ static int memblock_reserve_twice_check(void)
.size = SZ_2M
};

reset_memblock();
reset_memblock_regions();

memblock_reserve(r.base, r.size);
memblock_reserve(r.base, r.size);
Expand Down Expand Up @@ -511,7 +509,7 @@ static int memblock_remove_simple_check(void)
.size = SZ_4M
};

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_add(r2.base, r2.size);
memblock_remove(r1.base, r1.size);
Expand Down Expand Up @@ -545,7 +543,7 @@ static int memblock_remove_absent_check(void)
.size = SZ_1G
};

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_remove(r2.base, r2.size);

Expand Down Expand Up @@ -585,7 +583,7 @@ static int memblock_remove_overlap_top_check(void)
r2_end = r2.base + r2.size;
total_size = r1_end - r2_end;

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_remove(r2.base, r2.size);

Expand Down Expand Up @@ -623,7 +621,7 @@ static int memblock_remove_overlap_bottom_check(void)

total_size = r2.base - r1.base;

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_remove(r2.base, r2.size);

Expand Down Expand Up @@ -665,7 +663,7 @@ static int memblock_remove_within_check(void)
r2_size = (r1.base + r1.size) - (r2.base + r2.size);
total_size = r1_size + r2_size;

reset_memblock();
reset_memblock_regions();
memblock_add(r1.base, r1.size);
memblock_remove(r2.base, r2.size);

Expand Down Expand Up @@ -715,7 +713,7 @@ static int memblock_free_simple_check(void)
.size = SZ_1M
};

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_reserve(r2.base, r2.size);
memblock_free((void *)r1.base, r1.size);
Expand Down Expand Up @@ -749,7 +747,7 @@ static int memblock_free_absent_check(void)
.size = SZ_128M
};

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_free((void *)r2.base, r2.size);

Expand Down Expand Up @@ -787,7 +785,7 @@ static int memblock_free_overlap_top_check(void)

total_size = (r1.size + r1.base) - (r2.base + r2.size);

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_free((void *)r2.base, r2.size);

Expand Down Expand Up @@ -824,7 +822,7 @@ static int memblock_free_overlap_bottom_check(void)

total_size = r2.base - r1.base;

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_free((void *)r2.base, r2.size);

Expand Down Expand Up @@ -867,7 +865,7 @@ static int memblock_free_within_check(void)
r2_size = (r1.base + r1.size) - (r2.base + r2.size);
total_size = r1_size + r2_size;

reset_memblock();
reset_memblock_regions();
memblock_reserve(r1.base, r1.size);
memblock_free((void *)r2.base, r2.size);

Expand Down
14 changes: 8 additions & 6 deletions tools/testing/memblock/tests/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@
#define INIT_MEMBLOCK_REGIONS 128
#define INIT_MEMBLOCK_RESERVED_REGIONS INIT_MEMBLOCK_REGIONS

void reset_memblock(void)
void reset_memblock_regions(void)
{
memset(memblock.memory.regions, 0,
memblock.memory.cnt * sizeof(struct memblock_region));
memset(memblock.reserved.regions, 0,
memblock.reserved.cnt * sizeof(struct memblock_region));

memblock.memory.cnt = 1;
memblock.memory.max = INIT_MEMBLOCK_REGIONS;
memblock.memory.name = "memory";
memblock.memory.total_size = 0;

memset(memblock.reserved.regions, 0,
memblock.reserved.cnt * sizeof(struct memblock_region));
memblock.reserved.cnt = 1;
memblock.reserved.max = INIT_MEMBLOCK_RESERVED_REGIONS;
memblock.reserved.name = "reserved";
memblock.reserved.total_size = 0;
}

void reset_memblock_attributes(void)
{
memblock.memory.name = "memory";
memblock.reserved.name = "reserved";
memblock.bottom_up = false;
memblock.current_limit = MEMBLOCK_ALLOC_ANYWHERE;
}
3 changes: 2 additions & 1 deletion tools/testing/memblock/tests/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ struct region {
phys_addr_t size;
};

void reset_memblock(void);
void reset_memblock_regions(void);
void reset_memblock_attributes(void);

#endif

0 comments on commit 2c3dacb

Please sign in to comment.