#define KVM_ARM64_DEBUG_DIRTY          (1 << 0)
 #define KVM_ARM64_FP_ENABLED           (1 << 1) /* guest FP regs loaded */
 #define KVM_ARM64_FP_HOST              (1 << 2) /* host FP regs loaded */
-#define KVM_ARM64_HOST_SVE_IN_USE      (1 << 3) /* backup for host TIF_SVE */
 #define KVM_ARM64_HOST_SVE_ENABLED     (1 << 4) /* SVE enabled for EL0 */
 #define KVM_ARM64_GUEST_HAS_SVE                (1 << 5) /* SVE exposed to guest */
 #define KVM_ARM64_VCPU_SVE_FINALIZED   (1 << 6) /* SVE config completed */
 
  *
  * Here, we just set the correct metadata to indicate that the FPSIMD
  * state in the cpu regs (if any) belongs to current on the host.
- *
- * TIF_SVE is backed up here, since it may get clobbered with guest state.
- * This flag is restored by kvm_arch_vcpu_put_fp(vcpu).
  */
 void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu)
 {
        BUG_ON(!current->mm);
+       BUG_ON(test_thread_flag(TIF_SVE));
 
-       vcpu->arch.flags &= ~(KVM_ARM64_FP_ENABLED |
-                             KVM_ARM64_HOST_SVE_IN_USE |
-                             KVM_ARM64_HOST_SVE_ENABLED);
+       vcpu->arch.flags &= ~KVM_ARM64_FP_ENABLED;
        vcpu->arch.flags |= KVM_ARM64_FP_HOST;
 
-       if (test_thread_flag(TIF_SVE))
-               vcpu->arch.flags |= KVM_ARM64_HOST_SVE_IN_USE;
-
        if (read_sysreg(cpacr_el1) & CPACR_EL1_ZEN_EL0EN)
                vcpu->arch.flags |= KVM_ARM64_HOST_SVE_ENABLED;
 }
 void kvm_arch_vcpu_put_fp(struct kvm_vcpu *vcpu)
 {
        unsigned long flags;
-       bool host_has_sve = system_supports_sve();
-       bool guest_has_sve = vcpu_has_sve(vcpu);
 
        local_irq_save(flags);
 
        if (vcpu->arch.flags & KVM_ARM64_FP_ENABLED) {
-               if (guest_has_sve) {
+               if (vcpu_has_sve(vcpu)) {
                        __vcpu_sys_reg(vcpu, ZCR_EL1) = read_sysreg_el1(SYS_ZCR);
 
                        /* Restore the VL that was saved when bound to the CPU */
                }
 
                fpsimd_save_and_flush_cpu_state();
-       } else if (has_vhe() && host_has_sve) {
+       } else if (has_vhe() && system_supports_sve()) {
                /*
                 * The FPSIMD/SVE state in the CPU has not been touched, and we
                 * have SVE (and VHE): CPACR_EL1 (alias CPTR_EL2) has been
                        sysreg_clear_set(CPACR_EL1, CPACR_EL1_ZEN_EL0EN, 0);
        }
 
-       update_thread_flag(TIF_SVE,
-                          vcpu->arch.flags & KVM_ARM64_HOST_SVE_IN_USE);
+       update_thread_flag(TIF_SVE, 0);
 
        local_irq_restore(flags);
 }
 
        return __get_fault_info(vcpu->arch.fault.esr_el2, &vcpu->arch.fault);
 }
 
-static inline void __hyp_sve_save_host(struct kvm_vcpu *vcpu)
-{
-       struct thread_struct *thread;
-
-       thread = container_of(vcpu->arch.host_fpsimd_state, struct thread_struct,
-                             uw.fpsimd_state);
-
-       __sve_save_state(sve_pffr(thread), &vcpu->arch.host_fpsimd_state->fpsr);
-}
-
 static inline void __hyp_sve_restore_guest(struct kvm_vcpu *vcpu)
 {
        sve_cond_update_zcr_vq(vcpu_sve_max_vq(vcpu) - 1, SYS_ZCR_EL2);
  */
 static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
 {
-       bool sve_guest, sve_host;
+       bool sve_guest;
        u8 esr_ec;
        u64 reg;
 
        if (!system_supports_fpsimd())
                return false;
 
-       if (system_supports_sve()) {
-               sve_guest = vcpu_has_sve(vcpu);
-               sve_host = vcpu->arch.flags & KVM_ARM64_HOST_SVE_IN_USE;
-       } else {
-               sve_guest = false;
-               sve_host = false;
-       }
-
+       sve_guest = vcpu_has_sve(vcpu);
        esr_ec = kvm_vcpu_trap_get_class(vcpu);
 
        /* Don't handle SVE traps for non-SVE vcpus here: */
        isb();
 
        if (vcpu->arch.flags & KVM_ARM64_FP_HOST) {
-               if (sve_host)
-                       __hyp_sve_save_host(vcpu);
-               else
-                       __fpsimd_save_state(vcpu->arch.host_fpsimd_state);
-
+               __fpsimd_save_state(vcpu->arch.host_fpsimd_state);
                vcpu->arch.flags &= ~KVM_ARM64_FP_HOST;
        }