From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CB46BECAAA1 for ; Thu, 27 Oct 2022 21:09:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NPO5DMLQtu7+miwnFzSxFCX6GgcgjtJjANNq2QNIND8=; b=Fdy1dogvQKu89X Xylqhf+PKkpv/Fp7Mi2iBTLki7WYtLJaYuAwmuw2dtKRtscRq+2j2c9wfBaCQ2oeY1VJl/dqWCRzG HDYK4NRp3Ao4+x9imm3d4eNbs1F6A6KEFqj5x0SRPTZxUdCXC3HUC/kT5oYMsJdA1l0/XmgoNGN6G zg+U2xEVmquhXY2G64Hc2j8CCnKucu/Y1su/mrzURs1VxXPoS4oTJZb4kbIL6tM7CVQSBvo6sZ20W MCV3VROITol/w61OQ0adbxurIFzp2y2EQagxMFDklZrZKqSdaGEXZ/LFvJfeb0zRfbe2Gn09U0ZcD Yqj40Zy6tvUKXEQ4EmPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooA73-00EreG-8r; Thu, 27 Oct 2022 21:08:29 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooA6l-00EraN-8b for linux-arm-kernel@lists.infradead.org; Thu, 27 Oct 2022 21:08:12 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id BAF37624F2; Thu, 27 Oct 2022 21:08:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58393C433D6; Thu, 27 Oct 2022 21:08:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666904890; bh=r/jnRnyyGayrX4/gO/vaY6RwRYSLrVP13xE/7oWXg2w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lEG3910/jGaVLaSrbdP07Qw4kUhAMJEaWAq1z8Gr350BIiVOIaTXGrpBmt+YcGyyS 3B9wYcRaXTJUJk1fBTMZec9PjxWc2jLTsXRBvG1CS1F6zhQmdpSEnqJnOsSWR+a5+o rmJiVVxvq2E15sLy8t7MhFGiaGBVXixHDah41jWcH9XdcmdWepYAY4zIprxNRNN8YM jwwgJESeikeychVvt2lrixyr31WH6G2DSMnn2P/xJTI9117YOsWkDzP1kZ65KOf7A4 99Yu15rpHdyfE41vwQ2N2VTDRtgpUXa059J6FngvTcHcJO2tqmbOnnPW6yzZtbIZBd 4gz9qfkvOJN4A== From: Mark Brown To: Catalin Marinas , Will Deacon , Marc Zyngier Cc: Peter Maydell , Richard Henderson , Vincent Donnefort , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Mark Brown , stable@vger.kernel.org Subject: [PATCH v1 2/2] KVM: arm64: Trap access to SMPRI_EL1 in VHE mode Date: Thu, 27 Oct 2022 22:04:40 +0100 Message-Id: <20221027210441.814061-3-broonie@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221027210441.814061-1-broonie@kernel.org> References: <20221027210441.814061-1-broonie@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2298; i=broonie@kernel.org; h=from:subject; bh=r/jnRnyyGayrX4/gO/vaY6RwRYSLrVP13xE/7oWXg2w=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBjWvJoIkOm0eR9ETtgNFbmhIxXFccQODfCupOrHmnD nDsbbeeJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCY1ryaAAKCRAk1otyXVSH0MHWB/ 4sUrRIkzglGyAJJSo/Cc5fr3nNTCm3Mg44+BHNuZQIq2uqM7opQevyw9QGwwiffWD15paYCy0Ed8wx FwOmSq4GuW5vu9Y6iExHYu6q6Lcl2+ige+sdvVVb3kkRpxZTTFHGmJPvQaB0He2ADnc4Hb4uEP3Llg 4tzZOx4xlKC5hOzcm7VfOx2gYddR1Q+f8edhODwhrKoKC2Z3hA2huO/i4U4Sy3KluOLVf1zGV0blAG IJR19V8WhpH3mhgOIPx1GQUKkPaq2bYJCM5PqLSaWoZL15/yJ3LWJs2dYVyKxbuSD1lrBbPJMlmMBZ RYXB5QWTFl2Gh9mkxmN3y1X2HfqZ5L X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221027_140811_407235_C45575BD X-CRM114-Status: GOOD ( 16.32 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On systems with SME access to the SMPRI_EL1 priority management register is controlled by the nSMPRI_EL1 fine grained trap. We manage this trap in nVHE mode but do not do so when in VHE mode, add the required management. On systems which do not implement priority mapping not enabling this trap will allow the guest to discover if the host support SME since the register will be RES0 rather than UNDEF. On systems implementing priority mapping the register could be used as a side channel by guests. Fixes: 861262ab8627 ("KVM: arm64: Handle SME host state when running guests") Signed-off-by: Mark Brown Cc: stable@vger.kernel.org --- arch/arm64/kvm/hyp/vhe/switch.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/vhe/switch.c b/arch/arm64/kvm/hyp/vhe/switch.c index 7acb87eaa092..cae581e8dd56 100644 --- a/arch/arm64/kvm/hyp/vhe/switch.c +++ b/arch/arm64/kvm/hyp/vhe/switch.c @@ -63,10 +63,20 @@ static void __activate_traps(struct kvm_vcpu *vcpu) __activate_traps_fpsimd32(vcpu); } - if (cpus_have_final_cap(ARM64_SME)) + if (cpus_have_final_cap(ARM64_SME)) { write_sysreg(read_sysreg(sctlr_el2) & ~SCTLR_ELx_ENTP2, sctlr_el2); + /* + * Disable access to SMPRI_EL1 - we don't need to control + * nTPIDR2_EL0 in VHE mode. + */ + sysreg_clear_set_s(SYS_HFGRTR_EL2, HFGxTR_EL2_nSMPRI_EL1_MASK, + 0); + sysreg_clear_set_s(SYS_HFGWTR_EL2, HFGxTR_EL2_nSMPRI_EL1_MASK, + 0); + } + write_sysreg(val, cpacr_el1); write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el1); @@ -88,9 +98,19 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu) */ asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT)); - if (cpus_have_final_cap(ARM64_SME)) + if (cpus_have_final_cap(ARM64_SME)) { + /* + * Enable access to SMPRI_EL1 - we don't need to + * control nTPIDR2_EL0 in VHE mode. + */ + sysreg_clear_set_s(SYS_HFGRTR_EL2, 0, + HFGxTR_EL2_nSMPRI_EL1_MASK); + sysreg_clear_set_s(SYS_HFGWTR_EL2, 0, + HFGxTR_EL2_nSMPRI_EL1_MASK); + write_sysreg(read_sysreg(sctlr_el2) | SCTLR_ELx_ENTP2, sctlr_el2); + } write_sysreg(CPACR_EL1_DEFAULT, cpacr_el1); -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel