• Marcin Nowakowski's avatar
    MIPS: Fix incorrect mem=X@Y handling · 67a3ba25
    Marcin Nowakowski authored
    Commit 73fbc1eb ("MIPS: fix mem=X@Y commandline processing") added a
    fix to ensure that the memory range between PHYS_OFFSET and low memory
    address specified by mem= cmdline argument is not later processed by
    free_all_bootmem.  This change was incorrect for systems where the
    commandline specifies more than 1 mem argument, as it will cause all
    memory between PHYS_OFFSET and each of the memory offsets to be marked
    as reserved, which results in parts of the RAM marked as reserved
    (Creator CI20's u-boot has a default commandline argument 'mem=256M@0x0
    mem=768M@0x30000000').
    
    Change the behaviour to ensure that only the range between PHYS_OFFSET
    and the lowest start address of the memories is marked as protected.
    
    This change also ensures that the range is marked protected even if it's
    only defined through the devicetree and not only via commandline
    arguments.
    Reported-by: default avatarMathieu Malaterre <mathieu.malaterre@gmail.com>
    Signed-off-by: default avatarMarcin Nowakowski <marcin.nowakowski@mips.com>
    Fixes: 73fbc1eb ("MIPS: fix mem=X@Y commandline processing")
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # v4.11+
    Tested-by: default avatarMathieu Malaterre <malat@debian.org>
    Patchwork: https://patchwork.linux-mips.org/patch/18562/Signed-off-by: default avatarJames Hogan <jhogan@kernel.org>
    67a3ba25
setup.c 25.5 KB