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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C0FBC369DC for ; Wed, 30 Apr 2025 00:24:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 80B786B008C; Tue, 29 Apr 2025 20:24:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 792C46B0092; Tue, 29 Apr 2025 20:24:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5E4726B0093; Tue, 29 Apr 2025 20:24:23 -0400 (EDT) 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 31E666B008C for ; Tue, 29 Apr 2025 20:24:23 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7E27FBC54F for ; Wed, 30 Apr 2025 00:16:38 +0000 (UTC) X-FDA: 83388794076.13.71D2192 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by imf06.hostedemail.com (Postfix) with ESMTP id 93E3F180006 for ; Wed, 30 Apr 2025 00:16:36 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=XoNeG17q; dmarc=none; spf=pass (imf06.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745972196; a=rsa-sha256; cv=none; b=UtsJIcRTtzjvCxRnBt1jGPFICGACWlTTyOuIvPEZpGb6dHTdr7iGNnfSnQLdVDLq/+Z8dL /3EU3Ktfo58duOWedcBfQw4+cvHrfe4az1vIWG7gRH6QEpZY35ieC1LHbsx1SrCo28vTT+ 9tIT8In6+S+ej4QIfBv4iUUA/xb+Jjs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=XoNeG17q; dmarc=none; spf=pass (imf06.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.177 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=1745972196; 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=Kv/IZrFWN34T6LwOeKmoAZHYNOr2b+SAEf5j5mwxEcc=; b=62nBlgJHC2+WbZP12KYQNVJ3qNqaZfyasaXszDeN8L2x5M659p6MVobC9zr7NW6ZM/S+cY VZJ7R/6AixoNINP1J3ssYl9LbOrcA5ctSzDD7kFTJYTQld9PTDPXcXco+FbrB8L6krtPtf eynyMbq2Qspaf4QdVUV6SOrwS/dAp7c= Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-22d95f0dda4so96378755ad.2 for ; Tue, 29 Apr 2025 17:16:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745972195; x=1746576995; 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=Kv/IZrFWN34T6LwOeKmoAZHYNOr2b+SAEf5j5mwxEcc=; b=XoNeG17qEA73/Gt1tfsQVjRAh6EON77/zETOGftPP7SDPcHTwHscY7W5u/o7sBIswf Z92trE/Mm31aHTAEVULU0I6yJ3u604CIcK+vUWQ3GqMNqTfhO7EvViteQx8PvqAoKSqI GX9N0qLdfilQ7VI7KX6YWYwuJLi640vZH/rsZ0P9i715Oh3smAmgSqhjf89kHUwu+Cvm RT9xTXXwYmz3ysx1fCvKU+0e4n60uui+V9p6Oq5mBZbBjpTsKekLP+Tgw7Ium32dPs2j tX9bB/+XTgeZhiDYzO4qvL8dJC4AB6l5QNHFsDmZKK+UsZIIMrETQMVNxGVS6CvXqph7 rKTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745972195; x=1746576995; 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=Kv/IZrFWN34T6LwOeKmoAZHYNOr2b+SAEf5j5mwxEcc=; b=m+wkTfMJJ5CMHVHtdwazyvT2hK+ZLWuj07yMlLgg7pAV3vXyzXoZDyaaOVc0iYDK85 9xyyx+4xtAafIGpGEsFRMYzVp5hVidS/rAAZPR/wkwigzyCmRT6RaVoaI0H2GkRE9eRc HW9JJjdfhpEBA2tkZvVEt1cBM4hD/8Y0Q+t+5zHwESrpTZ41Q2sbuIe//aVOcchgy5Mn 4djKt3iuf4uTCKiF1S5n9x3ODFtlZeM4iUX7SHLb9t+QRnpeG0z8mE0YUHDJrCWxZThx nO74WNgSrZDOTOXfZFl9wgCBOBGxC1LF7vqroTpWS1Z3Lm/srEng6kyPtUZ3/hU2l5l0 53oQ== X-Forwarded-Encrypted: i=1; AJvYcCWulwHGFurClbzHWPN7Lf50KX+EnGwGs+t72EXI1G/g/FHZoOT9d7n20OXFiryoWxJ4JiBnnDi9fA==@kvack.org X-Gm-Message-State: AOJu0YwKC10m9RpsPZUo1FREw3WA90GUTe6tlSK78FcpimCoccnbZ3EI CtCA7GVkcK6jtaabTQLxXJWLbms2Vk85MIJuAHJELoyNmgpG350qEA69LRvxao4= X-Gm-Gg: ASbGncuDWqwZU22f1INjMPKbMMhUpv06rU0llyFVlcmX3MFfQzdpLQKs3Yj3++KonAe BzOL4jOEJReUcRnr19iULSWC3Zlo8ecfmYOHsZTVaDCEka4apBD/+HRYvTtQUUdZ2Y0RCAWsyLP lXj96miaUx7sPxKE20Ni38bDa17PX5urqH56+adEJVV7H8mR7EYx6E/Y/4/5qoTCon828btjffE YAgVV5Vqk2eSuJz68c9tC0rz2yYksJ8cJVUE7WhFw6yuDb6SSfoPEbV7kFMtYAjs7TIu2uCu1w+ YkIoaXu0CqOcsUKEC82r24BQ4UgWiBMUHJqsunrwQi1hFtOdkyKgdHIEakdFAw== X-Google-Smtp-Source: AGHT+IElTpm1m59BCiMYV66Qwl1bIP6MumvDjXe79sV2QfTXj47VxQa3ZP8qKREhDRx3opT6xCz9bg== X-Received: by 2002:a17:903:1b0e:b0:223:6744:bfb9 with SMTP id d9443c01a7336-22df359c764mr20042105ad.41.1745972195360; Tue, 29 Apr 2025 17:16:35 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db4d770d6sm109386035ad.17.2025.04.29.17.16.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 17:16:35 -0700 (PDT) From: Deepak Gupta Date: Tue, 29 Apr 2025 17:16:20 -0700 Subject: [PATCH v14 03/27] riscv: zicfiss / zicfilp enumeration MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250429-v5_user_cfi_series-v14-3-5239410d012a@rivosinc.com> References: <20250429-v5_user_cfi_series-v14-0-5239410d012a@rivosinc.com> In-Reply-To: <20250429-v5_user_cfi_series-v14-0-5239410d012a@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 , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross 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, rust-for-linux@vger.kernel.org, Zong Li , Deepak Gupta X-Mailer: b4 0.13.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 93E3F180006 X-Stat-Signature: n9nkbh5umsidn1scsaj7dwq61gut3j6s X-Rspam-User: X-HE-Tag: 1745972196-107917 X-HE-Meta: U2FsdGVkX1+mJ2ntAzKDi6olxnO9pqDoW4jt7erkWKh2jvDIP5FaxylDfA6IiIu11e8jHddthI6TLIg6CN4ftHJSaAhzgEAA/lxsNtHmM6/NpL4PpkFFWvBoZSYovDTTqYhX1AYw7iadGVTSiumMNuHumwvMaVNv3Z9oGQ6gCkoIUXEJlQMHXrt/SvqRaAgQjRfpXC4FwZfRBpcw6djZGY/a2RpQifhru32A1lcJ04h/3JIgYDoKyro6XxDwwIn9RjNRfn/WDLDIM8zFZ8vhXSqnaXH7f09qSuuKW41sGkjSFtEwH4gxrYG1zMQOYKnylKTJyZ7ZKHaJ+ZG5O/li+K9Ey+bplzGh6p9VrtWI+Fc7iM4pSxHTQefIHwgd9uHikesmYJBiYZoKpcrA8jLxcxnoRKnnRJXZ0HRC4aTts30xJs4tMlQiaJSWlxus73t6DMSbDbmX7JjTo0gUJ6FHtmJbytRPZ7pqhn93MmIEIdfjxKdPer7ypoeLMgU+yl7xEbJIILahXlDsbqXMMhtgWvHI4p65WwpcohjoTtYLhkuiNxvDUh2thxmXGT759fcOT1SVh9j2h/N0Ks+SAYYXsxtED7URzKoDo3pcx4U8Bk5Ey15qs1/2vFThAradS397HFcH1wlJR1qYYI6MdSCEpC3UysTV7V8vVuPTM9cQOll8V2o0/ygAhAomxf95rQNgO3c6uiYPvFRZyGFp0uPG5mcceCnzbVnTEbwv502bGV8AKQ9n8vqkKacjzfcf+QrpZD8FXIkD+a/Nd0evy7dm95f/j5CLAVnl5DhHg3ZyAbVXyFIzIprOcpG45j2kX0qkIG5o6yqTlK2vLjyZk2P7vGer2TgA7WxZMLGq9IYQx4idjYGiqsqhEzH46qUbCmvbXd4cc6xIJ7ZaFp7l+VXzBjVF0sqDzYOOKO35JiMDEDXty3TG16ltFTyHOXeEuCypFFUyYluu4Q4hR9FUPin xrnycJGu MUPY4unygDrazh94/Xb2n48kdc7OgNlTG4AFB63RzEXA78HVv0hCib2HAjPecihV+h4suWo/L6/NIc7IYjGkLDCn7J3I56JhwHqEida7kw/Geavvz6lqWQQ2/7aSlE73+FbebhmKvR8CxiOZgsWYlJEN2muNvB8PaUCobp4LndhZ4tTUFMTigA16mJYgBmSB5+4q9AZI09ScNpj2Uv23UsjD3bThWTzfXDsH6mESE5rNS4jQVZ1hCzTQfKgN/DEBZoHL1dCyYj+1l2HDHLzZiRzfbC/YipJ2yEuIdpI0WWaWgB6QsZ3xWv/pnTz2mCKGUHDmazkDmIlYr1FfBxW5HYorqyd0Bb4F2vaIvzrNIwqGdHckBO3ZBE0n4Dzk8p1eYouZo3EP/qAfZ63XvkVqi0XL2E/B1WqBQMSqHLekFnna0fLaVl5vTMrVBKtFa6kxF+lWojVbfxAUUnTHX9qkRhtX/ypRYvIm+EWV5QN2g99OcfDdL/8z6AopCERzIGuaphFQpplPOdFiNgZA= 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. Reviewed-by: Zong Li Reviewed-by: Alexandre Ghiti Signed-off-by: Deepak Gupta --- arch/riscv/include/asm/cpufeature.h | 12 ++++++++++++ arch/riscv/include/asm/hwcap.h | 2 ++ arch/riscv/include/asm/processor.h | 1 + arch/riscv/kernel/cpufeature.c | 13 +++++++++++++ 4 files changed, 28 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/cpufeature.h index 3a87f612035c..100f4b53ba5d 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -146,4 +146,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_has_extension_unlikely(RISCV_ISA_EXT_ZICFISS)); +} + +static inline bool cpu_supports_indirect_br_lp_instr(void) +{ + return (IS_ENABLED(CONFIG_RISCV_USER_CFI) && + riscv_has_extension_unlikely(RISCV_ISA_EXT_ZICFILP)); +} + #endif diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index e3cbf203cdde..abc33ca1302e 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -105,6 +105,8 @@ #define RISCV_ISA_EXT_ZVFBFWMA 96 #define RISCV_ISA_EXT_ZAAMO 97 #define RISCV_ISA_EXT_ZALRSC 98 +#define RISCV_ISA_EXT_ZICFILP 99 +#define RISCV_ISA_EXT_ZICFISS 100 #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 2054f6c4b0ae..98e55467557b 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -258,6 +258,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_a_exts[] = { RISCV_ISA_EXT_ZAAMO, RISCV_ISA_EXT_ZALRSC, @@ -444,6 +453,10 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = { __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xlinuxenvcfg_exts, riscv_ext_zicbom_validate), __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), -- 2.43.0