• Mark Rutland's avatar
    arm64: alternatives: have callbacks take a cap · 4c0bd995
    Mark Rutland authored
    Today, callback alternatives are special-cased within
    __apply_alternatives(), and are applied alongside patching for system
    capabilities as ARM64_NCAPS is not part of the boot_capabilities feature
    mask.
    
    This special-casing is less than ideal. Giving special meaning to
    ARM64_NCAPS for this requires some structures and loops to use
    ARM64_NCAPS + 1 (AKA ARM64_NPATCHABLE), while others use ARM64_NCAPS.
    It's also not immediately clear callback alternatives are only applied
    when applying alternatives for system-wide features.
    
    To make this a bit clearer, changes the way that callback alternatives
    are identified to remove the special-casing of ARM64_NCAPS, and to allow
    callback alternatives to be associated with a cpucap as with all other
    alternatives.
    
    New cpucaps, ARM64_ALWAYS_BOOT and ARM64_ALWAYS_SYSTEM are added which
    are always detected alongside boot cpu capabilities and system
    capabilities respectively. All existing callback alternatives are made
    to use ARM64_ALWAYS_SYSTEM, and so will be patched at the same point
    during the boot flow as before.
    
    Subsequent patches will make more use of these new cpucaps.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Joey Gouly <joey.gouly@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20220912162210.3626215-7-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    4c0bd995
cpufeature.h 28.9 KB