From patchwork Mon Dec 4 20:35:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoffer Dall X-Patchwork-Id: 10091529 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 B269560327 for ; Mon, 4 Dec 2017 20:41:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A4C9229317 for ; Mon, 4 Dec 2017 20:41:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 996912941E; Mon, 4 Dec 2017 20:41:32 +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=-4.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_MED autolearn=unavailable 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 2BFFC29317 for ; Mon, 4 Dec 2017 20:41:32 +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:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: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=hfP3EX+K5Qj8Z2NEhYihQKSvdazz5SViSm6qj/vtdyw=; b=YqEUfRag31B64wuMIK02Z9a785 0anZKN4MSnkbORFTAKtOghJjQMRn/YPlyWT+3b1vii/QzEaeIUchlFRA/s1iv437Wj3ULEl85/3vg qmxuHakSI1SrJELSvJhleG+1IazBkkqAv35d5DQh338heHKYghvj2LHO6p0EanKcI8V27uBbPCcXG LRtdrlIqjxMMR3a+4qJo2LULM1uURD7I88uw0E7swFUAgV9xOjC4TO9zqoehM0s2+QWaGxYDv2b/B XCDGhG6wHVYMKZeWjwHwZiIiKQtsRK5//GWW31luKoKAP6ozTy7Vs7scjlY38znE1cPZ0/4iUjXtW O3ZHpNLg==; 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 1eLxYJ-00043A-4B; Mon, 04 Dec 2017 20:41:23 +0000 Received: from mail-wm0-f66.google.com ([74.125.82.66]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1eLxTb-0006DO-I5 for linux-arm-kernel@lists.infradead.org; Mon, 04 Dec 2017 20:36:39 +0000 Received: by mail-wm0-f66.google.com with SMTP id f206so10420389wmf.5 for ; Mon, 04 Dec 2017 12:36:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=christofferdall-dk.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZmUolxszHLEISu3ZCcad6hveUOgpZrBDUcufGrh29MM=; b=BWZOtAiw74nC4Aw7zNCxXliCOmljsMPrESGG+AliK4NGWRgCEbrBagi5kGShWhauXb +NgATAcrJP7plzBT+9aw6u+bx1qUHmV9GMa8oalViIaYnCMOAi5KH80gAZ3ShBCr/NPw 6kLd4gfzEy/shZEl4MfSw5/tNCeOAQmGiBhxnEzCaJ6yeTBC2JWg6yTFn7qo0aCTW/lO urfOVp3IZ1zjKgZWTer0S3jcRdNh5RJoIMWuDHtTlmDb3gv0J1kW091YArl/jULfLxMI pH+k4XVk0K17wPQpB6Qio1iXRBrHDfVThdQYrXaaPKGINsmbwnruq4yTWRymKLWKneWm Aj3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=ZmUolxszHLEISu3ZCcad6hveUOgpZrBDUcufGrh29MM=; b=fXYLaO7XDl5rSCeaOpGCMdBPs+SEQ8lV9NRD58nuTigYLl7/bA9AOFjWofpBZ1Mqe6 NNIkFxRaeUkrq/BbM8qjhPrYctQc4dn6WD00/TzlU6ZBeasBLeHoQwHycmokJAsC0WdL IutCUq2Fpp+7Hvk50AuArJCQBmSGQ82iDzF3Fm6lxBbrSWYQ1KB5agp4TPXVPgDVziVU BdCChA8BDuGs7wiEz/dwHzW0jdLyxAIuiJLkqBdo0vIvHHjtSKfq7api62HwImJdEJw3 7D/nWIOrvdjP/PuPrnef2Noj1pw1TlHn+Hp8/8F7SMkgQRbPtxL73qXfBuqWZCa09OgF +rpA== X-Gm-Message-State: AJaThX42xpVWOQzVwAMSJVDjiXKeUP6nNQQda+2qMeM/uisZY/obXlSY yDIHYK+9wCT2u2KxDpoe99+RdA== X-Google-Smtp-Source: AGs4zMZ6RQMSK9ZZHPcHqXGZEVSH5h6Btv7MZMLsYoV2/qLrjYNMM4UZL5FJ2Vv36wQGmcUDiPVlfQ== X-Received: by 10.80.166.34 with SMTP id d31mr32321894edc.96.1512419769523; Mon, 04 Dec 2017 12:36:09 -0800 (PST) Received: from localhost.localdomain (x50d2404e.cust.hiper.dk. [80.210.64.78]) by smtp.gmail.com with ESMTPSA id k42sm8434943edb.94.2017.12.04.12.36.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Dec 2017 12:36:08 -0800 (PST) From: Christoffer Dall To: kvm@vger.kernel.org Subject: [PATCH v3 15/16] KVM: arm/arm64: Avoid vcpu_load for other vcpu ioctls than KVM_RUN Date: Mon, 4 Dec 2017 21:35:37 +0100 Message-Id: <20171204203538.8370-16-cdall@kernel.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171204203538.8370-1-cdall@kernel.org> References: <20171204203538.8370-1-cdall@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171204_123632_299866_1934548C X-CRM114-Status: GOOD ( 12.76 ) 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: linux-mips@linux-mips.org, Andrew Jones , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Marc Zyngier , James Hogan , Cornelia Huck , kvm-ppc@vger.kernel.org, Paul Mackerras , Christian Borntraeger , linux-arm-kernel@lists.infradead.org, Paolo Bonzini , linux-s390@vger.kernel.org, kvmarm@lists.cs.columbia.edu, Christoffer Dall MIME-Version: 1.0 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 From: Christoffer Dall Calling vcpu_load() registers preempt notifiers for this vcpu and calls kvm_arch_vcpu_load(). The latter will soon be doing a lot of heavy lifting on arm/arm64 and will try to do things such as enabling the virtual timer and setting us up to handle interrupts from the timer hardware. Loading state onto hardware registers and enabling hardware to signal interrupts can be problematic when we're not actually about to run the VCPU, because it makes it difficult to establish the right context when handling interrupts from the timer, and it makes the register access code difficult to reason about. Luckily, now when we call vcpu_load in each ioctl implementation, we can simply remove the call from the non-KVM_RUN vcpu ioctls, and our kvm_arch_vcpu_load() is only used for loading vcpu content to the physical CPU when we're actually going to run the vcpu. Signed-off-by: Christoffer Dall --- arch/arm64/kvm/guest.c | 3 --- virt/kvm/arm/arm.c | 9 --------- 2 files changed, 12 deletions(-) diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index d7e3299a7734..959e50d2588c 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c @@ -363,8 +363,6 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, { int ret = 0; - vcpu_load(vcpu); - trace_kvm_set_guest_debug(vcpu, dbg->control); if (dbg->control & ~KVM_GUESTDBG_VALID_MASK) { @@ -386,7 +384,6 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, } out: - vcpu_put(vcpu); return ret; } diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c index 8223c59be507..a760ef1803be 100644 --- a/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c @@ -381,14 +381,11 @@ static void vcpu_power_off(struct kvm_vcpu *vcpu) int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, struct kvm_mp_state *mp_state) { - vcpu_load(vcpu); - if (vcpu->arch.power_off) mp_state->mp_state = KVM_MP_STATE_STOPPED; else mp_state->mp_state = KVM_MP_STATE_RUNNABLE; - vcpu_put(vcpu); return 0; } @@ -397,8 +394,6 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, { int ret = 0; - vcpu_load(vcpu); - switch (mp_state->mp_state) { case KVM_MP_STATE_RUNNABLE: vcpu->arch.power_off = false; @@ -410,7 +405,6 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, ret = -EINVAL; } - vcpu_put(vcpu); return ret; } @@ -1003,8 +997,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp, struct kvm_device_attr attr; long r; - vcpu_load(vcpu); - switch (ioctl) { case KVM_ARM_VCPU_INIT: { struct kvm_vcpu_init init; @@ -1081,7 +1073,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp, r = -EINVAL; } - vcpu_put(vcpu); return r; }