• Nicolas Pitre's avatar
    ARM: suspend: use hash of cpu_logical_map value to index into save array · 71a8986d
    Nicolas Pitre authored
    Currently we hash the MPIDR of the CPU being suspended to determine which
    entry in the sleep_save_sp array to use. In some situations, such as when
    we want to resume on another physical CPU, the MPIDR of another CPU should
    be used instead.
    
    So let's use the value of cpu_logical_map(smp_processor_id()) in place
    of the MPIDR in the suspend path.  This will result in the same index
    being used as with the previous code unless the caller has modified
    cpu_logical_map() beforehand with the MPIDR of the physical CPU the
    suspending logical CPU will resume on.
    
    Consequently, if doing a physical CPU migration, cpu_logical_map() must
    be updated appropriately somewhere between cpu_pm_enter() and
    cpu_suspend().
    
    The register allocation in __cpu_suspend is reworked in order to better
    accommodate the additional argument.
    Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
    Acked-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: default avatarDave Martin <Dave.Martin@arm.com>
    71a8986d
sleep.S 4.76 KB