From patchwork Fri Jan 12 12:07:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoffer Dall X-Patchwork-Id: 10160445 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 05077602D8 for ; Fri, 12 Jan 2018 12:09:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D9D0E28518 for ; Fri, 12 Jan 2018 12:09:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CE39B289CE; Fri, 12 Jan 2018 12:09:12 +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 B725628518 for ; Fri, 12 Jan 2018 12:09:11 +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=3yzsOjdMvOfPETjNxibrNDTXa7Se5Rv9Ns6LcZzqVNo=; b=bRYuow093g9I6Fs6RCpanCbW1M V+eel6SuohwVspPISGNUr93d5a7maaSFN1porUVXBIWJjR2CJ9Ca/QpyMiyl24Y4H4cl9KyoeVy11 lz3rxyc1SFtBp4933SvAd3MDZ1AxJYGd79/6WHkBvEqme0PzuaLVLxotgqmgfwvw+4pucFQTHdTzW uucpMNZ5IKoADrLMaFjHmjbkfPv7YqhDijUHXRTg8/bNwwoG/POc4gpC56ocF1/X/CaO/fBWDRbpp i2ZsFEUrZMtCD4fovHqBemHn3BY39zDF7cOhrHf/2+KsfSXXm/SfR2D+lk68grmZ30W3lU9lCe/Yw nJs1yXpA==; 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 1eZy8y-0001QF-KB; Fri, 12 Jan 2018 12:09:08 +0000 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1eZy80-0008Pz-J0 for linux-arm-kernel@lists.infradead.org; Fri, 12 Jan 2018 12:08:15 +0000 Received: by mail-wm0-x242.google.com with SMTP id x4so2105022wmc.0 for ; Fri, 12 Jan 2018 04:08:00 -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=3l7j3On+3gImWG8u8u/XAlOL0nLfosuCknt7xTUnbm8=; b=IIlhjMPwm6wNwDHTK6StA8GaTb0wgrXfsBPolclmV7lJijrqX0o0eBH29NoZOR30ym u4m9htPFkGWMTVjV27clP3j1SQRtHpV9RGP+uQLGOPmsZUPLOS0523uZKjawfDmviCaY bQLcXe+TcXfUxSVTNvOx+riB44h3s2OtgfNXU= 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=3l7j3On+3gImWG8u8u/XAlOL0nLfosuCknt7xTUnbm8=; b=JzO4vxoCewdWn/7X3gWEv4yWHtjiHGO6E+6qD9G2RoPITOPzZD76HU+rsiqO63METi luW7eIlLWqdqJhtsteeffS8rSDhhUiraDv5VwYRzE2bbRhlXZWyGu8n83kDYHfGWYW3J PMNhCNrALQwLBlifh9XMAowlSuGhj+ycEuEpcVQaF9Hp5JNUJbn2A5rEB2RezBq9JiPB 27L26pHHRq/xEF2GQL6H1ZFmb+AwVwgAs8Bo4GW1dJJYeLinDFZ5wnOGmLHC8iHINWBZ /Zco3HfZLIg2SyR9IBQeM0QPQwRyz8lZYBQZ+9WU565U+2Ml9ylGbNOU2kklcK2yCV6R wd9Q== X-Gm-Message-State: AKwxytdUA6kxSWvKXMjsJd/B/92K5AbURNrr+OjjJVc3ZF1Nx+YdZbgk vQAh950l93Ubcx0qu8gFpNgYgg== X-Google-Smtp-Source: ACJfBouRA6Y/U01UxM6UdFN5sFpwnFNFiDa/9SZCkIwGURDg6p3oVDlN/e6c6mtr+VywBn0smBcHFw== X-Received: by 10.80.137.178 with SMTP id g47mr2425413edg.100.1515758878311; Fri, 12 Jan 2018 04:07:58 -0800 (PST) Received: from localhost.localdomain (x50d2404e.cust.hiper.dk. [80.210.64.78]) by smtp.gmail.com with ESMTPSA id f16sm13489705edj.65.2018.01.12.04.07.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 12 Jan 2018 04:07:57 -0800 (PST) From: Christoffer Dall To: kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 05/41] KVM: arm64: Move HCR_INT_OVERRIDE to default HCR_EL2 guest flag Date: Fri, 12 Jan 2018 13:07:11 +0100 Message-Id: <20180112120747.27999-6-christoffer.dall@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180112120747.27999-1-christoffer.dall@linaro.org> References: <20180112120747.27999-1-christoffer.dall@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180112_040808_822169_17E821A6 X-CRM114-Status: GOOD ( 12.65 ) 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: Marc Zyngier , Andrew Jones , Christoffer Dall , Shih-Wei Li , kvm@vger.kernel.org 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 executed at EL1, as long as we ensure that these bits are clear when running the EL1 host, as defined in the HCR_HOST_[VHE_]FLAGS, we're OK. Reviewed-by: Marc Zyngier Signed-off-by: Shih-Wei Li Signed-off-by: Christoffer Dall --- 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 715d395ef45b..656deeb17bf2 100644 --- a/arch/arm64/include/asm/kvm_arm.h +++ b/arch/arm64/include/asm/kvm_arm.h @@ -79,9 +79,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 71700ecee308..f6189d08753e 100644 --- a/arch/arm64/kvm/hyp/switch.c +++ b/arch/arm64/kvm/hyp/switch.c @@ -167,8 +167,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) @@ -176,7 +174,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);