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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7CFF9C433F5 for ; Thu, 21 Oct 2021 18:08:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6840C61B04 for ; Thu, 21 Oct 2021 18:08:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232381AbhJUSKl (ORCPT ); Thu, 21 Oct 2021 14:10:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:55352 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229914AbhJUSKl (ORCPT ); Thu, 21 Oct 2021 14:10:41 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C042561B00; Thu, 21 Oct 2021 18:08:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1634839705; bh=W+84tHLcOZAWN5BwW6ZZUK9hQFjUbMrqnIca5VlL5Q0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JMcTij8CQdEXv7JHb/5Ms7WwE7ylYBjvM5kalx06rrFDDvf/mkZNdnsuJ5AGD68fn X97wBy4loAyHmnS3fFqV9wLtddwylvIyRqGRvpMHZU4fCygaz0vAd6I2vrsor+D2Q3 Ic9LKvJO+mehgIt8FaznsIbJIuxQL1pTWF0UutbMffdMjCfkvaV7w4/p4ZvtTFI10q Zm5liEx/euOKUwGrDTBdZuC64X4bwry2yaj9k5LMYXR2BBkA/LOsBAsOmYFEG95YWU Se5t6GJPqrVisBg3yXOD1m8uQW5G62MYRmnMbENTPtkh9og34B/k1yZTxIfJCkTJ6x O3nYM69rg23mQ== From: Mark Brown To: Catalin Marinas , Will Deacon , Shuah Khan , Shuah Khan Cc: Alan Hayward , Luis Machado , Salil Akerkar , Basant Kumar Dwivedi , Szabolcs Nagy , linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Mark Brown Subject: [PATCH v4 09/33] arm64/sme: Early CPU setup for SME Date: Thu, 21 Oct 2021 19:06:58 +0100 Message-Id: <20211021180722.3699248-10-broonie@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211021180722.3699248-1-broonie@kernel.org> References: <20211021180722.3699248-1-broonie@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2261; h=from:subject; bh=W+84tHLcOZAWN5BwW6ZZUK9hQFjUbMrqnIca5VlL5Q0=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBhcaxFQ9ixCcPG5zz09jsii37p/28yPJYGMTr1NVDA EpqAXkWJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCYXGsRQAKCRAk1otyXVSH0KY0B/ 9WZ+W76RyjcXpQZSCtdmlQUPDpTnP/zpA3NpWk9J4kuefPvUO5MldwKT4LMVXIxeYWi8JDSoM9DBQ/ OP1gF12/wfTZW5gseVMguJw7bPd8c1GSIPJZtsZ5t88Dxes5sDguUbqlIqg08TaW7YvBajHwDb/N3M 3USmDSY79VFjcvXA8HgdTVXVNBBphxDtYt2sP2Nm2whaHxUqNbTQTzOFBERNgMwad/WzP8o9ptha0E 3alh4rJfmgJXIczty56MGjjmo/ztCuL0S8X48XyRO+j5L1xQuUKTJpRQqqUgWTAKJ05o2zVxoaayVX abDw+9IrhiJrnMF7zDsAq1G6BcaaDb X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org SME requires similar setup to that for SVE: disable traps to EL2 and make sure that the maximum vector length is available to EL1, for SME we have two traps - one for SME itself and one for TPIDR2. In addition since we currently make no active use of priority control for SCMUs we map all SME priorities lower ELs may configure to 0, the architecture specified minimum priority, to ensure that nothing we manage is able to configure itself to consume excessive resources. This will need to be revisited should there be a need to manage SME priorities at runtime. Signed-off-by: Mark Brown --- arch/arm64/include/asm/el2_setup.h | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el2_setup.h index 3198acb2aad8..895a27a1dcb5 100644 --- a/arch/arm64/include/asm/el2_setup.h +++ b/arch/arm64/include/asm/el2_setup.h @@ -143,6 +143,41 @@ .Lskip_sve_\@: .endm +/* SME register access and priority mapping */ +.macro __init_el2_nvhe_sme + mrs x1, id_aa64pfr1_el1 + ubfx x1, x1, #ID_AA64PFR1_SME_SHIFT, #4 + cbz x1, .Lskip_sme_\@ + + bic x0, x0, #CPTR_EL2_TSM // Also disable SME traps + msr cptr_el2, x0 // Disable copro. traps to EL2 + isb + + mrs x1, sctlr_el2 + orr x1, x1, #SCTLR_ELx_ENTP2 // Disable TPIDR2 traps + msr sctlr_el2, x1 + isb + + mov x1, #SMCR_ELx_LEN_MASK // Enable full SME vector + msr_s SYS_SMCR_EL2, x1 // length for EL1. + + mrs_s x1, SYS_SMIDR_EL1 // Priority mapping supported? + ubfx x1, x1, #SYS_SMIDR_EL1_SMPS_SHIFT, #1 + cbz x1, .Lskip_sme_\@ + + msr_s SYS_SMPRIMAP_EL2, xzr // Make all priorities equal + + mrs x1, id_aa64mmfr1_el1 // HCRX_EL2 present? + ubfx x1, x1, #ID_AA64MMFR1_HCX_SHIFT, #4 + cbz x1, .Lskip_sme_\@ + + mrs_s x1, SYS_HCRX_EL2 + orr x1, x1, #HCRX_EL2_SMPME_MASK // Enable priority mapping + msr_s SYS_HCRX_EL2, x1 + +.Lskip_sme_\@: +.endm + /* Disable any fine grained traps */ .macro __init_el2_fgt mrs x1, id_aa64mmfr0_el1 @@ -196,6 +231,7 @@ __init_el2_nvhe_idregs __init_el2_nvhe_cptr __init_el2_nvhe_sve + __init_el2_nvhe_sme __init_el2_fgt __init_el2_nvhe_prepare_eret .endm -- 2.30.2 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99A06C433EF for ; Thu, 21 Oct 2021 18:23:35 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 56649613C8 for ; Thu, 21 Oct 2021 18:23:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 56649613C8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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=N5mduKFJDDMukZaEwaiw9eX45DbH/WZFeTVNF81lavI=; b=atKNU1qyaYk4UT mnSn0kttm//fgN8SnTYmKJaIeZVIE5J9L92hze0D1zsrVxwdNZ1SDpHJjN8eVxzlPECB24eAl8pQz fRTeUVzKmFeyP6TJVbwrAVtc+LIA0OKpa9qgz3G8GNwQBUYKm9DQI4NSe7LweaDfgjtDa2rpP6/eS 2MslmJKxB/pnoweXBDtJ7AZhQpB0IFFmc90wRodbMZt00OTfNYt7VTSa4Uw8d7XC+931gJKOf5O8t AuuFOMMU/oE7o8vG4d6hKVH5sfAAZl5cyo0qBu+2fqEk3fzcIMA3PUoYT+9bmnK7MjW4tzTT4ckC6 3fzdO5GpImQlIE0aieEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdchD-008i3x-1l; Thu, 21 Oct 2021 18:21:44 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdcUL-008cLg-Rq for linux-arm-kernel@lists.infradead.org; Thu, 21 Oct 2021 18:08:27 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id C042561B00; Thu, 21 Oct 2021 18:08:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1634839705; bh=W+84tHLcOZAWN5BwW6ZZUK9hQFjUbMrqnIca5VlL5Q0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JMcTij8CQdEXv7JHb/5Ms7WwE7ylYBjvM5kalx06rrFDDvf/mkZNdnsuJ5AGD68fn X97wBy4loAyHmnS3fFqV9wLtddwylvIyRqGRvpMHZU4fCygaz0vAd6I2vrsor+D2Q3 Ic9LKvJO+mehgIt8FaznsIbJIuxQL1pTWF0UutbMffdMjCfkvaV7w4/p4ZvtTFI10q Zm5liEx/euOKUwGrDTBdZuC64X4bwry2yaj9k5LMYXR2BBkA/LOsBAsOmYFEG95YWU Se5t6GJPqrVisBg3yXOD1m8uQW5G62MYRmnMbENTPtkh9og34B/k1yZTxIfJCkTJ6x O3nYM69rg23mQ== From: Mark Brown To: Catalin Marinas , Will Deacon , Shuah Khan , Shuah Khan Cc: Alan Hayward , Luis Machado , Salil Akerkar , Basant Kumar Dwivedi , Szabolcs Nagy , linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Mark Brown Subject: [PATCH v4 09/33] arm64/sme: Early CPU setup for SME Date: Thu, 21 Oct 2021 19:06:58 +0100 Message-Id: <20211021180722.3699248-10-broonie@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211021180722.3699248-1-broonie@kernel.org> References: <20211021180722.3699248-1-broonie@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2261; h=from:subject; bh=W+84tHLcOZAWN5BwW6ZZUK9hQFjUbMrqnIca5VlL5Q0=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBhcaxFQ9ixCcPG5zz09jsii37p/28yPJYGMTr1NVDA EpqAXkWJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCYXGsRQAKCRAk1otyXVSH0KY0B/ 9WZ+W76RyjcXpQZSCtdmlQUPDpTnP/zpA3NpWk9J4kuefPvUO5MldwKT4LMVXIxeYWi8JDSoM9DBQ/ OP1gF12/wfTZW5gseVMguJw7bPd8c1GSIPJZtsZ5t88Dxes5sDguUbqlIqg08TaW7YvBajHwDb/N3M 3USmDSY79VFjcvXA8HgdTVXVNBBphxDtYt2sP2Nm2whaHxUqNbTQTzOFBERNgMwad/WzP8o9ptha0E 3alh4rJfmgJXIczty56MGjjmo/ztCuL0S8X48XyRO+j5L1xQuUKTJpRQqqUgWTAKJ05o2zVxoaayVX abDw+9IrhiJrnMF7zDsAq1G6BcaaDb 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-20211021_110825_977467_306ADB28 X-CRM114-Status: UNSURE ( 9.83 ) X-CRM114-Notice: Please train this message. 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 SME requires similar setup to that for SVE: disable traps to EL2 and make sure that the maximum vector length is available to EL1, for SME we have two traps - one for SME itself and one for TPIDR2. In addition since we currently make no active use of priority control for SCMUs we map all SME priorities lower ELs may configure to 0, the architecture specified minimum priority, to ensure that nothing we manage is able to configure itself to consume excessive resources. This will need to be revisited should there be a need to manage SME priorities at runtime. Signed-off-by: Mark Brown --- arch/arm64/include/asm/el2_setup.h | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el2_setup.h index 3198acb2aad8..895a27a1dcb5 100644 --- a/arch/arm64/include/asm/el2_setup.h +++ b/arch/arm64/include/asm/el2_setup.h @@ -143,6 +143,41 @@ .Lskip_sve_\@: .endm +/* SME register access and priority mapping */ +.macro __init_el2_nvhe_sme + mrs x1, id_aa64pfr1_el1 + ubfx x1, x1, #ID_AA64PFR1_SME_SHIFT, #4 + cbz x1, .Lskip_sme_\@ + + bic x0, x0, #CPTR_EL2_TSM // Also disable SME traps + msr cptr_el2, x0 // Disable copro. traps to EL2 + isb + + mrs x1, sctlr_el2 + orr x1, x1, #SCTLR_ELx_ENTP2 // Disable TPIDR2 traps + msr sctlr_el2, x1 + isb + + mov x1, #SMCR_ELx_LEN_MASK // Enable full SME vector + msr_s SYS_SMCR_EL2, x1 // length for EL1. + + mrs_s x1, SYS_SMIDR_EL1 // Priority mapping supported? + ubfx x1, x1, #SYS_SMIDR_EL1_SMPS_SHIFT, #1 + cbz x1, .Lskip_sme_\@ + + msr_s SYS_SMPRIMAP_EL2, xzr // Make all priorities equal + + mrs x1, id_aa64mmfr1_el1 // HCRX_EL2 present? + ubfx x1, x1, #ID_AA64MMFR1_HCX_SHIFT, #4 + cbz x1, .Lskip_sme_\@ + + mrs_s x1, SYS_HCRX_EL2 + orr x1, x1, #HCRX_EL2_SMPME_MASK // Enable priority mapping + msr_s SYS_HCRX_EL2, x1 + +.Lskip_sme_\@: +.endm + /* Disable any fine grained traps */ .macro __init_el2_fgt mrs x1, id_aa64mmfr0_el1 @@ -196,6 +231,7 @@ __init_el2_nvhe_idregs __init_el2_nvhe_cptr __init_el2_nvhe_sve + __init_el2_nvhe_sme __init_el2_fgt __init_el2_nvhe_prepare_eret .endm -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel