Messages in this thread | | | Date | Tue, 16 Nov 2021 20:49:08 +0100 | Subject | Re: Thoughts of AMX KVM support based on latest kernel | From | Paolo Bonzini <> |
| |
On 11/16/21 19:55, Thomas Gleixner wrote: > We can do that, but I'm unhappy about this conditional in schedule(). So > I was asking for doing a simple KVM only solution first: > > vcpu_run() > kvm_load_guest_fpu() > wrmsrl(XFD, guest_fpstate->xfd); > XRSTORS > > do { > > local_irq_disable(); > > if (test_thread_flag(TIF_NEED_FPU_LOAD)) > switch_fpu_return() > wrmsrl(XFD, guest_fpstate->xfd); > > do { > vmenter(); // Guest modifies XFD > } while (reenter); > > update_xfd_state(); // Restore consistency > > local_irq_enable(); > > and check how bad that is for KVM in terms of overhead on AMX systems.
I agree, this is how we handle SPEC_CTRL for example and it can be extended to XFD. We should first do that, then switch to the MSR lists. Hacking into schedule() should really be the last resort.
> local_irq_enable(); <- Problem starts here > > preempt_enable(); <- Becomes wider here
It doesn't become that much wider because there's always preempt notifiers. So if it's okay to save XFD in the XSAVES wrapper and in kvm_arch_vcpu_put(), that might be already remove the need to do it schedule().
Paolo
| |