[{"id":1812512,"web_url":"http://patchwork.ozlabs.org/comment/1812512/","msgid":"<4c2cd2f8-41e6-afdc-a3c0-a5872ba9b929@redhat.com>","list_archive_url":null,"date":"2017-11-29T17:25:46","subject":"Re: [PATCH v2 02/16] KVM: Prepare for moving vcpu_load/vcpu_put into\n\tarch specific code","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> In preparation for moving calls to vcpu_load() and vcpu_put() into the\n> architecture specific implementations of the KVM vcpu ioctls, move the\n> calls in the main kvm_vcpu_ioctl() dispatcher function to each case\n> of the ioctl select statement.  This allows us to move the vcpu_load()\n> and vcpu_put() calls into architecture specific implementations of vcpu\n> ioctls, one by one.\n> \n> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>\n> ---\n>  virt/kvm/kvm_main.c | 26 ++++++++++++++++++++++++--\n>  1 file changed, 24 insertions(+), 2 deletions(-)\n> \n> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c\n> index 39961fb..480b16c 100644\n> --- a/virt/kvm/kvm_main.c\n> +++ b/virt/kvm/kvm_main.c\n> @@ -2525,13 +2525,13 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \n>  \tif (mutex_lock_killable(&vcpu->mutex))\n>  \t\treturn -EINTR;\n> -\tvcpu_load(vcpu);\n>  \tswitch (ioctl) {\n>  \tcase KVM_RUN: {\n>  \t\tstruct pid *oldpid;\n>  \t\tr = -EINVAL;\n>  \t\tif (arg)\n>  \t\t\tgoto out;\n> +\t\tvcpu_load(vcpu);\n>  \t\toldpid = rcu_access_pointer(vcpu->pid);\n>  \t\tif (unlikely(oldpid != current->pids[PIDTYPE_PID].pid)) {\n>  \t\t\t/* The thread running this VCPU changed. */\n> @@ -2543,6 +2543,7 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\t\tput_pid(oldpid);\n>  \t\t}\n>  \t\tr = kvm_arch_vcpu_ioctl_run(vcpu, vcpu->run);\n> +\t\tvcpu_put(vcpu);\n>  \t\ttrace_kvm_userspace_exit(vcpu->run->exit_reason, r);\n>  \t\tbreak;\n>  \t}\n> @@ -2553,7 +2554,9 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tkvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL);\n>  \t\tif (!kvm_regs)\n>  \t\t\tgoto out;\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_get_regs(vcpu, kvm_regs);\n> +\t\tvcpu_put(vcpu);\n>  \t\tif (r)\n>  \t\t\tgoto out_free1;\n>  \t\tr = -EFAULT;\n> @@ -2573,7 +2576,9 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\t\tr = PTR_ERR(kvm_regs);\n>  \t\t\tgoto out;\n>  \t\t}\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_set_regs(vcpu, kvm_regs);\n> +\t\tvcpu_put(vcpu);\n>  \t\tkfree(kvm_regs);\n>  \t\tbreak;\n>  \t}\n> @@ -2582,7 +2587,9 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tr = -ENOMEM;\n>  \t\tif (!kvm_sregs)\n>  \t\t\tgoto out;\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_get_sregs(vcpu, kvm_sregs);\n> +\t\tvcpu_put(vcpu);\n>  \t\tif (r)\n>  \t\t\tgoto out;\n>  \t\tr = -EFAULT;\n> @@ -2598,13 +2605,17 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\t\tkvm_sregs = NULL;\n>  \t\t\tgoto out;\n>  \t\t}\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_set_sregs(vcpu, kvm_sregs);\n> +\t\tvcpu_put(vcpu);\n>  \t\tbreak;\n>  \t}\n>  \tcase KVM_GET_MP_STATE: {\n>  \t\tstruct kvm_mp_state mp_state;\n>  \n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_get_mpstate(vcpu, &mp_state);\n> +\t\tvcpu_put(vcpu);\n>  \t\tif (r)\n>  \t\t\tgoto out;\n>  \t\tr = -EFAULT;\n> @@ -2619,7 +2630,9 @@ 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> @@ -2628,7 +2641,9 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tr = -EFAULT;\n>  \t\tif (copy_from_user(&tr, argp, sizeof(tr)))\n>  \t\t\tgoto out;\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_translate(vcpu, &tr);\n> +\t\tvcpu_put(vcpu);\n>  \t\tif (r)\n>  \t\t\tgoto out;\n>  \t\tr = -EFAULT;\n> @@ -2643,7 +2658,9 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\tr = -EFAULT;\n>  \t\tif (copy_from_user(&dbg, argp, sizeof(dbg)))\n>  \t\t\tgoto out;\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_set_guest_debug(vcpu, &dbg);\n> +\t\tvcpu_put(vcpu);\n>  \t\tbreak;\n>  \t}\n>  \tcase KVM_SET_SIGNAL_MASK: {\n> @@ -2674,7 +2691,9 @@ 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> @@ -2690,14 +2709,17 @@ static long kvm_vcpu_ioctl(struct file *filp,\n>  \t\t\tfpu = NULL;\n>  \t\t\tgoto out;\n>  \t\t}\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl_set_fpu(vcpu, fpu);\n> +\t\tvcpu_put(vcpu);\n>  \t\tbreak;\n>  \t}\n>  \tdefault:\n> +\t\tvcpu_load(vcpu);\n>  \t\tr = kvm_arch_vcpu_ioctl(filp, ioctl, arg);\n> +\t\tvcpu_put(vcpu);\n>  \t}\n>  out:\n> -\tvcpu_put(vcpu);\n>  \tmutex_unlock(&vcpu->mutex);\n>  \tkfree(fpu);\n>  \tkfree(kvm_sregs);\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 3yn6rR5YlRz9t3l\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 30 Nov 2017 04:25:58 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S933985AbdK2RZx (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 29 Nov 2017 12:25:53 -0500","from mx1.redhat.com ([209.132.183.28]:48770 \"EHLO mx1.redhat.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S933815AbdK2RZv (ORCPT <rfc822;kvm-ppc@vger.kernel.org>);\n\tWed, 29 Nov 2017 12:25:51 -0500","from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\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 9C8CE60161;\n\tWed, 29 Nov 2017 17:25:51 +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 AED9D5D976;\n\tWed, 29 Nov 2017 17:25:47 +0000 (UTC)"],"Subject":"Re: [PATCH v2 02/16] KVM: Prepare for moving vcpu_load/vcpu_put into\n\tarch specific code","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-3-christoffer.dall@linaro.org>","From":"David Hildenbrand <david@redhat.com>","Organization":"Red Hat GmbH","Message-ID":"<4c2cd2f8-41e6-afdc-a3c0-a5872ba9b929@redhat.com>","Date":"Wed, 29 Nov 2017 18:25:46 +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-3-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.14","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:25:51 +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"}}]