From patchwork Thu Aug 1 12:06:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 13750385 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8450C3DA64 for ; Thu, 1 Aug 2024 12:58:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4FDDD6B00A0; Thu, 1 Aug 2024 08:58:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3C17C6B00A1; Thu, 1 Aug 2024 08:58:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2B0656B00A2; Thu, 1 Aug 2024 08:58:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 0C8926B00A0 for ; Thu, 1 Aug 2024 08:58:04 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BC8E780D55 for ; Thu, 1 Aug 2024 12:58:03 +0000 (UTC) X-FDA: 82403679246.29.B131E25 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf04.hostedemail.com (Postfix) with ESMTP id E688D40006 for ; Thu, 1 Aug 2024 12:58:01 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="Nmdd/qNO"; spf=pass (imf04.hostedemail.com: domain of broonie@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=broonie@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722517026; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=U9vHT9zxgnS0eUv37rwjV5gX2a+cK7BP1kcetq3hAiA=; b=jpFqcZv4QQkLBWk79brr4f+3/Yyj8XoYcQ1lOcbDjRcqZWn/9tYCIL5AeUE/XRn2NSZb9E M6bDPpC68z3iCGm/8wDXIrCmUXw/kwbnxGgNXhZS4wylgu+ZBjzJzAg6C8IybTMRFWAiu8 vCVLxjx8s76uCJOU+J2wSOhgpsYMWmM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722517026; a=rsa-sha256; cv=none; b=acXIC37za45JOW8vYihqfIaxRRd3R4xUBYi16+1Rxh4VSql0OZZ9RrcAM7hYDrHfyRsD+l qeGaT9GPbkmdHkCzreStbxL18MLNFcd/OLUZeM9btMXro4aFrqy1bPCCitA0GsqR7kT6El INDmuk3vgYMwPnXDmUfCkaWOeY7pWCw= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="Nmdd/qNO"; spf=pass (imf04.hostedemail.com: domain of broonie@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=broonie@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 2D5416288A; Thu, 1 Aug 2024 12:58:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 805F3C4AF09; Thu, 1 Aug 2024 12:57:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722517080; bh=mym7o+ur4BbRj2ASFXSNRXGOKmfB+ZB4m72hLojRIa4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Nmdd/qNOML0/WPSvFlhfPlPFhdWGDTeOehxKcqEpf3pUgk0DTgPcT6ho75GI2cH9s V9oFZAomCWM0OIH2upCKRhoVP+5d6N4VQz42KdMbbc4TAEQVeCDdkKwlswhdSkRwAr FUwVvQ9Z5lz/jE9sI8/DeuUqEy3W8GI6QftvN7ZtKtjB9jUws7JBoCyphjvomGDTE+ gFO4dEugK/8+qecErZI0sCkcKJEoS5uc/mfcjfIPkHNL3rO4K7sTrnouyFxgVR5CDL zLqVRlTkVNLsVVadLPewREgLENPUiZlzlh8MN1E1K1yocY/aH4Wimxuz2auCxdp3l1 Bpq4xZ+Uo4Upg== From: Mark Brown Date: Thu, 01 Aug 2024 13:06:33 +0100 Subject: [PATCH v10 06/40] arm64/sysreg: Add definitions for architected GCS caps MIME-Version: 1.0 Message-Id: <20240801-arm64-gcs-v10-6-699e2bd2190b@kernel.org> References: <20240801-arm64-gcs-v10-0-699e2bd2190b@kernel.org> In-Reply-To: <20240801-arm64-gcs-v10-0-699e2bd2190b@kernel.org> To: Catalin Marinas , Will Deacon , Jonathan Corbet , Andrew Morton , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Arnd Bergmann , Oleg Nesterov , Eric Biederman , Shuah Khan , "Rick P. Edgecombe" , Deepak Gupta , Ard Biesheuvel , Szabolcs Nagy , Kees Cook Cc: "H.J. Lu" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Florian Weimer , Christian Brauner , Thiago Jung Bauermann , Ross Burton , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Mark Brown X-Mailer: b4 0.15-dev-37811 X-Developer-Signature: v=1; a=openpgp-sha256; l=1421; i=broonie@kernel.org; h=from:subject:message-id; bh=mym7o+ur4BbRj2ASFXSNRXGOKmfB+ZB4m72hLojRIa4=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBmq4YKMuPchzO3os0nL3U57pumieXoSD2PfbwOG1FY wWpxjVmJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZquGCgAKCRAk1otyXVSH0JfMB/ 9S5qc+5UJ2Hq5Hh2gJZcqt5fs4hfsdHKXcwoKtpDSOxKNd+hIU23vQ23YrI62hlWogX++fZin4QYDT GOcCwT/cOUR3m/dL5FF4voHeOJTl2W7yFsUbSOey0f99FxqtjXHVe7w7DQvQrId6oU8t/lAsclZoHZ tQD9TJJJqolDvO5HE+DQ0fTh6WL5GECumUAW3lISgxymu//DrManuyXVjRouei1rgDvaJfd9mEbn8K hxDJrekIwc19/h44xJDi+e8sukKdHBCB2IAe8SSn7rqTq8apK5NDjamIvd72m5sbmWMbwAdHsJAqjc 1iMoQNDdS3yVBU5/TM8YlURU/7VMsc X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Rspamd-Queue-Id: E688D40006 X-Stat-Signature: kb564os9tec39aw8cro59eak6topsn5r X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1722517081-993862 X-HE-Meta: U2FsdGVkX1/fvi4Zu3esGzlW+uXnNvn7Pdrp0E2qT0GYaOOP+AdzD6caug1VfSm3gqjXq3FM+Zo+4gg3yzRFwUQe15HXAU6I2LCZELKVJlMxsmrUepZ8rIFIbS/AbUK1OTiR3uJlzJmTCta2ZmTYZ0DyKHnCmwluOgeygCE5x1C++ULWUMHR+RHDBLDnZ+0PNgCa3WOppnMq6cLdxZNxSJ3YjAKHc+yb4CfwU96FPIkZqZD0OMWmNFIA5ckGpfvd+W5SRKCCN/b6dZ/kpFfej8K1ILmrAkahgyIfgWuYZS0Qt5vVTNPGyieBWIfsjNQu03RStRf3AywncJJMbK4ch7QBV/QenOnaqZmGq4SBf1RRrxosG/0UZ5eJkk+Aqkw4KGx65VBoAT0g5mgh36apukGtCbQljAL8PkjehX1V7NmNjoA7lT9POppMoewGt0TYLx9vx4LkY2cno/IK5FjDaGn9Uz/Sjnl2XlZHIM2T4uCilVItxsK3doEvI17I9s5ady3GqQp8P9Zr1ox3YzkAc4KBI+5acSh9VFzEIY1aqruFLrLtah33Fer0eTRRUlFES8tWbrqzDQ2Ev7L194jVmDC1aDwReZgBsc9TXJQQEFVl/kfyB4QOv1Q4TYuJCBsO3ML+8bDpzQAMOdwzP/b0Z6UwV0nAPzCHFs9hINg5d3JM7ltBTCyGrV04V5Sv3ZfrLopWVJhs8jqV1qNPrTsYZS2YFp2ixQVxGCD1Kt4GoOeHL10pgvsqgTMFIdJfzuH7+PGGDuDaTK9c/T8pDsvgjHDCifcWaAD6VB1OyedHGNOVEkrGav+HxLFibxftRYbRFExS/4yfaMKlruL1OdWpfsaZDsASzmX1mGsw6ae5GPKs960IA6IuFhJ1mXcMluc4ORgd3PYjE4dbXVZA+phjC3ugmXXbz6ioN20DULPuuWUXCcdkQq0KjY42M4GWxLG1YNYAvq7XOBpiajKu1Yi 8PfTiSq8 SOXgVsTcJccaqBxjFgw+uJ+5dGAsN6vxPF+MUmLraEF1+AuM0QEP9aHeMUsrv8gBw6YpoQpXeGfdpFF/effgKpzuUAFXRz0XeCXx7NWTBObraeU4uvvHv5eJs4LCSuX38fNmBEmsRCYLBfEoZavJSfQupTvvr+ek14RgCPybc+5VnEQzuHwOqh2r3O/xr+q8P0A8HYkywbsPLU3IWTxEfv4Sw/pLxdIgI4SbTUJFrJXMo0oNLtxAdQcagTCx8yQWNehVxgpIUPy/uGuSsz9YqfyI97vO4TTOi+Uoqwp1CQXxDlKiRxx/nF/njgXBZZ7ZSQOIb+f7GHUWeJ9FJmnevUMsrcIqNs+lpzxEx9nXFZyzdubIwTyF8B+iDOk7B33tHcpqz X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The architecture defines a format for guarded control stack caps, used to mark the top of an unused GCS in order to limit the potential for exploitation via stack switching. Add definitions associated with these. Reviewed-by: Thiago Jung Bauermann Signed-off-by: Mark Brown Acked-by: Catalin Marinas --- arch/arm64/include/asm/sysreg.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h index 4a9ea103817e..b8d8718a7b8b 100644 --- a/arch/arm64/include/asm/sysreg.h +++ b/arch/arm64/include/asm/sysreg.h @@ -1077,6 +1077,26 @@ #define POE_RXW UL(0x7) #define POE_MASK UL(0xf) +/* + * Definitions for Guarded Control Stack + */ + +#define GCS_CAP_ADDR_MASK GENMASK(63, 12) +#define GCS_CAP_ADDR_SHIFT 12 +#define GCS_CAP_ADDR_WIDTH 52 +#define GCS_CAP_ADDR(x) FIELD_GET(GCS_CAP_ADDR_MASK, x) + +#define GCS_CAP_TOKEN_MASK GENMASK(11, 0) +#define GCS_CAP_TOKEN_SHIFT 0 +#define GCS_CAP_TOKEN_WIDTH 12 +#define GCS_CAP_TOKEN(x) FIELD_GET(GCS_CAP_TOKEN_MASK, x) + +#define GCS_CAP_VALID_TOKEN 0x1 +#define GCS_CAP_IN_PROGRESS_TOKEN 0x5 + +#define GCS_CAP(x) ((((unsigned long)x) & GCS_CAP_ADDR_MASK) | \ + GCS_CAP_VALID_TOKEN) + #define ARM64_FEATURE_FIELD_BITS 4 /* Defined for compatibility only, do not add new users. */