[{"id":1812567,"web_url":"http://patchwork.ozlabs.org/comment/1812567/","msgid":"<7332a8d3-2ff9-54db-0c05-a45303d184ad@redhat.com>","list_archive_url":null,"date":"2017-11-29T17:46:33","subject":"Re: [PATCH v2 09/16] KVM: Move vcpu_load to arch-specific\n\tkvm_arch_vcpu_ioctl_set_mpstate","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_set_mpstate().\n> \n> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>\n> ---\n>  arch/s390/kvm/kvm-s390.c |  3 +++\n>  arch/x86/kvm/x86.c       | 15 ++++++++++++---\n>  virt/kvm/arm/arm.c       |  9 +++++++--\n>  virt/kvm/kvm_main.c      |  2 --\n>  4 files changed, 22 insertions(+), 7 deletions(-)\n> \n> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c\n> index 396fc3d..8fade85 100644\n> --- a/arch/s390/kvm/kvm-s390.c\n> +++ b/arch/s390/kvm/kvm-s390.c\n> @@ -2853,6 +2853,8 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  {\n>  \tint rc = 0;\n>  \n> +\tvcpu_load(vcpu);\n> +\n>  \t/* user space knows about this interface - let it control the state */\n>  \tvcpu->kvm->arch.user_cpu_state_ctrl = 1;\n>  \n> @@ -2870,6 +2872,7 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  \t\trc = -ENXIO;\n>  \t}\n>  \n> +\tvcpu_put(vcpu);\n>  \treturn rc;\n>  }\n>  \n> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c\n> index 9bf62c3..ee357b6 100644\n> --- a/arch/x86/kvm/x86.c\n> +++ b/arch/x86/kvm/x86.c\n> @@ -7456,15 +7456,20 @@ int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,\n>  int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  \t\t\t\t    struct kvm_mp_state *mp_state)\n>  {\n> +\tint ret;\n\ninitialize ret directly to -EINVAL ?\n\n> +\n> +\tvcpu_load(vcpu);\n> +\n> +\tret = -EINVAL;\n>  \tif (!lapic_in_kernel(vcpu) &&\n>  \t    mp_state->mp_state != KVM_MP_STATE_RUNNABLE)\n> -\t\treturn -EINVAL;\n> +\t\tgoto out;\n>  \n>  \t/* INITs are latched while in SMM */\n>  \tif ((is_smm(vcpu) || vcpu->arch.smi_pending) &&\n>  \t    (mp_state->mp_state == KVM_MP_STATE_SIPI_RECEIVED ||\n>  \t     mp_state->mp_state == KVM_MP_STATE_INIT_RECEIVED))\n> -\t\treturn -EINVAL;\n> +\t\tgoto out;\n>  \n>  \tif (mp_state->mp_state == KVM_MP_STATE_SIPI_RECEIVED) {\n>  \t\tvcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED;\n> @@ -7472,7 +7477,11 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  \t} else\n>  \t\tvcpu->arch.mp_state = mp_state->mp_state;\n>  \tkvm_make_request(KVM_REQ_EVENT, vcpu);\n> -\treturn 0;\n> +\n> +\tret = 0;\n> +out:\n> +\tvcpu_put(vcpu);\n> +\treturn ret;\n>  }\n>  \n>  int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int idt_index,\n> diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c\n> index a717170..9a3acbc 100644\n> --- a/virt/kvm/arm/arm.c\n> +++ b/virt/kvm/arm/arm.c\n> @@ -395,6 +395,10 @@ int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,\n>  int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  \t\t\t\t    struct kvm_mp_state *mp_state)\n>  {\n> +\tint ret = 0;\n> +\n> +\tvcpu_load(vcpu);\n> +\n>  \tswitch (mp_state->mp_state) {\n>  \tcase KVM_MP_STATE_RUNNABLE:\n>  \t\tvcpu->arch.power_off = false;\n> @@ -403,10 +407,11 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,\n>  \t\tvcpu_power_off(vcpu);\n>  \t\tbreak;\n>  \tdefault:\n> -\t\treturn -EINVAL;\n> +\t\tret = -EINVAL;\n>  \t}\n>  \n> -\treturn 0;\n> +\tvcpu_put(vcpu);\n> +\treturn ret;\n>  }\n>  \n>  /**\n> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c\n> index eac3c29..f360005 100644\n> --- a/virt/kvm/kvm_main.c\n> +++ b/virt/kvm/kvm_main.c\n> @@ -2618,9 +2618,7 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tr = -EFAULT;\n>  \t\tif (copy_from_user(&mp_state, argp, sizeof(mp_state)))\n>  \t\t\tgoto out;\n> -\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_set_mpstate(vcpu, &mp_state);\n> -\t\tvcpu_put(vcpu);\n>  \t\tbreak;\n>  \t}\n>  \tcase KVM_TRANSLATE: {\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 3yn7JP62BPz9sPr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 30 Nov 2017 04:46:45 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934150AbdK2Rqk (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 29 Nov 2017 12:46:40 -0500","from mx1.redhat.com ([209.132.183.28]:38268 \"EHLO mx1.redhat.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S934070AbdK2Rqi (ORCPT <rfc822;kvm-ppc@vger.kernel.org>);\n\tWed, 29 Nov 2017 12:46:38 -0500","from smtp.corp.redhat.com\n\t(int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16])\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 791523E7FC;\n\tWed, 29 Nov 2017 17:46:38 +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 D83254D742;\n\tWed, 29 Nov 2017 17:46:33 +0000 (UTC)"],"Subject":"Re: [PATCH v2 09/16] KVM: Move vcpu_load to arch-specific\n\tkvm_arch_vcpu_ioctl_set_mpstate","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-10-christoffer.dall@linaro.org>","From":"David Hildenbrand <david@redhat.com>","Organization":"Red Hat GmbH","Message-ID":"<7332a8d3-2ff9-54db-0c05-a45303d184ad@redhat.com>","Date":"Wed, 29 Nov 2017 18:46:33 +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-10-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.16","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]);\n\tWed, 29 Nov 2017 17:46:38 +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"}}]