KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated

commit a5905d6af4 upstream.

KVM allows the guest to discover whether the ARCH_WORKAROUND SMCCC are
implemented, and to preserve that state during migration through its
firmware register interface.

Add the necessary boiler plate for SMCCC_ARCH_WORKAROUND_3.

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
[ kvm code moved to arch/arm/kvm, removed fw regs ABI. Added 32bit stub ]
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
James Morse
2022-04-06 17:45:44 +01:00
committed by Greg Kroah-Hartman
parent 4dd8aae585
commit df0448480b
3 changed files with 13 additions and 0 deletions

View File

@@ -349,4 +349,9 @@ static inline int kvm_arm_have_ssbd(void)
return KVM_SSBD_UNKNOWN;
}
static inline bool kvm_arm_spectre_bhb_mitigated(void)
{
/* 32bit guests don't need firmware for this */
return false;
}
#endif /* __ARM_KVM_HOST_H__ */

View File

@@ -431,6 +431,10 @@ int kvm_hvc_call_handler(struct kvm_vcpu *vcpu)
break;
}
break;
case ARM_SMCCC_ARCH_WORKAROUND_3:
if (kvm_arm_spectre_bhb_mitigated())
val = SMCCC_RET_SUCCESS;
break;
}
break;
default:

View File

@@ -452,4 +452,8 @@ static inline int kvm_arm_have_ssbd(void)
}
}
static inline bool kvm_arm_spectre_bhb_mitigated(void)
{
return arm64_get_spectre_bhb_state() == SPECTRE_MITIGATED;
}
#endif /* __ARM64_KVM_HOST_H__ */