• Linus Walleij's avatar
    ARM: dts: ux500: Reserve memory carveouts · 8a996b2d
    Linus Walleij authored
    The Ux500 platforms have some memory carveouts set aside for
    communicating with the modem and for the initial secure software
    (ISSW). These areas are protected by the memory controller
    and will result in an external abort if accessed like common
    read/write memory.
    
    On the legacy boot loaders, these were set aside by using
    cmdline arguments such as this:
    
      mem=96M@0 mem_mtrace=15M@96M mem_mshared=1M@111M
      mem_modem=16M@112M mali.mali_mem=32M@128M mem=96M@160M
      hwmem=127M@256M mem_issw=1M@383M mem_ram_console=1M@384M
      mem=638M@385M
    
    Reserve the relevant areas in the device tree instead. The
    "mali", "hwmem", "mem_ram_console" and the trailing 1MB at the
    end of the memory reservations in the list are not relevant for
    the upstream kernel as these are nowadays replaced with
    upstream technologies such as CMA. The modem and ISSW
    reservations are necessary.
    
    This was manifested in a bug that surfaced in response to
    commit 7fef431b ("mm/page_alloc: place pages to tail in __free_pages_core()")
    which changes the behaviour of memory allocations
    in such a way that the platform will sooner run into these
    dangerous areas, with "Unhandled fault: imprecise external
    abort (0xc06) at 0xb6fd83dc" or similar: the real reason
    turns out to be that the PTE is pointing right into one of
    the reserved memory areas. We were just lucky until now.
    
    We need to augment the DB8500 and DB8520 SoCs similarly
    and also create a new include for the DB9500 used in the
    Snowball since this does not have a modem and thus does
    not need the modem memory reservation, albeit it needs
    the ISSW reservation.
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Cc: stable@vger.kernel.org
    Cc: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20201213225517.3838501-1-linus.walleij@linaro.org'
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    8a996b2d
ste-db9500.dtsi 694 Bytes