From patchwork Thu Feb 15 21:02:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoffer Dall X-Patchwork-Id: 10223617 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 A3C8060467 for ; Thu, 15 Feb 2018 21:06:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 91E9E29511 for ; Thu, 15 Feb 2018 21:06:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 856AB29529; Thu, 15 Feb 2018 21:06:25 +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=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.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 0370729511 for ; Thu, 15 Feb 2018 21:06:24 +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=WplwWPCd8VJiIqUg42vh55acKoJ9HtEn29JZO5MSo2A=; b=scvkPSY9bFN0zYSs5yqu33ATrS 7a3q8885a8r3d7btcjju3FPsIoTCmySDXdNyLEo+muk1mNSS3XYXEbz6um1mDhPV5RRL4oFR6dHwG LQO6QcxdSZ9Kvn4HWMb89Ymb+FJQXNi0A+yrI5jgnrBJnpk8nS3pFxmqI3y+Ru1EBHlYVNf+2+VRc hWFE6C5IldJKeGOGrmkCQLFm8MuM1qJeVloaooLNz5qRUamcr/iwFYNthJUlIH6ngp/Dv9eiU3TcL PJYVPWvHo3fivFv/nBb/YVJoAj+o1kVmtji96CstuuwN7+hixU86s0wiRx2XDhYSI4j0X3bGqfrdG sVJSib3w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1emQjW-0002rH-Mq; Thu, 15 Feb 2018 21:06:22 +0000 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1emQhB-0008Cx-Uv for linux-arm-kernel@lists.infradead.org; Thu, 15 Feb 2018 21:04:01 +0000 Received: by mail-wm0-x243.google.com with SMTP id x21so3347142wmh.0 for ; Thu, 15 Feb 2018 13:03:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ynUB/FAPDhJX1Kcx1bYj1DciAeBHKT+83m/fxErTLTI=; b=OJ5FR15L4Y9SwJfZpFOvEizTiSbgpU9lwauhkm3zV3/zmTY9yliBYpJuGmnbiVZknk cTubtb3KOaNG07OY0O0TmWijNCsB7KMW76K6wOjZ1PJhe2gxGuXBBjo/Np7Vpd9SGkPW B/wW38QQ7M0X4Mo6znewVAUSZUHfC5HGoU0iU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ynUB/FAPDhJX1Kcx1bYj1DciAeBHKT+83m/fxErTLTI=; b=TL5diC8djkbEX/RxhgmRs/ROIhwpl8icD2TDI7Wkjx8kXeOdmvDjX/S4mebVxKJTuw /gBuShqHjB2Qn7lIrT++MnOHsZYuAz7tn9NQWtmnYx9gC/aSF+ImmhfagXhgryumSd7u LUBMd26yS+eB9yc6F79bNJu1K8hNFgyIcUxcs8Z43Xi4hMgimXrcNlakednt5mLVR+Yr d940uZEvhmy9ccymMHybWoBpS16eDfEeiMeEWgA2fOdh94eZA1QnYSkUeF9GrqeHuVHR EEdyAvag9Nal30GjcNqJI7pm55nzVY66jPgMfMmYtVvT5aHklhytJj1CtyzhFB2/0uXc RIeg== X-Gm-Message-State: APf1xPDkFRI9HOzlKO8jHLIU8isrP5XoJpYpkBcbIO4csZ1q+1yzn/SC XX5NLiTFkyxDFPWwHltEk/v4Vg== X-Google-Smtp-Source: AH8x2274VC9htCsKeHcoshDYGAzgxhEbamzbACPrvELgvmDiuKXMbkRXWnYlE1x01E5uvRlngxoI2A== X-Received: by 10.80.157.141 with SMTP id w13mr5131826ede.123.1518728633577; Thu, 15 Feb 2018 13:03:53 -0800 (PST) Received: from localhost.localdomain (x50d2404e.cust.hiper.dk. [80.210.64.78]) by smtp.gmail.com with ESMTPSA id p55sm8220030edc.15.2018.02.15.13.03.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 15 Feb 2018 13:03:52 -0800 (PST) From: Christoffer Dall To: kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 05/40] KVM: arm64: Move HCR_INT_OVERRIDE to default HCR_EL2 guest flag Date: Thu, 15 Feb 2018 22:02:57 +0100 Message-Id: <20180215210332.8648-6-christoffer.dall@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180215210332.8648-1-christoffer.dall@linaro.org> References: <20180215210332.8648-1-christoffer.dall@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180215_130358_119595_5611672C X-CRM114-Status: GOOD ( 14.57 ) 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: Andrew Jones , kvm@vger.kernel.org, Marc Zyngier , Tomasz Nowicki , Julien Grall , Yury Norov , Christoffer Dall , Dave Martin , Shih-Wei Li 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: Shih-Wei Li We always set the IMO and FMO bits in the HCR_EL2 when running the guest, regardless if we use the vgic or not. By moving these flags to HCR_GUEST_FLAGS we can avoid one of the extra save/restore operations of HCR_EL2 in the world switch code, and we can also soon get rid of the other one. This is safe, because even though the IMO and FMO bits control both taking the interrupts to EL2 and remapping ICC_*_EL1 to ICV_*_EL1 when executed at EL1, as long as we ensure that these bits are clear when running the EL1 host, we're OK, because we reset the HCR_EL2 to only have the HCR_RW bit set when returning to EL1 on non-VHE systems. Reviewed-by: Marc Zyngier Signed-off-by: Shih-Wei Li Signed-off-by: Christoffer Dall --- Notes: Changes since v3: - Slightly reworded the commit message arch/arm64/include/asm/kvm_arm.h | 4 ++-- arch/arm64/kvm/hyp/switch.c | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h index b0c84171e6a3..f055be241f4d 100644 --- a/arch/arm64/include/asm/kvm_arm.h +++ b/arch/arm64/include/asm/kvm_arm.h @@ -81,9 +81,9 @@ */ #define HCR_GUEST_FLAGS (HCR_TSC | HCR_TSW | HCR_TWE | HCR_TWI | HCR_VM | \ HCR_TVM | HCR_BSU_IS | HCR_FB | HCR_TAC | \ - HCR_AMO | HCR_SWIO | HCR_TIDCP | HCR_RW) + HCR_AMO | HCR_SWIO | HCR_TIDCP | HCR_RW | \ + HCR_FMO | HCR_IMO) #define HCR_VIRT_EXCP_MASK (HCR_VSE | HCR_VI | HCR_VF) -#define HCR_INT_OVERRIDE (HCR_FMO | HCR_IMO) #define HCR_HOST_VHE_FLAGS (HCR_RW | HCR_TGE | HCR_E2H) /* TCR_EL2 Registers bits */ diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c index 079bb5243f0c..53f3e3486a19 100644 --- a/arch/arm64/kvm/hyp/switch.c +++ b/arch/arm64/kvm/hyp/switch.c @@ -174,8 +174,6 @@ static void __hyp_text __vgic_save_state(struct kvm_vcpu *vcpu) __vgic_v3_save_state(vcpu); else __vgic_v2_save_state(vcpu); - - write_sysreg(read_sysreg(hcr_el2) & ~HCR_INT_OVERRIDE, hcr_el2); } static void __hyp_text __vgic_restore_state(struct kvm_vcpu *vcpu) @@ -183,7 +181,6 @@ static void __hyp_text __vgic_restore_state(struct kvm_vcpu *vcpu) u64 val; val = read_sysreg(hcr_el2); - val |= HCR_INT_OVERRIDE; val |= vcpu->arch.irq_lines; write_sysreg(val, hcr_el2);