diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index d67b02fe7ca5..8a9681874dd6 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -1311,8 +1311,13 @@ inval: static void handle_host_smc(struct kvm_cpu_context *host_ctxt) { + struct pkvm_hyp_vcpu *hyp_vcpu; bool handled; + hyp_vcpu = pkvm_get_loaded_hyp_vcpu(); + if (hyp_vcpu && hyp_vcpu->vcpu.arch.fp_state == FP_STATE_GUEST_OWNED) + fpsimd_host_restore(); + handled = kvm_host_psci_handler(host_ctxt); if (!handled) handled = kvm_host_ffa_handler(host_ctxt);