• James Morse's avatar
    arm64: assembler: Switch ESB-instruction with a vanilla nop if !ARM64_HAS_RAS · 2b68a2a9
    James Morse authored
    The ESB-instruction is a nop on CPUs that don't implement the RAS
    extensions. This lets us use it in places like the vectors without
    having to use alternatives.
    
    If someone disables CONFIG_ARM64_RAS_EXTN, this instruction still has
    its RAS extensions behaviour, but we no longer read DISR_EL1 as this
    register does depend on alternatives.
    
    This could go wrong if we want to synchronize an SError from a KVM
    guest. On a CPU that has the RAS extensions, but the KConfig option
    was disabled, we consume the pending SError with no chance of ever
    reading it.
    
    Hide the ESB-instruction behind the CONFIG_ARM64_RAS_EXTN option,
    outputting a regular nop if the feature has been disabled.
    Reported-by: default avatarJulien Thierry <julien.thierry@arm.com>
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    2b68a2a9
assembler.h 17.2 KB