Hi Drew, On Wed, Nov 15, 2017 at 05:04:40PM +0100, Andrew Jones wrote: > On Thu, Oct 12, 2017 at 12:41:12PM +0200, Christoffer Dall wrote: > > Avoid saving the guest VFP registers and restoring the host VFP > > registers on every exit from the VM. Only when we're about to run > > userspace or other threads in the kernel do we really have to switch the > > state back to the host state. > > Rik van Riel's recently post patch "[PATCH v2 0/2] x86,kvm: move qemu/guest > FPU switching out to kvm_arch_vcpu_ioctl_run" indicates that for x86 they > only need to swap guest and userspace VFP registers before exiting VCPU_RUN > to userspace, not for running other threads. I imagine that's the same for > ARM as well. > > If so, then I think this hunk > > > @@ -209,4 +212,16 @@ void kvm_vcpu_load_sysregs(struct kvm_vcpu *vcpu) > > */ > > void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu) > > { > > + struct kvm_cpu_context *host_ctxt = vcpu->arch.host_cpu_context; > > + struct kvm_cpu_context *guest_ctxt = &vcpu->arch.ctxt; > > + > > + /* Restore host FP/SIMD state */ > > + if (vcpu->arch.guest_vfp_loaded) { > > + if (vcpu_el1_is_32bit(vcpu)) > > + kvm_call_hyp(__fpsimd32_save_state, > > + kern_hyp_va(guest_ctxt)); > > + __fpsimd_save_state(&guest_ctxt->gp_regs.fp_regs); > > + __fpsimd_restore_state(&host_ctxt->gp_regs.fp_regs); > > + vcpu->arch.guest_vfp_loaded = 0; > > + } > > } > > could be moved to the return of kvm_arch_vcpu_ioctl_run(). > That sounds cool. I'll keep this patch as it is now, and look at Rik's patches and post a follow up later, does that sound ok? Thanks, -Christoffer