Skip to content
  • Serge Semin's avatar
    93fa5b28
    mips: Make sure dt memory regions are valid · 93fa5b28
    Serge Semin authored
    
    
    There are situations when memory regions coming from dts may be
    too big for the platform physical address space. This especially
    concerns XPA-capable systems. Bootloader may determine more than 4GB
    memory available and pass it to the kernel over dts memory node, while
    kernel is built without XPA/64BIT support. In this case the region
    may either simply be truncated by add_memory_region() method
    or by u64->phys_addr_t type casting. But in worst case the method
    can even drop the memory region if it exceeds PHYS_ADDR_MAX size.
    So lets make sure the retrieved from dts memory regions are valid,
    and if some of them aren't, just manually truncate them with a warning
    printed out.
    
    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: 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: Serge Semin <Sergey.Semin@t-platforms.ru>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    93fa5b28
    mips: Make sure dt memory regions are valid
    Serge Semin authored
    
    
    There are situations when memory regions coming from dts may be
    too big for the platform physical address space. This especially
    concerns XPA-capable systems. Bootloader may determine more than 4GB
    memory available and pass it to the kernel over dts memory node, while
    kernel is built without XPA/64BIT support. In this case the region
    may either simply be truncated by add_memory_region() method
    or by u64->phys_addr_t type casting. But in worst case the method
    can even drop the memory region if it exceeds PHYS_ADDR_MAX size.
    So lets make sure the retrieved from dts memory regions are valid,
    and if some of them aren't, just manually truncate them with a warning
    printed out.
    
    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: 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: Serge Semin <Sergey.Semin@t-platforms.ru>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
Loading