From patchwork Mon Aug 21 20:35:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFkaW0gS3LEjW3DocWZ?= X-Patchwork-Id: 9913735 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0DE24603F9 for ; Mon, 21 Aug 2017 20:39:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 00E921FE8D for ; Mon, 21 Aug 2017 20:39:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E9E0C286A1; Mon, 21 Aug 2017 20:39:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HK_RANDOM_FROM, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 770D21FF40 for ; Mon, 21 Aug 2017 20:39:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hMyDoeecGoYIbvHOgPUuNew5QWbAigniLESLgYD3gho=; b=EKtMX+QmVeaxfY ohIoaf4sxPRyxRN8W1TFxAUWQhbSKE5WDe+RtAeedvqQKXjRYkOOmarV9AWSO+tu3CJYsxBPdKK8V 3T13+Y312xAqXfQCy7kGE98WVoVlT7FUXXF8M+SwE/YZh2AnOlSMxOPPrC8suhbzSJEsgHt6kN4D8 DgunAdqGmQX4qsxd9wpcID9ZoR6HEEwb1eE9B6m9WuHAIZzvCAJ++HaGg7fl9BjX476ZCTFap+lnd GZfj7rZ8U7TBgq5B1BYsCSjU8GlSymKQwhYQmA409bkSVVK+0RIbtcHg460jxP1FCXIAiVRjm8zIJ bHLcDaZxfBXm10Fme7Gg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1djtTh-0003hX-GO; Mon, 21 Aug 2017 20:39:17 +0000 Received: from casper.infradead.org ([85.118.1.10]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1djtTM-0003OO-9q for linux-arm-kernel@bombadil.infradead.org; Mon, 21 Aug 2017 20:38:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=wslRiDuutjONomh9lBpn11hYml2PabLox0WXFuSuVJk=; b=BDQE1e7489o4FV6xClKPM/5PyN oHAKOMjBPNZyDSFxfmf0rliXev30hD+d1jtfW+QlSnKVepSkDz4Nt+o8/vuU26KPqe+TVWivVIsKL /eXoD+R5adx+9gg9vufcxVVcbw9PcjUGE1trVI3phQgx3Wlsd4/uKmPIWpvv/RCbY6NapRdBgQKyh pXL4F90liCVyqd01GzJZ2gkIIkB8lplw+J5T8Zv5Rg/2YicwtdTcEvhKcGcGWCLi3ZIYn/4eTBpiJ NyQ9q7WZqOK0QnSzrrzu2SR0pMjXVnO8MzTJnWZIr6HpNNCxr1U8MvWop6hGlncuXN05z/1wo9rmu BsC32AGw==; Received: from mx1.redhat.com ([209.132.183.28]) by casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1djtTJ-0003mH-7k for linux-arm-kernel@lists.infradead.org; Mon, 21 Aug 2017 20:38:54 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4B175C047B97; Mon, 21 Aug 2017 20:38:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4B175C047B97 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=rkrcmar@redhat.com Received: from flask (unknown [10.43.2.80]) by smtp.corp.redhat.com (Postfix) with SMTP id 978CE5FCA2; Mon, 21 Aug 2017 20:38:10 +0000 (UTC) Received: by flask (sSMTP sendmail emulation); Mon, 21 Aug 2017 22:38:09 +0200 From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mips@linux-mips.org, kvm-ppc@vger.kernel.org, linux-s390@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH RFC v3 3/9] KVM: remember position in kvm->vcpus array Date: Mon, 21 Aug 2017 22:35:24 +0200 Message-Id: <20170821203530.9266-4-rkrcmar@redhat.com> In-Reply-To: <20170821203530.9266-1-rkrcmar@redhat.com> References: <20170821203530.9266-1-rkrcmar@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 21 Aug 2017 20:38:14 +0000 (UTC) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170821_213853_402322_A4159CCE X-CRM114-Status: GOOD ( 15.24 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Christoffer Dall , James Hogan , David Hildenbrand , Marc Zyngier , Cornelia Huck , Paul Mackerras , Christian Borntraeger , Paolo Bonzini , Alexander Graf Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Radim Krčmář Reviewed-by: David Hildenbrand --- include/linux/kvm_host.h | 11 +++-------- virt/kvm/kvm_main.c | 5 ++++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 6882538eda32..a8ff956616d2 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -220,7 +220,8 @@ struct kvm_vcpu { struct preempt_notifier preempt_notifier; #endif int cpu; - int vcpu_id; + int vcpu_id; /* id given by userspace at creation */ + int vcpus_idx; /* index in kvm->vcpus array */ int srcu_idx; int mode; unsigned long requests; @@ -516,13 +517,7 @@ static inline struct kvm_vcpu *kvm_get_vcpu_by_id(struct kvm *kvm, int id) static inline int kvm_vcpu_get_idx(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *tmp; - int idx; - - kvm_for_each_vcpu(idx, tmp, vcpu->kvm) - if (tmp == vcpu) - return idx; - BUG(); + return vcpu->vcpus_idx; } #define kvm_for_each_memslot(memslot, slots) \ diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index e17c40d986f3..caf8323f7df7 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2498,7 +2498,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) goto unlock_vcpu_destroy; } - BUG_ON(kvm->vcpus[atomic_read(&kvm->online_vcpus)]); + vcpu->vcpus_idx = atomic_read(&kvm->online_vcpus); + + BUG_ON(kvm->vcpus[vcpu->vcpus_idx]); + /* Now it's all set up, let userspace reach it */ kvm_get_kvm(kvm);