From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rik van Riel Subject: Re: [PATCH 1/2] x86,kvm: move qemu/guest FPU switching out to vcpu_run Date: Wed, 15 Nov 2017 09:43:01 -0500 Message-ID: <1510756981.21121.291.camel@redhat.com> References: <20171114215424.32214-1-riel@redhat.com> <20171114215424.32214-2-riel@redhat.com> <2e83dd3f-8f03-03ac-45e0-f2fae1d17013@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, david@redhat.com, borntraeger@de.ibm.com, tglx@linutronix.de, rkrcmar@redhat.com, Quan Xu To: "quan.xu04@gmail.com" , pbonzini@redhat.com Return-path: In-Reply-To: <2e83dd3f-8f03-03ac-45e0-f2fae1d17013@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Wed, 2017-11-15 at 14:53 +0800, quan.xu04@gmail.com wrote: > > On 2017/11/15 05:54, riel@redhat.com wrote: > > From: Rik van Riel > > > > 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. > > Rik, be careful with VM migration. with you patch, I don't think you  > could load fpu/xstate >    context accurately after VM migration. Can you explain why you believe that? Getting the guest FPU or XSTATE is done under the vcpu->mutex. This patch switches out guest and userspace FPU/XSTATE under the vcpu->mutex, and switches it back before releasing the vcpu->mutex. By the time a KVM_GET_FPU has obtained the vcpu->mutex, the guest FPU state will be in vcpu->arch.guest_fpu.state, where you expect it to be. What am I missing?