From patchwork Fri Mar 14 21:39:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 14017490 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 5EC51C282EC for ; Fri, 14 Mar 2025 21:39:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 72138280012; Fri, 14 Mar 2025 17:39:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A8F7280004; Fri, 14 Mar 2025 17:39:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4FF04280012; Fri, 14 Mar 2025 17:39:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 30AE7280004 for ; Fri, 14 Mar 2025 17:39:37 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 161CF161614 for ; Fri, 14 Mar 2025 21:39:38 +0000 (UTC) X-FDA: 83221473636.14.CD14E8A Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf09.hostedemail.com (Postfix) with ESMTP id 293DE140007 for ; Fri, 14 Mar 2025 21:39:35 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=DhD5unA7; dmarc=none; spf=pass (imf09.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=debug@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741988376; a=rsa-sha256; cv=none; b=oUM1haORjz1SnbF3QUKT2MwMQTu2CsMnSMFfhN89Th6qhsTns6HPnNjR21VFIoo2AYd0iW RF6GHly0PhMj/TnzSrRsol9FEq+GV0LSyzrMVjjhobWWzPY95gT1EaXejjxy7Gx/mI6Iqy TOAHEb2ttMs63EzhngSWz9aRd8yfyQ4= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=DhD5unA7; dmarc=none; spf=pass (imf09.hostedemail.com: domain of debug@rivosinc.com designates 209.85.214.182 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=1741988376; 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=2gHC+OQH/HyLVaEB8d5yyptpM2IOJ5Z6rZqVaRKPZQE=; b=kUSf3/2eQjw2s9siX7DXgNEf0FCoVeZXMpppAT2RrNFuOefhk0l1fwVHPCUfk5uMPJW0PZ HZfpAgnXuCnW+hMd33YirOEfnuIRaTqL6LScHVzuxKe1p1OqL7zaYAQ07Mv1LCRPkHDEfu dgtrRTacIM3wfgflo3V3ZS/rgEieTRI= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-225477548e1so47277805ad.0 for ; Fri, 14 Mar 2025 14:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741988375; x=1742593175; 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=2gHC+OQH/HyLVaEB8d5yyptpM2IOJ5Z6rZqVaRKPZQE=; b=DhD5unA7bws7/PA5Kpn4/8E4uLhbf/+5cmYbstja19O3mwATWBjnBnxxBXKKlAImNG hdIRap60klUrD0ShYoQZQDhjw7Q9Z9SHtxOgUaoGnecHiBI0uKuWJ/joTwGXjrpdTMZB K9HKb0p/k8MmHyu7QwubXmSglEwB7JGdf27VZWZniIQwix+u0yA7q8izcAY3Zv39Uuaz Arp3wh3jKZaG6/8NMQLz/0icb82K0X9kRp2Q9CMHthIR+HozyFyXBcgw7Yp5XJ7MsaWO UgEiaDGYGmGWylh+IlsI8GOCTcz/HO8YLNI4QhBLAqUWquHemItqkov4WMhmrh7WmjOb I5Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741988375; x=1742593175; 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=2gHC+OQH/HyLVaEB8d5yyptpM2IOJ5Z6rZqVaRKPZQE=; b=tfGhRf6KsHnCiNq1fLf27lCX5QeD7akiUPM5NMKxMuwkffmCLDnKeaF/3w2DQvsw4M 0TML+8XYt8VFrtnKsvyCRApkwMLnmS9sCediLyXczqzAGTS+CvzYZZXd/5W9H0JVeN4s c2SV38e0jv5hw3PKjYpSNKggWYssw/k3DCDsinCV5KT5z/YnTYmzGmdatGs5NA2LwV8u kW8HeQezZQA5f0s9eF6kQ+6DxqrwDi+le6eAtEL6tzahQXj1dup2HqruOvrs9izyDZ/2 3e6qShK2+2bdA8a0zoPIqsfJAdTLzB8zgNKWVifiYnpsFjRkYJ6JId4ZZJBOVNDV5xQQ gq7w== X-Forwarded-Encrypted: i=1; AJvYcCVTqmJhqiJVUc3mgPP/5KpOaF/MTw5XMvQ0hJzPdb338DqprhFZ+26DXJ7ZFW8WDiJVr5Ra+dqgOw==@kvack.org X-Gm-Message-State: AOJu0YwcecZACCMuRv+vg0Qb84i26UnlL359VLyS3s5HSFVqKwIaRrr+ El1Vg220+tLmgjI7DzYHNcTQvIgOQcBqvomRrT5PlsKaHXyrs9KYuCEUdX4LsoU= X-Gm-Gg: ASbGncuq8kjLb0KHN+qW5GeizUM7KLOIbYQrK4ccHcifrtaivSPI6YgMebjfMv+Lvjd gj/tetHj4dxeaDfRjEKNBf2ST7Wr348a85bGD04l4X6NspAP1Wnr4VH1D45GGJI69y1atwZIwnP XT8tYfel5IqWFu/csNgFr5QTo7IPVoUhKhU2dg004Gf4TAlV5DB89+Cx9Uvji6TVYbRl1RdpG2p rpTSbMqniKucGyUwiU2GEYA0kdHZUq7yPUd5jS7SLO6Wbs3bGuFIul9UhlFce23eWXMiJJt6Wi8 7m/xPazvri1SSX+3f6fsfy/mMRmMuU5Hl+BuqWq6BDprWfLnvwG+1Y0= X-Google-Smtp-Source: AGHT+IHvHW2W/QvmAtTQpnpsWWRaM1HH0j3AoAcqaAS/SF4n712ckDXuPjUXwXP+UZCTKkiG9rvh0w== X-Received: by 2002:a17:902:f54c:b0:224:1935:fb7e with SMTP id d9443c01a7336-225e0a75439mr57801355ad.24.1741988374981; Fri, 14 Mar 2025 14:39:34 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-225c68a6e09sm33368855ad.55.2025.03.14.14.39.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 14:39:34 -0700 (PDT) From: Deepak Gupta Date: Fri, 14 Mar 2025 14:39:22 -0700 Subject: [PATCH v12 03/28] riscv: zicfiss / zicfilp enumeration MIME-Version: 1.0 Message-Id: <20250314-v5_user_cfi_series-v12-3-e51202b53138@rivosinc.com> References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> In-Reply-To: <20250314-v5_user_cfi_series-v12-0-e51202b53138@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, Zong Li , Deepak Gupta X-Mailer: b4 0.14.0 X-Rspam-User: X-Rspamd-Queue-Id: 293DE140007 X-Rspamd-Server: rspam05 X-Stat-Signature: 1ymdazbshmz3naz9cn8m4c89ncfkfd5c X-HE-Tag: 1741988375-305199 X-HE-Meta: U2FsdGVkX1/5rKNjQ1g5IIA45BTc4J9HUbF1V7sGE464NKNsOsIymg5W5L6zxe+oLZo8xZCAqPzHVlo/tGmaHcjW0yUmV2LPA04UJZgEI7BdZmhMs9Vclz2f1ve1tNmRxFtSq2t1xm7BFSOFVmu6RK12hsgp2iWVty1oouDS8bD6pqHUAdQBs/m8qEi2i+c/zAwWHALv+Wul0hYLNT9AkKKx9lG8ZcbQSkrorYoMUaRX4AiM/5ZnWNwQEpyCoWyQgZuy4QhuOn7+i5AUGmZURb8yuipfXrmBxquDsKvdDQeYUeBtLNaIfQxzJn3b2maUs0D4fFLbxfmC2kPWQmNbq8yOqk2SzaZxHErEVW8D9AiJoh9kfOA16ZGGY821Z8CQEdQLLeOgxPPNXn35LK7oo+nixFWdlCLHdVLBxRsaqEEej0hqKjaCQwiA7gFiuy4MVTUpznZSRxCmuHcXXiFF0H81r3S2uNHK29bdf1OcAHvrl3GFkrIG7qUDLb0Zn9E42jw/DuKGmKwFqVNwouAvAY1tCqGgEHJXqGJqrA7Zt1HLe925RuxayepDcL0sNSVWeKoC3U0sDuj5VJ8nqnqhygeomH8FKvxRWgjWhghjFMYs4emoEKH+00P+A8UVhgmFJkUNmIXVAXBnIdr8xSOulBCgYynw4CM4wk8eU4H+8QZWb7tknk/kl2zIEKEcxZ5LrYukXUTtk/WcbYkw/YpmWkej2An2Qd94ISDeO31+TViga2M/CaPFBuI5HcxCyFAm8Q6n0mgHnNgUioKrH48jIH064UuNX/7yGxfFPYrDC4SZ5FuhtmusTqW/8gLjT7E4tIBB9OerZk4VvQh6UxcPSGcH05LN4UPgYkKRnlX5Minwv9DOWT7CroXrzaP5NSznQq8024C5xQdM+/IIwy3a/RRJTvs8HoHZ0J8l7/2IQukf25C6KYl9kjbAT/ATlAcArp3AXJN6Aj5evO6a2Xm zDtNWGoa HqPbb2sPysOpRzNl5flDqZ5I3kd3Uxjo1kbHgwAgu//2vux1Tc2K7TFjewo2ePtekwJ7M+XYrcJofR/EFacVRWl3KSv3W6aRR597o6/aHuiiI22vV8wFVTPiRHckDv0MVc3ajI8Q0SIhICfg/qBvLgqwfs+66H48XVzJR7QZVfXFKCFSRlib+RkffjNYksRrL6jlUfm4x/ID+LyDK2BBvor7trgOItuzpYlsgT4VfajvaBaD8Z7eVO5EZ20Jr3ZEMgsSFwcYM00MgSMwwVYx25SDxVYoznjlnKgFM8IyGAxffUxdaqKAGEwgMvC4yT4pDLScbIeIFX/Y+AqzkfK+BoHK1VwJloZvESPcGyiPEjKikUFxcAGQnYaeTu1tQMvjvrPV9UFiya8/oky/tm48WuOfiCQFGo6mPSQ/E/In4xH0hKrH5spEMf5XKDVLCVdokmPa+8fQuaxqaUd7QZliSHaWgVZp65OHokATghJ82b5hGt3PdyeCq1UfHqub3BA7SZMVkEE47zWC7O/w= 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 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),