• Mark Rutland's avatar
    arm64: make cpu number a percpu variable · 57c82954
    Mark Rutland authored
    In the absence of CONFIG_THREAD_INFO_IN_TASK, core code maintains
    thread_info::cpu, and low-level architecture code can access this to
    build raw_smp_processor_id(). With CONFIG_THREAD_INFO_IN_TASK, core code
    maintains task_struct::cpu, which for reasons of hte header soup is not
    accessible to low-level arch code.
    
    Instead, we can maintain a percpu variable containing the cpu number.
    
    For both the old and new implementation of raw_smp_processor_id(), we
    read a syreg into a GPR, add an offset, and load the result. As the
    offset is now larger, it may not be folded into the load, but otherwise
    the assembly shouldn't change much.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Tested-by: default avatarLaura Abbott <labbott@redhat.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    57c82954
smp.c 21.5 KB