Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -333,14 +333,7 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi)
void __init bootmem_init(struct meminfo *mi)
{
	unsigned long memend_pfn = 0;
	int node, initrd_node, i;

	/*
	 * 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;
	int node, initrd_node;

	memcpy(&meminfo, mi, sizeof(meminfo));

+4 −4
Original line number Diff line number Diff line
@@ -569,9 +569,10 @@ void __init iotable_init(struct map_desc *io_desc, int nr)
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;

	/*
@@ -605,8 +606,7 @@ static int __init check_membank_valid(struct membank *mb)

static void __init sanity_check_meminfo(struct meminfo *mi)
{
	int i;
	int j;
	int i, j;

	for (i = 0, j = 0; i < mi->nr_banks; i++) {
		if (check_membank_valid(&mi->bank[i]))
+14 −0
Original line number Diff line number Diff line
@@ -41,12 +41,26 @@ void __init reserve_node_zero(pg_data_t *pgdat)
			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
 * maps, and sets up the zero page, bad page and bad page tables.
 */
void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
{
	sanity_check_meminfo(mi);
	bootmem_init(mi);
}