• Grygorii Strashko's avatar
    ARM: mm: Don't allow resizing of memblock data until "low" memory is not mapped · 8e58caef
    Grygorii Strashko authored
    If allowed by call to memblock_allow_resize() - The Memblock core will
    try to allocate additional memory and rearrange its internal data in
    case, if there are more then INIT_MEMBLOCK_REGIONS(128) memory regions
    of any type have been allocated. If this happens before Low memory is
    mapped (which is done now by map_lowmem()) the system will hang, because
    the Memblock core will try to operate with virtual addresses which
    aren't mapped yet.
    
    In ARM code, the memblock resizing is allowed (memblock_allow_resize())
    from arm_memblock_init() which is called before map_lowmem(), so
    this may lead to an error as described above.
    
    Hence, allow Memblock resizing later during init, from bootmem_init()
    when all appropriate mappings are ready.
    
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
    Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
    8e58caef
init.c 17.7 KB