These two patches are based on the work by Marc Zyngier and addresses Cavium ThunderX2 erratum 219. This erratum (originally reported by ARM folks) is from an interesting use of the prefetch instruction in the KPTI patchset. The prefetch was done between a TTBR change and the corresponding ISB, and this occasionally caused a crash on ThunderX2. The first patch removes the troublesome prefetch for ThunderX2. The second patch addresses the case where the issue can be triggered from a guest kernel. The workaround in this case is to trap TTBR accesses by setting HCR_EL2.TVM for guests and doing the system register update from EL2 in a fast path. Due to the nature of the erratum, the trap-and-emulate is only needed when SMT is enabled. The overhead of trap-and-emulate is expected to be negligible on most workloads. A command line option kvm-arm.vm_msr_trap has been provided to override trapping on guest TTBR updates. This is to address a very limited case where a user wants to run SMT enabled, with a trustworthy guest kernel, and wants to avoid the performance overhead associated with emulating the address translation register changes. JC Jayachandran Chandrasekharan Nair (1): arm64: KVM: Add option to trap and emulate guest VM sysreg updates Marc Zyngier (1): arm64: Workaround for Cavium ThunderX2 erratum 219 .../admin-guide/kernel-parameters.txt | 5 + Documentation/arm64/silicon-errata.rst | 2 + arch/arm/include/asm/kvm_host.h | 1 + arch/arm64/Kconfig | 12 ++ arch/arm64/include/asm/cpucaps.h | 3 +- arch/arm64/include/asm/kvm_host.h | 2 + arch/arm64/kernel/cpu_errata.c | 15 +++ arch/arm64/kernel/entry.S | 2 + arch/arm64/kvm/hyp/switch.c | 115 +++++++++++++++++- virt/kvm/arm/arm.c | 2 + 10 files changed, 156 insertions(+), 3 deletions(-) -- 2.17.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm