On Friday 08 May 2015 09:40:03 Kevin Cernekee wrote: > On Fri, May 8, 2015 at 8:32 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Friday 08 May 2015 07:40:44 Kevin Cernekee wrote: > >> On Fri, May 8, 2015 at 5:59 AM, Jaedon Shin <jaedon.shin@xxxxxxxxx> wrote: > >> > Remove unsupported memory entry for the bcm7362 platform. The BMIPS4380 > >> > processor only supports ZONE_NORMAL is not available for HIGHMEM. > >> > > >> > Signed-off-by: Jaedon Shin <jaedon.shin@xxxxxxxxx> > >> > --- > >> > arch/mips/boot/dts/brcm/bcm97362svmb.dts | 2 +- > >> > 1 file changed, 1 insertion(+), 1 deletion(-) > >> > > >> > diff --git a/arch/mips/boot/dts/brcm/bcm97362svmb.dts b/arch/mips/boot/dts/brcm/bcm97362svmb.dts > >> > index b7b88e5dc9e7..ab8b01fa7dcf 100644 > >> > --- a/arch/mips/boot/dts/brcm/bcm97362svmb.dts > >> > +++ b/arch/mips/boot/dts/brcm/bcm97362svmb.dts > >> > @@ -8,7 +8,7 @@ > >> > > >> > memory@0 { > >> > device_type = "memory"; > >> > - reg = <0x00000000 0x10000000>, <0x20000000 0x30000000>; > >> > + reg = <0x00000000 0x10000000>; > >> > >> Hmm, this is more of a kernel limitation than a hardware limitation, > >> though. The board physically has 1GB of memory, right? It is best if > >> the DT entry reflects the actual hardware configuration. > >> > >> The Broadcom kernels enable the CPU's special "XKS01" feature to put > >> 1GB of memory in ZONE_NORMAL: > >> > >> https://github.com/Broadcom/stblinux-3.3/tree/master/linux > >> > > > > What exactly is the kernel limitation here? > > If we can't enable HIGHMEM, e.g. because the MIPS CPU has D$ aliases, > then Linux is supposed to ignore any RAM above the highmem/lowmem > boundary. > > There is code in paging_init() that tries to do this. Several years > ago it used to work, but the last time I tried it (~Oct 2014) it was > broken due to some other changes in MIPS early memory init, so Linux > hangs on boot unless you take the excess RAM out of DT. Jaedon may be > running into the same issue. Ok, I see. Could you avoid the problem by not requiring highmem? We have some hacks on arch/arm/mach-realview to provide a nonlinear virt_to_phys() function, which ends up moving all RAM underneath the lowmem limit. Arnd