Messages in this thread | | | Subject | Re: [PATCH 1/2] x86,kvm: move qemu/guest FPU switching out to vcpu_run | From | Rik van Riel <> | Date | Tue, 14 Nov 2017 22:03:50 -0500 |
| |
On Wed, 2017-11-15 at 08:47 +0800, Wanpeng Li wrote: > 2017-11-15 5:54 GMT+08:00 <riel@redhat.com>: > > From: Rik van Riel <riel@redhat.com> > > > > Currently, every time a VCPU is scheduled out, the host kernel will > > first save the guest FPU/xstate context, then load the qemu > > userspace > > FPU context, only to then immediately save the qemu userspace FPU > > context back to memory. When scheduling in a VCPU, the same > > extraneous > > FPU loads and saves are done. > > > > This could be avoided by moving from a model where the guest FPU is > > loaded and stored with preemption disabled, to a model where the > > qemu userspace FPU is swapped out for the guest FPU context for > > the duration of the KVM_RUN ioctl. > > What will happen if CONFIG_PREEMPT is enabled?
The scheduler will save the guest FPU context when a VCPU thread is preempted, and restore it when it is scheduled back in.
While inside kvm_arch_vcpu_ioctl_run, the task FPU context will be the guest FPU context, instead of the qemu userspace FPU context.
| |