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

Commit 6ca4f749 authored by Hollis Blanchard's avatar Hollis Blanchard Committed by Paul Mackerras
Browse files

powerpc: Force memory size to be a multiple of PAGE_SIZE



Ensure that total memory size is page-aligned, because otherwise
mark_bootmem() gets upset.

This error case was triggered by using 64 KiB pages in the kernel
while arch/powerpc/boot/4xx.c arbitrarily reduced the amount of memory
by 4096 (to work around a chip bug that affects the last 256 bytes of
physical memory).

Signed-off-by: default avatarHollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent f8f50b1b
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -1160,6 +1160,8 @@ static inline void __init phyp_dump_reserve_mem(void) {}

void __init early_init_devtree(void *params)
{
	unsigned long limit;

	DBG(" -> early_init_devtree(%p)\n", params);

	/* Setup flat device-tree pointer */
@@ -1200,7 +1202,19 @@ void __init early_init_devtree(void *params)
	early_reserve_mem();
	phyp_dump_reserve_mem();

	lmb_enforce_memory_limit(memory_limit);
	limit = memory_limit;
	if (! limit) {
		unsigned long memsize;

		/* Ensure that total memory size is page-aligned, because
		 * otherwise mark_bootmem() gets upset. */
		lmb_analyze();
		memsize = lmb_phys_mem_size();
		if ((memsize & PAGE_MASK) != memsize)
			limit = memsize & PAGE_MASK;
	}
	lmb_enforce_memory_limit(limit);

	lmb_analyze();

	DBG("Phys. mem: %lx\n", lmb_phys_mem_size());