KVM: arm64: Simplify __kvm_enable_ssbs()
authorMarc Zyngier <maz@kernel.org>
Wed, 21 Oct 2020 20:52:54 +0000 (21:52 +0100)
committerMarc Zyngier <maz@kernel.org>
Fri, 27 Nov 2020 11:32:44 +0000 (11:32 +0000)
Move the setting of SSBS directly into the HVC handler, using
the C helpers rather than the inline asssembly code.

Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_asm.h
arch/arm64/include/asm/sysreg.h
arch/arm64/kvm/hyp/nvhe/hyp-main.c
arch/arm64/kvm/hyp/nvhe/sysreg-sr.c

index 54387ccd1ab26ad11822e5bb85ad8f852e16e85d..a542c422a036fa3c3b6441d5fc5df1efd2bf7a82 100644 (file)
@@ -189,8 +189,6 @@ extern void __kvm_timer_set_cntvoff(u64 cntvoff);
 
 extern int __kvm_vcpu_run(struct kvm_vcpu *vcpu);
 
-extern void __kvm_enable_ssbs(void);
-
 extern u64 __vgic_v3_get_ich_vtr_el2(void);
 extern u64 __vgic_v3_read_vmcr(void);
 extern void __vgic_v3_write_vmcr(u32 vmcr);
index 174817ba119cbb42d6287be9e2cce972fe020948..153faa15d4909130b8e6d0678f72a3e381b8e72f 100644 (file)
 
 #define SYS_PMCCFILTR_EL0              sys_reg(3, 3, 14, 15, 7)
 
+#define SYS_SCTLR_EL2                  sys_reg(3, 4, 1, 0, 0)
 #define SYS_ZCR_EL2                    sys_reg(3, 4, 1, 2, 0)
 #define SYS_DACR32_EL2                 sys_reg(3, 4, 3, 0, 0)
 #define SYS_SPSR_EL2                   sys_reg(3, 4, 4, 0, 0)
index c0543b2e760eaf6e6753f8539cb47e2e9d388006..82df7fc247606293bc921191a86cb2ad6cbd3f47 100644 (file)
@@ -58,7 +58,11 @@ static void handle___kvm_timer_set_cntvoff(struct kvm_cpu_context *host_ctxt)
 
 static void handle___kvm_enable_ssbs(struct kvm_cpu_context *host_ctxt)
 {
-       __kvm_enable_ssbs();
+       u64 tmp;
+
+       tmp = read_sysreg_el2(SYS_SCTLR);
+       tmp |= SCTLR_ELx_DSSBS;
+       write_sysreg_el2(tmp, SYS_SCTLR);
 }
 
 static void handle___vgic_v3_get_ich_vtr_el2(struct kvm_cpu_context *host_ctxt)
index 88a25fc8fcd36df5c8c4d693be2b2c5fb4179338..29305022bc048f09c4686166153d1784ee8e5c94 100644 (file)
@@ -33,14 +33,3 @@ void __sysreg_restore_state_nvhe(struct kvm_cpu_context *ctxt)
        __sysreg_restore_user_state(ctxt);
        __sysreg_restore_el2_return_state(ctxt);
 }
-
-void __kvm_enable_ssbs(void)
-{
-       u64 tmp;
-
-       asm volatile(
-       "mrs    %0, sctlr_el2\n"
-       "orr    %0, %0, %1\n"
-       "msr    sctlr_el2, %0"
-       : "=&r" (tmp) : "L" (SCTLR_ELx_DSSBS));
-}