diff options
author | James Morse <james.morse@arm.com> | 2022-01-27 13:20:52 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-02-03 10:22:30 +0100 |
commit | 1dd498e5e26ad71e3e9130daf72cfb6a693fee03 (patch) | |
tree | 9c2342019c364c0a3035ccc2297f065a51de8b23 /arch/arm64/tools/cpucaps | |
parent | KVM: arm64: Stop handle_exit() from handling HVC twice when an SError occurs (diff) | |
download | linux-1dd498e5e26ad71e3e9130daf72cfb6a693fee03.tar.xz linux-1dd498e5e26ad71e3e9130daf72cfb6a693fee03.zip |
KVM: arm64: Workaround Cortex-A510's single-step and PAC trap errata
Cortex-A510's erratum #2077057 causes SPSR_EL2 to be corrupted when
single-stepping authenticated ERET instructions. A single step is
expected, but a pointer authentication trap is taken instead. The
erratum causes SPSR_EL1 to be copied to SPSR_EL2, which could allow
EL1 to cause a return to EL2 with a guest controlled ELR_EL2.
Because the conditions require an ERET into active-not-pending state,
this is only a problem for the EL2 when EL2 is stepping EL1. In this case
the previous SPSR_EL2 value is preserved in struct kvm_vcpu, and can be
restored.
Cc: stable@vger.kernel.org # 53960faf2b73: arm64: Add Cortex-A510 CPU part definition
Cc: stable@vger.kernel.org
Signed-off-by: James Morse <james.morse@arm.com>
[maz: fixup cpucaps ordering]
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220127122052.1584324-5-james.morse@arm.com
Diffstat (limited to 'arch/arm64/tools/cpucaps')
-rw-r--r-- | arch/arm64/tools/cpucaps | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm64/tools/cpucaps b/arch/arm64/tools/cpucaps index e7719e8f18de..9c65b1e25a96 100644 --- a/arch/arm64/tools/cpucaps +++ b/arch/arm64/tools/cpucaps @@ -55,9 +55,10 @@ WORKAROUND_1418040 WORKAROUND_1463225 WORKAROUND_1508412 WORKAROUND_1542419 -WORKAROUND_2064142 -WORKAROUND_2038923 WORKAROUND_1902691 +WORKAROUND_2038923 +WORKAROUND_2064142 +WORKAROUND_2077057 WORKAROUND_TRBE_OVERWRITE_FILL_MODE WORKAROUND_TSB_FLUSH_FAILURE WORKAROUND_TRBE_WRITE_OUT_OF_RANGE |