From patchwork Mon Feb 10 20:26:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 13968601 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 B8AB4C021A2 for ; Mon, 10 Feb 2025 20:26:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 45387280014; Mon, 10 Feb 2025 15:26:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3DCAF28000B; Mon, 10 Feb 2025 15:26:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 25804280014; Mon, 10 Feb 2025 15:26:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 026E628000B for ; Mon, 10 Feb 2025 15:26:52 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 825B81C765E for ; Mon, 10 Feb 2025 20:26:52 +0000 (UTC) X-FDA: 83105168664.07.FD86AB8 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf22.hostedemail.com (Postfix) with ESMTP id 96842C000A for ; Mon, 10 Feb 2025 20:26:50 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="Xf0V/y3g"; dmarc=none; spf=pass (imf22.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739219210; a=rsa-sha256; cv=none; b=uQIAP0+99p5QuedycZd/r/jFUOylo/Mam5puQRUukVwMkUfSz2XsQ2/LJZq2wrs4y2rhRQ nt/v6XbSQgRElPjaVorFH74+EjbNPgkbFUo0i1zZiyRVrBBRLBYZFC2OamzdkXseD/xoZY 0WjY9XF3Zo/5iNTio1PmMTnxc7LVrWA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="Xf0V/y3g"; dmarc=none; spf=pass (imf22.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739219210; 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=dbqILCM4sqAsqnZWR3n0haWRm4rdBukz3/+QEOiXjzw=; b=I3yTvjZfksKwKiaaKqFkXliiCbZdysKRnPJzdDEIvbRsizHkq4uMCWtWwNk4EecSjp7aY4 6Ec7Ub6H23APBnLwPJdqvQq8Ju0HDedrYlQe3b7rg2wGDt3gxO4DuVgsmmH1pqbm9SkS9d FYpWdPyGe5+4ZQbEA8mYzuBijKO0KYY= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-21f6d2642faso58703165ad.1 for ; Mon, 10 Feb 2025 12:26:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739219209; x=1739824009; darn=kvack.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dbqILCM4sqAsqnZWR3n0haWRm4rdBukz3/+QEOiXjzw=; b=Xf0V/y3gRp2Jp14n4vG2v6eKhyPCNWEQbCxnhSK0NY1GHFAUXyLAvez12LZpG+Rvfr XEflpebK8+Ctx/fMF/GyxgEW6YvwFHd9Cvqa93pdXCx7VMQeZdc6Reo5ixnt7j46uBKz od4zPEp7vQtWnjM9xOO2tCouTGnAc9nJcSj0fJpVBRpVXc5k+ATjohMJszGdiHp8saAO nRxhRARzR80YoILC+/HsM2mpDXBfJEOeuqdPqFJ7tE0M7sqFw1SfrdHwLsoPjKM/BHi8 05182DF0SY/7pxwNCiq4+LFVWoZ91W0Smmj853YMh7lypkUATqHVFWbthCFa6cQBKExa 7H7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739219209; x=1739824009; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dbqILCM4sqAsqnZWR3n0haWRm4rdBukz3/+QEOiXjzw=; b=L1Yrw0lQaJrwkL0PEFQDg8LpwfQwPjEKWV6h61/uqTv84HOW8Jbi0ijoVM5I4JI0Xb vlO6FBSE4Nk+Jkubk20/NJVffWq3dcqcAdeRUed046znyb2So9wITUBTuorx0XPltSCn Id6gaVNWxfakQKnEf9cB31tIoiYeZTJdvD8Fz2teORWIJRehibjv1bbacNMmLQ7YjqkN RNc1sexau1/SfpWy/lKeT6LQTfFZdtGnyy/FHgn9sP+2KTQJ05NegxnPFRX4c6npn58p FSrINm2sAm9y6B46cKMvi7ewG7F9qU9iYJczl7sLDM8m5Ozn0W6yCxVcfejR5eFWc9FT irbg== X-Forwarded-Encrypted: i=1; AJvYcCVQXN7F6+J/JIMd5d18VH959bidOkl5UKVQEk6y40P/yVjELYLGggZcOaKE7relOiDVbRcSsEYvWA==@kvack.org X-Gm-Message-State: AOJu0YyU5lKqQEF/xn/H/wLmUnL/8gCWnlwh8iZXBkewyA2YKN6W3VDP w2l482TRN2V21mhBCpFLZpZ/p4Ylz10n5YUVEky9BNrZP+6Ua6mSvd1gCJ+IjanjeONMOZtN7dp R X-Gm-Gg: ASbGncuRzqTqUQn005MX3d6AELDy4WwQ+S3OMGVVszeKCeJF7myPXxVTTnXt0bIY7zD wgd8Agq4onEZgSBa4mPr3+dTqWC9G7Lv2x8uptP9cFLuEg8MdvJqNlfpICoKECE9KwwCVAs1dVW cV/mUxsCzAyWfOJBTepeEYE89CBqTrVg4NJJRsIZacOhxIOHbeR6sE8qVtjtWEllrigcUjFHMEn 5KRdfH6Uje7MyaYus/5y345G0LxeULXptJ5F3QrUFxKkSrWDnwPJaD6HjhnUg4TuV/QaT+e2j85 SEhRQb75XeR9dg56jm0M70KGEA== X-Google-Smtp-Source: AGHT+IEhZ3TYH/tcMpvG04g1Gw5nBcJh1Es1LXU8QZEq1VPJSIGDwObL506BPg7EHhAIxgdRzRFlCQ== X-Received: by 2002:a17:902:c40e:b0:21f:1549:a55f with SMTP id d9443c01a7336-21f4e6c0f49mr269385645ad.19.1739219209495; Mon, 10 Feb 2025 12:26:49 -0800 (PST) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3687c187sm83711555ad.168.2025.02.10.12.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 12:26:49 -0800 (PST) From: Deepak Gupta Date: Mon, 10 Feb 2025 12:26:36 -0800 Subject: [PATCH v10 03/27] riscv: zicfiss / zicfilp enumeration MIME-Version: 1.0 Message-Id: <20250210-v5_user_cfi_series-v10-3-163dcfa31c60@rivosinc.com> References: <20250210-v5_user_cfi_series-v10-0-163dcfa31c60@rivosinc.com> In-Reply-To: <20250210-v5_user_cfi_series-v10-0-163dcfa31c60@rivosinc.com> To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Arnd Bergmann , Christian Brauner , Peter Zijlstra , Oleg Nesterov , Eric Biederman , Kees Cook , Jonathan Corbet , Shuah Khan , Jann Horn , Conor Dooley Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com, Deepak Gupta X-Mailer: b4 0.14.0 X-Rspam-User: X-Rspamd-Queue-Id: 96842C000A X-Rspamd-Server: rspam12 X-Stat-Signature: ny7zuozyzbp4ai1i1sw5e1jd7gzdmues X-HE-Tag: 1739219210-368533 X-HE-Meta: U2FsdGVkX19+k4axP5tewE79r5qVutGzAbTGcF0qy6VACbQNc/++A1b7n9CKcv4JcpCNBCbmP3h+2yz7DDCUIWcGBrUYHMOVQWwCheaBk8TJdfNKQLi6TYBLAVF5RYsPRpeTOsVnJhYb57wiJphv5cNKZjIHUlrMAUGUUapH2YVdYwRF2hPt5dEVelZAXsdmh5iSzhCPFfDASi/KUdMOTrmLoN3RyW5xmy1LBuWzrWWPk88V6F/d9JQZ3QY4E5DZx3cFWOCgALbxZ4l1EAbuWICx+FI96xGQ/Z/tKv1V3oy+Aql3CvdQ8PqXU7vnSGkyCCdVbBWQ2zAkyNeGSOaRG7YZnMdZ/TXxVymPvaBckwui4qXC9Qxstjg4Gak6xYITxO/rzXCn18kkyKA2xo51V6ZXKxBVIZBxZLeded8aCKHbAlZrhE3VrolhAGWZKiw59IS3deQ61Seuc4kL5Z7hjMfkp3mFED8sPwiU5cZ0L1qYguLykP+5xUQicZSK3G9I5yWcMi4czdWZ3MPLd0msSMyJkSzCGYIep0YZRGAXB/MsZHHFeJY9pwoZd1uCoOfp3LZ/Li/IpaN9vZF7kc8YOi5AuP/y2XNuDWzW9YW9OyJ6bQlFf1qYuHXied5GqER4CfPaiJThyKQrNOpjghPQBizKD6bgaN81LzqwOv38+gNDXb75owVo8KvsaTQkGdLlYysteW6/Sj1dEYV7BTEZFNWMsjPsVNeJrwDPt5iymu/ATZtry7oC/944HQ1hZu8SoT3rL1lE1llHdCknxU7eL6vlJcCEeBGltdFH4DZ5At7w0lSoCl2s5JnODEhdit9wwAYIgMIp88TQoqcGoiVADhA8m6fhd7dKM+ThZCwUjIdGYX6HVlEqEbLA92y+l8Uj9KAn45XfRDm9FbIhwkYurp3muGv1+P12JyqrSBhk2VObodr7nxh66dPYxpt+uYVOCXFkjoNuh1ZjpwgFvo3 c/vGM9qZ 2pzmoUppWsIBko31CcSFQdiCxFiInVlP6kkXr/NNaJJfB2+Uxx4c2uyFFSw2QS4la4nvT0svU4b95WPURK6zNelrmRSO819/1j4nOF2udpsyKGtCv7Vp+ovlFIC6hksoM22uqvedRiydYqJ0dyM6SqoFf8yE4qGgqggOkPRzj8tAY2PHL+YRrZFYVwEP9oIypJgtqJo7Z528vkyCf3pPMaNgMAqVtfhmjb3mi8i+asmnxx/Zj/eqCmlTc7sqgQS3Y3sCHbKEDwUpRrY2HEOJB175i+Nqz8ItfwviYie+Y1pIr5+osrpTHlG5t+aInzhikYwggIgO5P4H96p2yzjP9V76FaZhtL7qewip2SsAUr4ajAqqEKPn8hzXH/fQ5tBZJQQVuvt8M1jORuoDJvCnpehFSg/cCVS9I7Ep5sWOQR8NJMSq8uyieZBXNnt0rkG7OQ0n3csc9Dl5uDifjmiZGQw1uo5/axVEQA5gaoO1Lwv+Bo19mofU9Kca/yA== 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: This patch adds support for detecting zicfiss and zicfilp. zicfiss and zicfilp stands for unprivleged integer spec extension for shadow stack and branch tracking on indirect branches, respectively. This patch looks for zicfiss and zicfilp in device tree and accordinlgy lights up bit in cpu feature bitmap. Furthermore this patch adds detection utility functions to return whether shadow stack or landing pads are supported by cpu. Signed-off-by: Deepak Gupta --- arch/riscv/include/asm/cpufeature.h | 13 +++++++++++++ arch/riscv/include/asm/hwcap.h | 2 ++ arch/riscv/include/asm/processor.h | 1 + arch/riscv/kernel/cpufeature.c | 13 +++++++++++++ 4 files changed, 29 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/cpufeature.h index 569140d6e639..69007b8100ca 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -137,4 +138,16 @@ static __always_inline bool riscv_cpu_has_extension_unlikely(int cpu, const unsi return __riscv_isa_extension_available(hart_isa[cpu].isa, ext); } +static inline bool cpu_supports_shadow_stack(void) +{ + return (IS_ENABLED(CONFIG_RISCV_USER_CFI) && + riscv_cpu_has_extension_unlikely(smp_processor_id(), RISCV_ISA_EXT_ZICFISS)); +} + +static inline bool cpu_supports_indirect_br_lp_instr(void) +{ + return (IS_ENABLED(CONFIG_RISCV_USER_CFI) && + riscv_cpu_has_extension_unlikely(smp_processor_id(), RISCV_ISA_EXT_ZICFILP)); +} + #endif diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 869da082252a..2dc4232bdb3e 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -100,6 +100,8 @@ #define RISCV_ISA_EXT_ZICCRSE 91 #define RISCV_ISA_EXT_SVADE 92 #define RISCV_ISA_EXT_SVADU 93 +#define RISCV_ISA_EXT_ZICFILP 94 +#define RISCV_ISA_EXT_ZICFISS 95 #define RISCV_ISA_EXT_XLINUXENVCFG 127 diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index 5f56eb9d114a..e3aba3336e63 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -13,6 +13,7 @@ #include #include +#include #define arch_get_mmap_end(addr, len, flags) \ ({ \ diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index c6ba750536c3..82065cc55822 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -150,6 +150,15 @@ static int riscv_ext_svadu_validate(const struct riscv_isa_ext_data *data, return 0; } +static int riscv_cfi_validate(const struct riscv_isa_ext_data *data, + const unsigned long *isa_bitmap) +{ + if (!IS_ENABLED(CONFIG_RISCV_USER_CFI)) + return -EINVAL; + + return 0; +} + static const unsigned int riscv_zk_bundled_exts[] = { RISCV_ISA_EXT_ZBKB, RISCV_ISA_EXT_ZBKC, @@ -333,6 +342,10 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = { __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xlinuxenvcfg_exts, riscv_ext_zicboz_validate), __RISCV_ISA_EXT_DATA(ziccrse, RISCV_ISA_EXT_ZICCRSE), + __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicfilp, RISCV_ISA_EXT_ZICFILP, riscv_xlinuxenvcfg_exts, + riscv_cfi_validate), + __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicfiss, RISCV_ISA_EXT_ZICFISS, riscv_xlinuxenvcfg_exts, + riscv_cfi_validate), __RISCV_ISA_EXT_DATA(zicntr, RISCV_ISA_EXT_ZICNTR), __RISCV_ISA_EXT_DATA(zicond, RISCV_ISA_EXT_ZICOND), __RISCV_ISA_EXT_DATA(zicsr, RISCV_ISA_EXT_ZICSR),