diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
index 310ef17..07f0ff8a 100644
--- a/arch/arm64/include/asm/kvm_asm.h
+++ b/arch/arm64/include/asm/kvm_asm.h
@@ -53,7 +53,6 @@
 #define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_local_vmid	4
 #define __KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff		5
 #define __KVM_HOST_SMCCC_FUNC___kvm_vcpu_run			6
-#define __KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs			8
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_get_ich_vtr_el2		9
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_read_vmcr		10
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_write_vmcr		11
@@ -113,7 +112,6 @@
 extern void __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu);
 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);
diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch/arm64/include/asm/kvm_hyp.h
index 1e6339a..2e3b614 100644
--- a/arch/arm64/include/asm/kvm_hyp.h
+++ b/arch/arm64/include/asm/kvm_hyp.h
@@ -16,6 +16,7 @@
 	void *hyp_stack_ptr;
 	void *vector_ptr;
 	bool ssbd_callback_required;
+	bool enable_ssbs;
 };
 
 #define read_sysreg_elx(r,nvh,vh)					\
@@ -73,6 +74,7 @@
 #ifdef __KVM_NVHE_HYPERVISOR__
 void __sysreg_save_state_nvhe(struct kvm_cpu_context *ctxt);
 void __sysreg_restore_state_nvhe(struct kvm_cpu_context *ctxt);
+void __sysreg_enable_ssbs(void);
 #else
 void sysreg_save_host_state_vhe(struct kvm_cpu_context *ctxt);
 void sysreg_restore_host_state_vhe(struct kvm_cpu_context *ctxt);
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index da2e6a5..b3930ed 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -1314,6 +1314,8 @@
 					     + PAGE_SIZE),
 		.vector_ptr = kvm_get_hyp_vector(),
 		.ssbd_callback_required = this_cpu_read(arm64_ssbd_callback_required),
+		.enable_ssbs = this_cpu_has_cap(ARM64_SSBS) &&
+			       arm64_get_ssbd_state() == ARM64_SSBD_FORCE_DISABLE,
 	};
 
 	/*
@@ -1326,15 +1328,6 @@
 	arm_smccc_1_1_hvc(KVM_HOST_SMCCC_FUNC(__kvm_hyp_init),
 			  pgd_ptr, tpidr_el2, start_hyp, &res);
 	WARN_ON(res.a0 != SMCCC_RET_SUCCESS);
-
-	/*
-	 * Disabling SSBD on a non-VHE system requires us to enable SSBS
-	 * at EL2.
-	 */
-	if (this_cpu_has_cap(ARM64_SSBS) &&
-	    arm64_get_ssbd_state() == ARM64_SSBD_FORCE_DISABLE) {
-		kvm_call_hyp_nvhe(__kvm_enable_ssbs);
-	}
 }
 
 static void cpu_hyp_reset(void)
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
index 7dce884..bea1e19 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
@@ -62,9 +62,6 @@
 			ret = __kvm_vcpu_run(vcpu);
 			break;
 		}
-	case KVM_HOST_SMCCC_FUNC(__kvm_enable_ssbs):
-		__kvm_enable_ssbs();
-		break;
 	case KVM_HOST_SMCCC_FUNC(__vgic_v3_get_ich_vtr_el2):
 		ret = __vgic_v3_get_ich_vtr_el2();
 		break;
@@ -118,6 +115,10 @@
 		__this_cpu_write(arm64_ssbd_callback_required, 1);
 #endif
 
+	/* Disabling SSBD on a nVHE system requires to enable SSBS at EL2. */
+	if (params->enable_ssbs)
+		__sysreg_enable_ssbs();
+
 	host_vcpu = this_cpu_ptr(&kvm_host_vcpu);
 	hyp_data = this_cpu_ptr(&kvm_host_data);
 	hyp_ctxt = &hyp_data->host_ctxt;
diff --git a/arch/arm64/kvm/hyp/nvhe/sysreg-sr.c b/arch/arm64/kvm/hyp/nvhe/sysreg-sr.c
index 88a25fc..6f24095 100644
--- a/arch/arm64/kvm/hyp/nvhe/sysreg-sr.c
+++ b/arch/arm64/kvm/hyp/nvhe/sysreg-sr.c
@@ -34,7 +34,7 @@
 	__sysreg_restore_el2_return_state(ctxt);
 }
 
-void __kvm_enable_ssbs(void)
+void __sysreg_enable_ssbs(void)
 {
 	u64 tmp;
 
