On Thu, Sep 14, 2017 at 5:51 PM, Levin, Alexander (Sasha Levin) <alexander.levin@xxxxxxxxxxx> wrote: > From: Marcin Nowakowski <marcin.nowakowski@xxxxxxxxxx> > > [ Upstream commit 73fbc1eba7ffa3bf0ad12486232a8a1edb4e4411 ] > > When a memory offset is specified through the commandline, add the > memory in range PHYS_OFFSET:Y as reserved memory area. > Otherwise the bootmem allocator is initialised with low page equal to > min_low_pfn = PHYS_OFFSET, and in free_all_bootmem will process pages > starting from min_low_pfn instead of PFN(Y). > > Signed-off-by: Marcin Nowakowski <marcin.nowakowski@xxxxxxxxxx> > Cc: linux-mips@xxxxxxxxxxxxxx > Patchwork: https://patchwork.linux-mips.org/patch/14613/ > Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxx> > --- > arch/mips/kernel/setup.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c > index f66e5ce505b2..38697f25d168 100644 > --- a/arch/mips/kernel/setup.c > +++ b/arch/mips/kernel/setup.c > @@ -589,6 +589,10 @@ static int __init early_parse_mem(char *p) > start = memparse(p + 1, &p); > > add_memory_region(start, size, BOOT_MEM_RAM); > + > + if (start && start > PHYS_OFFSET) > + add_memory_region(PHYS_OFFSET, start - PHYS_OFFSET, > + BOOT_MEM_RESERVED); > return 0; > } > early_param("mem", early_parse_mem); Does not work on MIPS Creator CI20. See: https://www.spinics.net/lists/stable/msg187229.html