mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-21 06:24:12 +00:00
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.com Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Philipp Hachtmann <phacht@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
409efd4c9b
commit
0262d9c845
3 changed files with 13 additions and 24 deletions
|
@ -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 {
|
||||||
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 = {
|
||||||
.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)
|
||||||
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,
|
||||||
}
|
}
|
||||||
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)
|
||||||
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
|
||||||
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)
|
||||||
&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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue