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 3DCCAC83F1A for ; Fri, 11 Jul 2025 19:46:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D2AEB6B009A; Fri, 11 Jul 2025 15:46:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CDBCD6B009C; Fri, 11 Jul 2025 15:46:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA4016B009D; Fri, 11 Jul 2025 15:46:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A910E6B009A for ; Fri, 11 Jul 2025 15:46:26 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 507231DAA12 for ; Fri, 11 Jul 2025 19:46:26 +0000 (UTC) X-FDA: 83653015572.16.2F472A8 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by imf30.hostedemail.com (Postfix) with ESMTP id 6228F8000D for ; Fri, 11 Jul 2025 19:46:24 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=AWulUTnc; dmarc=none; spf=pass (imf30.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.178 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=1752263184; 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=R/zH7pR/lYDXTCsVz0jr8PjmlJlgvFu5fq+fqB2fhJ8=; b=CkkO0e7+1IH5rhIpmvmgoaO/ItUmnpnKjCTducmCyAlZobmoZyQ2dTXUAXsTrANY76OatX Q1Kka2Vq4eUycBUIGMwP2E/X+5sWp8ZW8okbP70kd739AOWor0NQBhiy9duKH+2qEtx8DP bu2Pbzks+rkZkX1TIr8i2Qti0cIntgc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752263184; a=rsa-sha256; cv=none; b=bfYDQ9aNSpeMPhrzJdzGWVxLyJyhFNJGMjqFSO/LBzw6IJC9T8rge2BuL1IHzFpONxLpw6 oNo2HfYhQmHS6mb/DKgYjy6CV6ucScLqLCJPxawDTuc1o/FQDJo9NHoCV+GzE5FYsuJCOZ cSHu/1Q0jVD7xtDz5g0khyJsFX6JUZ4= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=AWulUTnc; dmarc=none; spf=pass (imf30.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.178 as permitted sender) smtp.mailfrom=debug@rivosinc.com Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-7490acf57b9so1920591b3a.2 for ; Fri, 11 Jul 2025 12:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1752263183; x=1752867983; 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=R/zH7pR/lYDXTCsVz0jr8PjmlJlgvFu5fq+fqB2fhJ8=; b=AWulUTncjEDSlN8ge6jGDLVp3JF7i2nqJIo4tbAX6QXN5MBeZw7DSQhZB/OdMnkZ31 K8rrGKWouJGma6XZ2chi0SKzqQEwjxGvZPVe6F6t7YK9ETqbFHrMSACzFJ6SxR96h1ys iXBEHkQPffrehRWffD/85XWd+INxzIxg17f8isPTOMOKFxW6dzJuB2YR20d0lh/mskw4 kM63k6SZUtEZr0QdAdQXTy8Bd9Df2WS+5OVXffE4EckdBTzKMyEHVLf/SpN5ny9kpKzF q8HwtNriPAIT13i3bnXfPWLIGFaQLSH5dCmtuLkKZiG/SdRCy+2pT8BdEgQhQRWAkcUp ok1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752263183; x=1752867983; 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=R/zH7pR/lYDXTCsVz0jr8PjmlJlgvFu5fq+fqB2fhJ8=; b=jrMC4UIwj+Vrob1SkmJrRtPQDzjUef4iTXpaZBhFuwlfujlj5a64G/p7W/40l08HX6 8DAHPK79rahUfXEFKM9bE34roupUyAiV8qgUuuDj7HG9+sWIPNkJyaINOzP5wQ6b8CsO c392whMGsw6giW3afe1yeglbrBwnRb9IXoQlDZLiHmjLsoDXdFJXrKkOi8q5WfL4+OWP IWeJ8BYP5MsZ95IF6HQXXPmLawou24hT//sJGUtJlX5lpEnkymhPp0NAoHx1yh88MpcV tz7fl+N0fOy0IjrHIcjABI/iN0jFcA14H4B5InaHi/6UCv0BE41mBgWYMi3J0k2ZUvo6 x1cw== X-Forwarded-Encrypted: i=1; AJvYcCVVmz1pFlHkzy85Fqrg8mnPcObG9lej/aVN8QNW0kElEDu3r3pjdWgmDwZa937eFA/vmBhp26LaBQ==@kvack.org X-Gm-Message-State: AOJu0YwiJZqd3TNuvPVZPAWgzWVN1uHiyUNl9PtuHg0a3CZ+HFs1r6gX BMKOVlbdhwv0tpIjxFCIMWgqFErDwz+G+TZ/smxb/cZvA3pX28E/imL/U0YzP80AWoU= X-Gm-Gg: ASbGncv61VdUQ8QlAYV8MyoBDsj7tiAH+9d0Kfw6yR7UsiUz0UuzaWq65Q5g3CktG/I UgZTYZHnE3PFz7DFZp73H6XxjFIXh+imxDQZ6E1vOqP//1+MDov+4jMRbySlaSlvdbCWSRF32ev rxuCsC51le9onuuJ1yax13rh4/7kdXP+rdWXz8Tr+MTV3y2EUjZtCf6+cqgMxYIWKzNosGVPizu V63yCYph1s5oggdT2a8QnYfdrnrA/SP8gLhn9ffR+ojY8l7PtZhHm/77jyKNXmgAYKbsAxducOt GmMazYYvnLF/BnULN1290CxzgCGpSZWaNp9UAsnPCmjCVRFCBoSG233ElxHY3a311WmNAfow1VQ nXRbPuNtUkENkWCb/5fNkd0ITtzEPbO9h X-Google-Smtp-Source: AGHT+IFyimWgTP5VaqUhTlIlPAVe2LYBX0T5vTTsCW0gESMJyXnfxn+vG6S6gJBxf49Htp5zG0wCCw== X-Received: by 2002:a05:6a20:9f4d:b0:220:9e54:d5cc with SMTP id adf61e73a8af0-23120a0397bmr8606330637.31.1752263183164; Fri, 11 Jul 2025 12:46:23 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74eb9e06995sm5840977b3a.38.2025.07.11.12.46.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jul 2025 12:46:22 -0700 (PDT) From: Deepak Gupta Date: Fri, 11 Jul 2025 12:46:08 -0700 Subject: [PATCH v18 03/27] riscv: zicfiss / zicfilp enumeration MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250711-v5_user_cfi_series-v18-3-a8ee62f9f38e@rivosinc.com> References: <20250711-v5_user_cfi_series-v18-0-a8ee62f9f38e@rivosinc.com> In-Reply-To: <20250711-v5_user_cfi_series-v18-0-a8ee62f9f38e@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?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Benno Lossin 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-Rspam-User: X-Stat-Signature: c5ymo3jzniabje534d7yjwp7md1fpr3u X-Rspamd-Queue-Id: 6228F8000D X-Rspamd-Server: rspam02 X-HE-Tag: 1752263184-564676 X-HE-Meta: U2FsdGVkX1+guGzyDYlzUO2fH8TuvD+sLFfE/bMGUi0FquexvZxnF0A+rhyxgFBMoGhM+g9bausRnAu4LLVSM/ZC/o7Bu+sBIn4djCpkCV3fqRBqoGGvHJMBVAv8rmNJcaDeJS7x1ZshFndNdrjHvwYgV0/gOARgxHLvQo4QajlBvFMpAVFnXV9QPuAlaAIgVRXXlqJWeDkI4/1unV5HA3C+M+xAEuLVqV/HaVsMaci+3+K38nUHYp+a8+ReeQAliF+tIQSMdyuiFVUmMUj99z34EGMGWdlkacFohXFU+2ngsDjNbQNdyzOMvssIcWF7NyfsJy/Fp3CHtyunC1bSuX3W+B8tXnNzaLdFhkhpVjQkN/HGdpTyVRGGDmKCYQvmhvfmCDYaNx2UIh2wRjZwjz3GMtssD5P8vCeC5AMCFlW/8zWU3NH14iW+t8DvRJtT3GrGRgqKj8acu4u385Uyb7lSoGpSxogDM9LkxYTCbXJD48TUCm/3RM9kkNz8hSxfBr7Y6rbDyc7hkJjgrS2GbWD2DxBN6HvHCdNcTOhpVFfIoXWapbC+wYaY1SORRcgK7UC1AZaBrtw581CqntcMqwj1OQm8n1VyEhcFmdrkjanWMyyRSa+pH86iwENUuQmu9uLbR2MgpG84ap3p9Ck/uTsxNjRleN2yzobM7SOa8kUPH2Svtx/+2pMKNJ0uHEReSuvSTCFORwzpY+8yWCyWR0Z+zheN7bMXNcrNg9NSCnMQDyuREy8UJ2EMDjYuqfkG71MjCa1mdEwFi3RFhoBVKqjzdJYdAWnOqSjBB+YG0QdKM61W3g+i/8GlTQtuIRebGy42Tn0XDiso596tfoY3ufikSmazkYoCN8Y/0k4+9YdFjJhEvRV2GapaQoXJdyzQTTvGRoepxMXiyk41IsgGo5IEmKMMJqPy3v8W724j5q25GRaB/zSrMK8R7GW9oEIO3wkg2tfg73g+fPz6TCd 33P8o+Gi 5P3lqUFRGcO2jrsr5PGo3OHCd5Cb2waa2/QmdZjV+aSAmAE8tDTT6cObPSThk/ga1nNb1iOqbl7DEwPlcmmni9sC4B3yb8MRavszpFw2j0BsKoCrgMJByEbJi5Qi+qn+pcZMruAsk8zfLwhzVOf5w+2rvmPxbMvlHcOPeF4XQp6Ef+EwST2GHoykSwxGQyMU9zQhSbzY4jYPeCJzQM4k+oLgkPrVbVOwOWbqXbfWcx7CuCTw7cw9PEPIkoZMYJO9EGG4ir1FMmK51M/eGHO28LaYc3/+uvFu0mktVRQe+mM0MEFsZEMBsTYvHtSaiiryZqWBeri01v+nZIETpAuEdLLAMSSsx/CQnC0c6HueMnXipnAibdfhhCGuLP7SrXivZqVE2NhrKfFv1ukwADzJZCqmVEsT9Z+Fha9j2b0c1YxC6XQKsBnZQIrF+xol3rtpMw5nnzeMsA/eOHUgjWnVQ3cGe1N15vSd2gXEEznZzPswNtXMCwz+CEbCm03DcCiVolrec9gove0i9sFE= 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/kernel/cpufeature.c | 22 ++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/cpufeature.h index 9430dc198caa..c5c01efba3e7 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -156,4 +156,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 affd63e11b0a..7c4619a6d70d 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -106,6 +106,8 @@ #define RISCV_ISA_EXT_ZAAMO 97 #define RISCV_ISA_EXT_ZALRSC 98 #define RISCV_ISA_EXT_ZICBOP 99 +#define RISCV_ISA_EXT_ZICFILP 100 +#define RISCV_ISA_EXT_ZICFISS 101 #define RISCV_ISA_EXT_XLINUXENVCFG 127 diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 743d53415572..d38136672650 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -274,6 +274,24 @@ static int riscv_ext_svadu_validate(const struct riscv_isa_ext_data *data, return 0; } +static int riscv_cfilp_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 int riscv_cfiss_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, @@ -461,6 +479,10 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = { __RISCV_ISA_EXT_DATA_VALIDATE(zicbop, RISCV_ISA_EXT_ZICBOP, riscv_ext_zicbop_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_cfilp_validate), + __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicfiss, RISCV_ISA_EXT_ZICFISS, riscv_xlinuxenvcfg_exts, + riscv_cfiss_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