[{"id":1812555,"web_url":"http://patchwork.ozlabs.org/comment/1812555/","msgid":"<ae58005c-4b83-fac0-56aa-b77511249beb@redhat.com>","list_archive_url":null,"date":"2017-11-29T17:40:24","subject":"Re: [PATCH v2 12/16] KVM: Move vcpu_load to arch-specific\n\tkvm_arch_vcpu_ioctl_get_fpu","submitter":{"id":70402,"url":"http://patchwork.ozlabs.org/api/people/70402/","name":"David Hildenbrand","email":"david@redhat.com"},"content":"On 29.11.2017 17:41, Christoffer Dall wrote:\n> Move vcpu_load() and vcpu_put() into the architecture specific\n> implementations of kvm_arch_vcpu_ioctl_get_fpu().\n> \n> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>\n> ---\n>  arch/s390/kvm/kvm-s390.c | 4 ++++\n>  arch/x86/kvm/x86.c       | 7 +++++--\n>  virt/kvm/kvm_main.c      | 2 --\n>  3 files changed, 9 insertions(+), 4 deletions(-)\n> \n> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c\n> index 4bf80b5..88dcb89 100644\n> --- a/arch/s390/kvm/kvm-s390.c\n> +++ b/arch/s390/kvm/kvm-s390.c\n> @@ -2765,6 +2765,8 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)\n>  \n>  int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)\n>  {\n> +\tvcpu_load(vcpu);\n> +\n>  \t/* make sure we have the latest values */\n>  \tsave_fpu_regs();\n>  \tif (MACHINE_HAS_VX)\n> @@ -2773,6 +2775,8 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)\n>  \telse\n>  \t\tmemcpy(fpu->fprs, vcpu->run->s.regs.fprs, sizeof(fpu->fprs));\n>  \tfpu->fpc = vcpu->run->s.regs.fpc;\n> +\n> +\tvcpu_put(vcpu);\n\nThis is one example where we need the vcpu_put/load.\n\n>  \treturn 0;\n>  }\n>  \n> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c\n> index a074b0bd..8b54567 100644\n> --- a/arch/x86/kvm/x86.c\n> +++ b/arch/x86/kvm/x86.c\n> @@ -7679,9 +7679,11 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,\n>  \n>  int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)\n>  {\n> -\tstruct fxregs_state *fxsave =\n> -\t\t\t&vcpu->arch.guest_fpu.state.fxsave;\n> +\tstruct fxregs_state *fxsave;\n>  \n> +\tvcpu_load(vcpu);\n> +\n> +\tfxsave = &vcpu->arch.guest_fpu.state.fxsave;\n>  \tmemcpy(fpu->fpr, fxsave->st_space, 128);\n>  \tfpu->fcw = fxsave->cwd;\n>  \tfpu->fsw = fxsave->swd;\n> @@ -7691,6 +7693,7 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)\n>  \tfpu->last_dp = fxsave->rdp;\n>  \tmemcpy(fpu->xmm, fxsave->xmm_space, sizeof fxsave->xmm_space);\n>  \n> +\tvcpu_put(vcpu);\n>  \treturn 0;\n>  }\n>  \n> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c\n> index c688eb7..73ad70a 100644\n> --- a/virt/kvm/kvm_main.c\n> +++ b/virt/kvm/kvm_main.c\n> @@ -2673,9 +2673,7 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tr = -ENOMEM;\n>  \t\tif (!fpu)\n>  \t\t\tgoto out;\n> -\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_get_fpu(vcpu, fpu);\n> -\t\tvcpu_put(vcpu);\n>  \t\tif (r)\n>  \t\t\tgoto out;\n>  \t\tr = -EFAULT;\n> \n\nReviewed-by: David Hildenbrand <david@redhat.com>","headers":{"Return-Path":"<kvm-ppc-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=kvm-ppc-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yn79J3shPz9t2x\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 30 Nov 2017 04:40:36 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934742AbdK2Rkc (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 29 Nov 2017 12:40:32 -0500","from mx1.redhat.com ([209.132.183.28]:60368 \"EHLO mx1.redhat.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S934697AbdK2Rka (ORCPT <rfc822;kvm-ppc@vger.kernel.org>);\n\tWed, 29 Nov 2017 12:40:30 -0500","from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 96CDF6A7D6;\n\tWed, 29 Nov 2017 17:40:29 +0000 (UTC)","from [10.36.117.80] (ovpn-117-80.ams2.redhat.com [10.36.117.80])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id BD9E760F80;\n\tWed, 29 Nov 2017 17:40:25 +0000 (UTC)"],"Subject":"Re: [PATCH v2 12/16] KVM: Move vcpu_load to arch-specific\n\tkvm_arch_vcpu_ioctl_get_fpu","To":"Christoffer Dall <christoffer.dall@linaro.org>, kvm@vger.kernel.org","Cc":"Andrew Jones <drjones@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,\n\t=?utf-8?b?UmFkaW0gS3LEjW3DocWZ?= <rkrcmar@redhat.com>,\n\tMarc Zyngier <marc.zyngier@arm.com>, kvmarm@lists.cs.columbia.edu,\n\tlinux-arm-kernel@lists.infradead.org, James Hogan <jhogan@kernel.org>,\n\tlinux-mips@linux-mips.org, Alexander Graf <agraf@suse.com>,\n\tkvm-ppc@vger.kernel.org, \n\tChristian Borntraeger <borntraeger@de.ibm.com>, Cornelia Huck\n\t<cohuck@redhat.com>, linux-s390@vger.kernel.org","References":"<20171129164116.16167-1-christoffer.dall@linaro.org>\n\t<20171129164116.16167-13-christoffer.dall@linaro.org>","From":"David Hildenbrand <david@redhat.com>","Organization":"Red Hat GmbH","Message-ID":"<ae58005c-4b83-fac0-56aa-b77511249beb@redhat.com>","Date":"Wed, 29 Nov 2017 18:40:24 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.4.0","MIME-Version":"1.0","In-Reply-To":"<20171129164116.16167-13-christoffer.dall@linaro.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.12","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.27]);\n\tWed, 29 Nov 2017 17:40:29 +0000 (UTC)","Sender":"kvm-ppc-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<kvm-ppc.vger.kernel.org>","X-Mailing-List":"kvm-ppc@vger.kernel.org"}}]