KVM: arm64: Set CSV2 for guests on hardware unaffected by Spectre-v2
authorMarc Zyngier <maz@kernel.org>
Tue, 15 Sep 2020 23:07:05 +0000 (00:07 +0100)
committerWill Deacon <will@kernel.org>
Tue, 29 Sep 2020 15:08:16 +0000 (16:08 +0100)
If the system is not affected by Spectre-v2, then advertise to the KVM
guest that it is not affected, without the need for a safelist in the
guest.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kvm/sys_regs.c

index 077293b..7b8a8f6 100644 (file)
@@ -1131,6 +1131,9 @@ static u64 read_id_reg(const struct kvm_vcpu *vcpu,
                if (!vcpu_has_sve(vcpu))
                        val &= ~(0xfUL << ID_AA64PFR0_SVE_SHIFT);
                val &= ~(0xfUL << ID_AA64PFR0_AMU_SHIFT);
+               if (!(val & (0xfUL << ID_AA64PFR0_CSV2_SHIFT)) &&
+                   arm64_get_spectre_v2_state() == SPECTRE_UNAFFECTED)
+                       val |= (1UL << ID_AA64PFR0_CSV2_SHIFT);
        } else if (id == SYS_ID_AA64ISAR1_EL1 && !vcpu_has_ptrauth(vcpu)) {
                val &= ~((0xfUL << ID_AA64ISAR1_APA_SHIFT) |
                         (0xfUL << ID_AA64ISAR1_API_SHIFT) |