[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: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
da46c79a54
commit
eca73214c9
@@ -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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user