Commit 0262d9c8 authored by Heiko Carstens's avatar Heiko Carstens Committed by Linus Torvalds

memblock: embed memblock type name within struct memblock_type

Provide the name of each memblock type with struct memblock_type.  This
allows to get rid of the function memblock_type_name() and duplicating
the type names in __memblock_dump_all().

The only memblock_type usage out of mm/memblock.c seems to be
arch/s390/kernel/crash_dump.c.  While at it, give it a name.

Link: http://lkml.kernel.org/r/20170120123456.46508-4-heiko.carstens@de.ibm.comSigned-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Cc: Philipp Hachtmann <phacht@linux.vnet.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 409efd4c
...@@ -32,6 +32,7 @@ static struct memblock_type oldmem_type = { ...@@ -32,6 +32,7 @@ static struct memblock_type oldmem_type = {
.max = 1, .max = 1,
.total_size = 0, .total_size = 0,
.regions = &oldmem_region, .regions = &oldmem_region,
.name = "oldmem",
}; };
struct save_area { struct save_area {
......
...@@ -42,6 +42,7 @@ struct memblock_type { ...@@ -42,6 +42,7 @@ struct memblock_type {
unsigned long max; /* size of the allocated array */ unsigned long max; /* size of the allocated array */
phys_addr_t total_size; /* size of all regions */ phys_addr_t total_size; /* size of all regions */
struct memblock_region *regions; struct memblock_region *regions;
char *name;
}; };
struct memblock { struct memblock {
......
...@@ -35,15 +35,18 @@ struct memblock memblock __initdata_memblock = { ...@@ -35,15 +35,18 @@ struct memblock memblock __initdata_memblock = {
.memory.regions = memblock_memory_init_regions, .memory.regions = memblock_memory_init_regions,
.memory.cnt = 1, /* empty dummy entry */ .memory.cnt = 1, /* empty dummy entry */
.memory.max = INIT_MEMBLOCK_REGIONS, .memory.max = INIT_MEMBLOCK_REGIONS,
.memory.name = "memory",
.reserved.regions = memblock_reserved_init_regions, .reserved.regions = memblock_reserved_init_regions,
.reserved.cnt = 1, /* empty dummy entry */ .reserved.cnt = 1, /* empty dummy entry */
.reserved.max = INIT_MEMBLOCK_REGIONS, .reserved.max = INIT_MEMBLOCK_REGIONS,
.reserved.name = "reserved",
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP #ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
.physmem.regions = memblock_physmem_init_regions, .physmem.regions = memblock_physmem_init_regions,
.physmem.cnt = 1, /* empty dummy entry */ .physmem.cnt = 1, /* empty dummy entry */
.physmem.max = INIT_PHYSMEM_REGIONS, .physmem.max = INIT_PHYSMEM_REGIONS,
.physmem.name = "physmem",
#endif #endif
.bottom_up = false, .bottom_up = false,
...@@ -64,22 +67,6 @@ ulong __init_memblock choose_memblock_flags(void) ...@@ -64,22 +67,6 @@ ulong __init_memblock choose_memblock_flags(void)
return system_has_some_mirror ? MEMBLOCK_MIRROR : MEMBLOCK_NONE; return system_has_some_mirror ? MEMBLOCK_MIRROR : MEMBLOCK_NONE;
} }
/* inline so we don't get a warning when pr_debug is compiled out */
static __init_memblock const char *
memblock_type_name(struct memblock_type *type)
{
if (type == &memblock.memory)
return "memory";
else if (type == &memblock.reserved)
return "reserved";
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
else if (type == &memblock.physmem)
return "physmem";
#endif
else
return "unknown";
}
/* adjust *@size so that (@base + *@size) doesn't overflow, return new size */ /* adjust *@size so that (@base + *@size) doesn't overflow, return new size */
static inline phys_addr_t memblock_cap_size(phys_addr_t base, phys_addr_t *size) static inline phys_addr_t memblock_cap_size(phys_addr_t base, phys_addr_t *size)
{ {
...@@ -406,12 +393,12 @@ static int __init_memblock memblock_double_array(struct memblock_type *type, ...@@ -406,12 +393,12 @@ static int __init_memblock memblock_double_array(struct memblock_type *type,
} }
if (!addr) { if (!addr) {
pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n", pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n",
memblock_type_name(type), type->max, type->max * 2); type->name, type->max, type->max * 2);
return -1; return -1;
} }
memblock_dbg("memblock: %s is doubled to %ld at [%#010llx-%#010llx]", memblock_dbg("memblock: %s is doubled to %ld at [%#010llx-%#010llx]",
memblock_type_name(type), type->max * 2, (u64)addr, type->name, type->max * 2, (u64)addr,
(u64)addr + new_size - 1); (u64)addr + new_size - 1);
/* /*
...@@ -1697,14 +1684,14 @@ phys_addr_t __init_memblock memblock_get_current_limit(void) ...@@ -1697,14 +1684,14 @@ phys_addr_t __init_memblock memblock_get_current_limit(void)
return memblock.current_limit; return memblock.current_limit;
} }
static void __init_memblock memblock_dump(struct memblock_type *type, char *name) static void __init_memblock memblock_dump(struct memblock_type *type)
{ {
phys_addr_t base, end, size; phys_addr_t base, end, size;
unsigned long flags; unsigned long flags;
int idx; int idx;
struct memblock_region *rgn; struct memblock_region *rgn;
pr_info(" %s.cnt = 0x%lx\n", name, type->cnt); pr_info(" %s.cnt = 0x%lx\n", type->name, type->cnt);
for_each_memblock_type(type, rgn) { for_each_memblock_type(type, rgn) {
char nid_buf[32] = ""; char nid_buf[32] = "";
...@@ -1719,7 +1706,7 @@ static void __init_memblock memblock_dump(struct memblock_type *type, char *name ...@@ -1719,7 +1706,7 @@ static void __init_memblock memblock_dump(struct memblock_type *type, char *name
memblock_get_region_node(rgn)); memblock_get_region_node(rgn));
#endif #endif
pr_info(" %s[%#x]\t[%pa-%pa], %pa bytes%s flags: %#lx\n", pr_info(" %s[%#x]\t[%pa-%pa], %pa bytes%s flags: %#lx\n",
name, idx, &base, &end, &size, nid_buf, flags); type->name, idx, &base, &end, &size, nid_buf, flags);
} }
} }
...@@ -1730,10 +1717,10 @@ void __init_memblock __memblock_dump_all(void) ...@@ -1730,10 +1717,10 @@ void __init_memblock __memblock_dump_all(void)
&memblock.memory.total_size, &memblock.memory.total_size,
&memblock.reserved.total_size); &memblock.reserved.total_size);
memblock_dump(&memblock.memory, "memory"); memblock_dump(&memblock.memory);
memblock_dump(&memblock.reserved, "reserved"); memblock_dump(&memblock.reserved);
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP #ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
memblock_dump(&memblock.physmem, "physmem"); memblock_dump(&memblock.physmem);
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment