Commit eca73214 authored by Russell King's avatar Russell King Committed by Russell King

[ARM] mm: move validation of membanks to one place

The newly introduced sanity_check_meminfo() function should be
used to collect all validation of the meminfo array, which we
have in bootmem_init().  Move it there.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent da46c79a
...@@ -333,14 +333,7 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi) ...@@ -333,14 +333,7 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi)
void __init bootmem_init(struct meminfo *mi) void __init bootmem_init(struct meminfo *mi)
{ {
unsigned long memend_pfn = 0; unsigned long memend_pfn = 0;
int node, initrd_node, i; int node, initrd_node;
/*
* Invalidate the node number for empty or invalid memory banks
*/
for (i = 0; i < mi->nr_banks; i++)
if (mi->bank[i].size == 0 || mi->bank[i].node >= MAX_NUMNODES)
mi->bank[i].node = -1;
memcpy(&meminfo, mi, sizeof(meminfo)); memcpy(&meminfo, mi, sizeof(meminfo));
......
...@@ -569,9 +569,10 @@ void __init iotable_init(struct map_desc *io_desc, int nr) ...@@ -569,9 +569,10 @@ void __init iotable_init(struct map_desc *io_desc, int nr)
static int __init check_membank_valid(struct membank *mb) static int __init check_membank_valid(struct membank *mb)
{ {
/* /*
* Check whether this memory region has non-zero size. * Check whether this memory region has non-zero size or
* invalid node number.
*/ */
if (mb->size == 0) if (mb->size == 0 || mb->node >= MAX_NUMNODES)
return 0; return 0;
/* /*
...@@ -605,8 +606,7 @@ static int __init check_membank_valid(struct membank *mb) ...@@ -605,8 +606,7 @@ static int __init check_membank_valid(struct membank *mb)
static void __init sanity_check_meminfo(struct meminfo *mi) static void __init sanity_check_meminfo(struct meminfo *mi)
{ {
int i; int i, j;
int j;
for (i = 0, j = 0; i < mi->nr_banks; i++) { for (i = 0, j = 0; i < mi->nr_banks; i++) {
if (check_membank_valid(&mi->bank[i])) if (check_membank_valid(&mi->bank[i]))
......
...@@ -41,12 +41,26 @@ void __init reserve_node_zero(pg_data_t *pgdat) ...@@ -41,12 +41,26 @@ void __init reserve_node_zero(pg_data_t *pgdat)
BOOTMEM_DEFAULT); BOOTMEM_DEFAULT);
} }
static void __init sanity_check_meminfo(struct meminfo *mi)
{
int i, j;
for (i = 0, j = 0; i < mi->nr_banks; i++) {
struct membank *mb = &mi->bank[i];
if (mb->size != 0 && mb->node < MAX_NUMNODES)
mi->bank[j++] = mi->bank[i];
}
mi->nr_banks = j;
}
/* /*
* paging_init() sets up the page tables, initialises the zone memory * paging_init() sets up the page tables, initialises the zone memory
* maps, and sets up the zero page, bad page and bad page tables. * maps, and sets up the zero page, bad page and bad page tables.
*/ */
void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc) void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
{ {
sanity_check_meminfo(mi);
bootmem_init(mi); bootmem_init(mi);
} }
......
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