vcpu->arch.mmu_page_cache.gfp_zero = __GFP_ZERO;
 
+       /*
+        * Default value for the FP state, will be overloaded at load
+        * time if we support FP (pretty likely)
+        */
+       vcpu->arch.fp_state = FP_STATE_FREE;
+
        /* Set up the timer */
        kvm_timer_vcpu_init(vcpu);
 
 
        BUG_ON(!current->mm);
        BUG_ON(test_thread_flag(TIF_SVE));
 
+       if (!system_supports_fpsimd())
+               return;
+
        vcpu->arch.fp_state = FP_STATE_HOST_OWNED;
 
        vcpu_clear_flag(vcpu, HOST_SVE_ENABLED);
  * FP while we were preemptible (such as off the back of an interrupt),
  * then neither the host nor the guest own the FP hardware (and it was the
  * responsibility of the code that used FP to save the existing state).
- *
- * Note that not supporting FP is basically the same thing as far as the
- * hypervisor is concerned (nothing to save).
  */
 void kvm_arch_vcpu_ctxflush_fp(struct kvm_vcpu *vcpu)
 {
-       if (!system_supports_fpsimd() || test_thread_flag(TIF_FOREIGN_FPSTATE))
+       if (test_thread_flag(TIF_FOREIGN_FPSTATE))
                vcpu->arch.fp_state = FP_STATE_FREE;
 }