• Grygorii Strashko's avatar
    ARM: psci: boot_secondary: replace __pa with virt_to_idmap · 37cf524f
    Grygorii Strashko authored
    On some PAE systems (e.g. TI Keystone), memory is above the 32-bit
    addressable limit, and the interconnect provides an aliased view of
    parts of physical memory in the 32-bit addressable space. This alias
    is strictly for boot time usage, and is not otherwise usable because
    of coherency limitations.
    
    In this case, virt_to_phys(secondary_startup) would return the
    physical address of the secondary CPU boot entry point, but on such
    systems, this would be above the 4GB limit.
    
    A separate function, virt_to_idmap(), has been provided to return a
    usable physical address for functions in the identity mapping, and
    this must be used in preference to virt_to_phys() or __pa() to find
    the physical entry point for functions in the identity mapping range.
    
    For other systems, virt_to_idmap() and virt_to_phys() return identical
    physical addresses.
    Acked-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
    Acked-by: default avatarNicolas Pitre <nico@linaro.org>
    Tested-by Vitaly Andrianov <vitalya@ti.com>
    Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    [Mark: apply rmk's suggested rewording]
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    37cf524f
psci_smp.c 2.97 KB