• Ard Biesheuvel's avatar
    ARM: 9027/1: head.S: explicitly map DT even if it lives in the first physical section · 10fce53c
    Ard Biesheuvel authored
    The early ATAGS/DT mapping code uses SECTION_SHIFT to mask low order
    bits of R2, and decides that no ATAGS/DTB were provided if the resulting
    value is 0x0.
    
    This means that on systems where DRAM starts at 0x0 (such as Raspberry
    Pi), no explicit mapping of the DT will be created if R2 points into the
    first 1 MB section of memory. This was not a problem before, because the
    decompressed kernel is loaded at the base of DRAM and mapped using
    sections as well, and so as long as the DT is referenced via a virtual
    address that uses the same translation (the linear map, in this case),
    things work fine.
    
    However, commit 7a1be318 ("9012/1: move device tree mapping out of
    linear region") changes this, and now the DT is referenced via a virtual
    address that is disjoint from the linear mapping of DRAM, and so we need
    the early code to create the DT mapping unconditionally.
    
    So let's create the early DT mapping for any value of R2 != 0x0.
    Reported-by: default avatar"kernelci.org bot" <bot@kernelci.org>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    10fce53c
head.S 18.7 KB