Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm/memblock: remove empty dummy entry

The dummy entry is introduced in the initial implementation of lmb in
commit 7c8c6b9776fb ("powerpc: Merge lmb.c and make MM initialization
use it.").

As the comment says the empty dummy entry is to simplify the code.

/* Create a dummy zero size LMB which will get coalesced away later.
* This simplifies the lmb_add() code below...
*/

While current code is reimplemented by Tejun in commit 784656f9c680
("memblock: Reimplement memblock_add_region()"). This empty dummy entry
seems not benefit the code any more.

Let's remove it.

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
CC: Paul Mackerras <paulus@ozlabs.org>
CC: Tejun Heo <tj@kernel.org>
CC: Mike Rapoport <rppt@kernel.org>
Link: https://lore.kernel.org/r/20240405015821.13411-1-richard.weiyang@gmail.com
Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>

authored by

Wei Yang and committed by
Mike Rapoport (IBM)
721f4a65 c3f38fa6

+8 -11
+2 -5
mm/memblock.c
··· 114 114 115 115 struct memblock memblock __initdata_memblock = { 116 116 .memory.regions = memblock_memory_init_regions, 117 - .memory.cnt = 1, /* empty dummy entry */ 118 117 .memory.max = INIT_MEMBLOCK_MEMORY_REGIONS, 119 118 .memory.name = "memory", 120 119 121 120 .reserved.regions = memblock_reserved_init_regions, 122 - .reserved.cnt = 1, /* empty dummy entry */ 123 121 .reserved.max = INIT_MEMBLOCK_RESERVED_REGIONS, 124 122 .reserved.name = "reserved", 125 123 ··· 128 130 #ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP 129 131 struct memblock_type physmem = { 130 132 .regions = memblock_physmem_init_regions, 131 - .cnt = 1, /* empty dummy entry */ 132 133 .max = INIT_PHYSMEM_REGIONS, 133 134 .name = "physmem", 134 135 }; ··· 353 356 /* Special case for empty arrays */ 354 357 if (type->cnt == 0) { 355 358 WARN_ON(type->total_size != 0); 356 - type->cnt = 1; 357 359 type->regions[0].base = 0; 358 360 type->regions[0].size = 0; 359 361 type->regions[0].flags = 0; ··· 596 600 597 601 /* special case for empty array */ 598 602 if (type->regions[0].size == 0) { 599 - WARN_ON(type->cnt != 1 || type->total_size); 603 + WARN_ON(type->cnt != 0 || type->total_size); 600 604 type->regions[0].base = base; 601 605 type->regions[0].size = size; 602 606 type->regions[0].flags = flags; 603 607 memblock_set_region_node(&type->regions[0], nid); 604 608 type->total_size = size; 609 + type->cnt = 1; 605 610 return 0; 606 611 } 607 612
+4 -4
tools/testing/memblock/tests/basic_api.c
··· 15 15 PREFIX_PUSH(); 16 16 17 17 ASSERT_NE(memblock.memory.regions, NULL); 18 - ASSERT_EQ(memblock.memory.cnt, 1); 18 + ASSERT_EQ(memblock.memory.cnt, 0); 19 19 ASSERT_EQ(memblock.memory.max, EXPECTED_MEMBLOCK_REGIONS); 20 20 ASSERT_EQ(strcmp(memblock.memory.name, "memory"), 0); 21 21 22 22 ASSERT_NE(memblock.reserved.regions, NULL); 23 - ASSERT_EQ(memblock.reserved.cnt, 1); 23 + ASSERT_EQ(memblock.reserved.cnt, 0); 24 24 ASSERT_EQ(memblock.memory.max, EXPECTED_MEMBLOCK_REGIONS); 25 25 ASSERT_EQ(strcmp(memblock.reserved.name, "reserved"), 0); 26 26 ··· 1295 1295 ASSERT_EQ(rgn->base, 0); 1296 1296 ASSERT_EQ(rgn->size, 0); 1297 1297 1298 - ASSERT_EQ(memblock.memory.cnt, 1); 1298 + ASSERT_EQ(memblock.memory.cnt, 0); 1299 1299 ASSERT_EQ(memblock.memory.total_size, 0); 1300 1300 1301 1301 test_pass_pop(); ··· 1723 1723 ASSERT_EQ(rgn->base, 0); 1724 1724 ASSERT_EQ(rgn->size, 0); 1725 1725 1726 - ASSERT_EQ(memblock.reserved.cnt, 1); 1726 + ASSERT_EQ(memblock.reserved.cnt, 0); 1727 1727 ASSERT_EQ(memblock.reserved.total_size, 0); 1728 1728 1729 1729 test_pass_pop();
+2 -2
tools/testing/memblock/tests/common.c
··· 40 40 { 41 41 memset(memblock.memory.regions, 0, 42 42 memblock.memory.cnt * sizeof(struct memblock_region)); 43 - memblock.memory.cnt = 1; 43 + memblock.memory.cnt = 0; 44 44 memblock.memory.max = INIT_MEMBLOCK_REGIONS; 45 45 memblock.memory.total_size = 0; 46 46 47 47 memset(memblock.reserved.regions, 0, 48 48 memblock.reserved.cnt * sizeof(struct memblock_region)); 49 - memblock.reserved.cnt = 1; 49 + memblock.reserved.cnt = 0; 50 50 memblock.reserved.max = INIT_MEMBLOCK_RESERVED_REGIONS; 51 51 memblock.reserved.total_size = 0; 52 52 }