• Serge Semin's avatar
    mips: Combine memblock init and memory reservation loops · cf0c4876
    Serge Semin authored
    Before bootmem was completely removed from the kernel, the last loop
    in the bootmem_init() had been used to reserve the correspondingly
    marked regions, initialize sparsemem sections and to free the low memory
    pages, which then would be used for early memory allocations. After the
    bootmem removing patchset had been merged the loop was left to do the first
    two things only. But it didn't do them quite well.
    
    First of all it leaves the BOOT_MEM_INIT_RAM memory types unreserved,
    which is definitely bug (although it isn't noticeable due to being used
    by the kernel region only, which is fully marked as reserved). Secondly
    the reservation is supposed to be done for any memory including the
    high one. (I couldn't figure out why the highmem was ignored in the first
    place, since platforms and dts' may declare any memory region for
    reservation) Thirdly the reserved_end variable had been used here to not
    accidentally free memory occupied by kernel. Since we already reserved the
    corresponding region higher in this method there is no need in using the
    variable here anymore. Fourthly the sparsemem should be aware of all the
    memory types in the system including the ROM_DATA even if it is going to
    be reserved for the whole system uptime. Finally after all these notes are
    fixed the loop of memory reservation can be freely merged into the memory
    installation loop as it's done in this patch.
    Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Thomas Bogendoerfer <tbogendoerfer@suse.de>
    Cc: Huacai Chen <chenhc@lemote.com>
    Cc: Stefan Agner <stefan@agner.ch>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    cf0c4876
setup.c 24.9 KB