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 5EE58C02194 for ; Thu, 6 Feb 2025 13:50:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EC87728000B; Thu, 6 Feb 2025 08:50:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E5169280002; Thu, 6 Feb 2025 08:50:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CCB9D28000B; Thu, 6 Feb 2025 08:50:35 -0500 (EST) 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 AA2CD280002 for ; Thu, 6 Feb 2025 08:50:35 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 65A6D808FF for ; Thu, 6 Feb 2025 13:50:35 +0000 (UTC) X-FDA: 83089654830.26.678C6D7 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by imf07.hostedemail.com (Postfix) with ESMTP id 4420140061 for ; Thu, 6 Feb 2025 13:50:33 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=CsltERgl; spf=pass (imf07.hostedemail.com: domain of cleger@rivosinc.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=cleger@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738849833; 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=ZqG9Iy11y+7j3Q1qmHPl/yKVh88xdsRebgLzRhIb/28=; b=O3VDRsVG88r+CXFy28CoQolmK63vB9+Zq3aS9vcztARw4NbELUhAha53eQZ0fiOjC1bRAI TUubptQJNBDqntgXVDEgaGMzegCaCS0DWWFbWrFzAbaxn9GtjCBI99N1GSFf9kQa7HeyM5 DQ7QUKUAXcp7CLr8/G2B0SeGTdGelJM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738849833; a=rsa-sha256; cv=none; b=G044DXHyRdzpchX5DMowXipYAotxTZJyCXcDxJbJc8ASpVfrRWdxQSJAb496DXbl8DWNtG XrOYxMmp5nBndtJCCn0rFnsI8p+t5fyz82w5LfSeGyVie6pSqpmZp3UX7D/42b2VPOVS9/ PzSbXDRscsMHvVLHzj4YtjuXGxW1jxk= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=CsltERgl; spf=pass (imf07.hostedemail.com: domain of cleger@rivosinc.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=cleger@rivosinc.com; dmarc=none Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38db0146117so414943f8f.3 for ; Thu, 06 Feb 2025 05:50:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1738849832; x=1739454632; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ZqG9Iy11y+7j3Q1qmHPl/yKVh88xdsRebgLzRhIb/28=; b=CsltERgln2XkZLxZDvLNdxLKFMyzCYOqngArDirpcTAC7eOj2fx81ApNTXbYr/uw6E cKsuHOZYuANp0O5c8gKDn0YVNgSdEm7BQOOfAF1ELZvZwOdB/zi9kh0YqS/ZyOe4P4iU 2bEP1d4J5JBO6PeanpKtnS1kunLRMUq1Vow416xuNK4KhGjYV2zxw4Iu49pzXdV+YSgA Lp3dJHZNGQuH9+dCEA33JFgKig9+3IY62fZ3KqioyLhtjesk8dAyzhmqlr4cWW0vMrYW x02g6V+lXqqqO57iSi6S28bDCUzEWGFFBlW2zXKUOZ8G6xfAhnVlgAFRvDiFbfOoOAtS Txkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738849832; x=1739454632; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZqG9Iy11y+7j3Q1qmHPl/yKVh88xdsRebgLzRhIb/28=; b=o8OiTxmGY4vlzCQkP+0EuySvZX8Ckv9MRP+ed5Ii7X4tjbYhfwr9vIdhacoGIuc/Xn F1nWyDt5mg4xq9481L8l7G95pew3DD4nVxYeWiOPshEadCA/Q5gP9aeHWiv89v5RXhij QeiF4wzly0FmTGkJM2y5hGDTCMozb+R28e5Pv1/twlUsXCfh3Tmgjy4HnQE974eI3zrw k+dwxXv9s4wMCOAQDvHw+1+coeFetrksatTPbF4jLhM9waDDpge777wPt2xmsSYG7Aud 28IQ1ANwpu1O39q/tlXJhp8J84RH1OfEHclWmwNPFKokljUkwdXeP+8Vyj6UuxWBInFN Jn+g== X-Forwarded-Encrypted: i=1; AJvYcCU/W84QD2FLKqI2QoSOjFVczMJO5ijwCJT6XcrMwRnoZBt6Mivn2+usCXtm3WgHRev8GgRVajKlOA==@kvack.org X-Gm-Message-State: AOJu0Yz9Zmw+o9geNtKycjZnU28Xa0DPb6PptEa3Kag6BrByom0+ujOP 5zR4OV8rzVC4tzMgDs/1j5YubehkyB8lbb17YfpwLlasP9C9jLTqpZmC12861M0= X-Gm-Gg: ASbGncu9XlKlpneOjtUZ7OmtQl1mTtUv6hBfA/w168r9c4wyqfZxSLd1KLlgQ7lE8+i ofC4qKR8rHdYiW9vsLBTa9iRcHbbZJoOcnpdXgdG+GYT473lK8plGjH6qyyDj5QqlDHCy7CiDad fX+7751PtCx+Ma3/gG5/+3VCH61aexylDL33TWUKyuOkHTG/Oyx6xkN+467YlBKVVABbvwCEYPb F8953AC4w4xH6w7h0raGliJszb71KDqwF5hEqfSUw7hIoGELEptB1XjxRSKzV3vJutYfn7KFfs8 rnXKVMA6xnpU/A06hCOVgQ40eN4cuCVxAfm7jcEf0yp50DvUcnzyRMlK+8de X-Google-Smtp-Source: AGHT+IEYIYIWW6J/hIRqm2Y0oUfYR4o1i/HreKUFQmuOWd+xJTMh9Ma+9XSSasA3LYOW3FeM7FN37Q== X-Received: by 2002:adf:e5cb:0:b0:385:faec:d94d with SMTP id ffacd0b85a97d-38db4910812mr5188370f8f.51.1738849831734; Thu, 06 Feb 2025 05:50:31 -0800 (PST) Received: from ?IPV6:2a01:e0a:e17:9700:16d2:7456:6634:9626? ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dc17e278bsm1117573f8f.48.2025.02.06.05.50.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 06 Feb 2025 05:50:31 -0800 (PST) Message-ID: <782ef14c-e7c4-435e-adc6-9559ce3cc06d@rivosinc.com> Date: Thu, 6 Feb 2025 14:50:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 03/26] riscv: zicfiss / zicfilp enumeration To: Deepak Gupta , 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, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com References: <20250204-v5_user_cfi_series-v9-0-b37a49c5205c@rivosinc.com> <20250204-v5_user_cfi_series-v9-3-b37a49c5205c@rivosinc.com> Content-Language: en-US From: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= In-Reply-To: <20250204-v5_user_cfi_series-v9-3-b37a49c5205c@rivosinc.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Stat-Signature: ft9sit89copzedxjumrmmeqo4wrmyx6o X-Rspam-User: X-Rspamd-Queue-Id: 4420140061 X-Rspamd-Server: rspam03 X-HE-Tag: 1738849833-430947 X-HE-Meta: U2FsdGVkX1/+XYhw1fonbiPl4X0wgG+v5/HV3sHWnv9KsD2ebSPKhtDs8aTXY6oKTPbw9YbksIX6jwuNb4dxMSRCdcYXyPE86USD0xPYUXkXMA/uJflU9LNkLcbzYf/q0IYQcJALH5JJzxZNwBlfXwv1i4qryeRpj0jsGp5AusvcE0LztjXL/rfisuLviw7FHWyfsiDVcgjxWC5qSfd+qK3zbYFMUraVNgrSE7tsobuC+mNhuzRzOxWH3nOyAlq6M1LMZQ2x5zRj5xGyN/Du73MjbnFNLQi9QQhJBOMIKr6bsydSxoxRkx35yNtMZmABpeFVthn7c17nfmj2miJP7tXLVy4IYmcmL16CnypwDh7QG0PDS2Fmntn9JQbIxi7Z4jQZ4LfQzDCvPhWMST/hJTG7mxXmyUynjbE3fP47fs5jw9K6WK2yawRHdonLr8EgVkDGscguGcHLDn/rJCzsYcwnzFIs9aHPWYBtlZs3/SsKcCbgIQ3ZQ2HT6SRigQP0ku1rgH6ixMlTzYJM+H+pw6Xyj2280orU4romNaX30m5S7RZG/2A+UTTLnbPnQHRPcgqGjcj2KtYHpMMWQ2TA0oOtKuh2eoeVVzQF9SXz9/S21KbkQUSd9O4UUlRm1RvhjJ4KMubGVWitMSahplhBfuZYiikWnPkvSonoRzqlyHOfHmQhnO8CTKQrYnY9wGGRq28w1IS9x6X7FEDGb/MG5GNsHjzdjZ7AfgMyqfxcIBEPpgU12hPq50l2aw8NXeRCYsI6kdIiJf9Y8ciE1wVM355RD+ELChmdiJvn/xq//0BQQlIhuqfQTP6idAIeieSC6TecaQG011CXj4HxBT5i8sdh/UiCXEuPNXgRzfXeCe2LemRUi1kHOFPutgToxBU0GZdvWzifiRznCd6Y3ZeVKhbJearNoC+ymTb3SPwRVV7mKLNJhCNTlM1egVnAnfnrj3Nv9a8DNHjX/T561jr izhjjjlQ bf6Fc2872zOB+tpGtLU/JL7WG2EgMFyeNzmHTaSqTCGpbq/PEtF9ltIhFKddB6QtU6TfaRJXO9TyRBgA7rTK4+NyDr/LGZrMOtbZICHx/GwiPcMLpDq3nyeBmWH7OXqFxRXwPi3BC2/Y8u8RdPhvHeYwAQFdV3QoykIL2V/wZmj5dXqaj1GvayndeHoY8j4bl4LQ5jgZJcyrloBH8gmLbhuMPfkN2JD1J2AyTFU/+EFCRiJANMVzrQuNYXD9o4TAJupJOC1qQjr6l9u1ftOgSJr9IScwI3NCFcGuIrR810JG2dbq+6iyAWng+TjHnLFzXHgIBA/eXitIyHhcyqYC1BKt3jxtdH8lHEMhIASXzcwrpCn59n7a50hbX2VNHSlmdRv5obMoe0pzk/0KfD2yzIFCAyBkVcni+noGUHnKz5M6uV1tM/P6xYmhvBqemMMNKaL+YiaDl9jfpdyg8MNMrZuwES06+MotHnh/v/glJ2L8t3eH1mGbPV0cLZpSyubLOxvbbBsmGFabTl2e0torlOL6vddDOxKdCIv/O68aUl1i8EWiYQ/qZ94oHgfqLmT5q/Bn1WnPcZ/u4NzowTWtwxkMKZiAuB3LWGVT64hTiqe7Vmgx4sfUyQQxn61ZeWvotZioMxp6Ma/8ER0ZubVnmt/y1MgA7O47Kedhp8euXERnb+wM= 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: On 05/02/2025 02:21, Deepak Gupta wrote: > 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 | 2 ++ > 4 files changed, 18 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..e72de12e5b99 100644 > --- a/arch/riscv/kernel/cpufeature.c > +++ b/arch/riscv/kernel/cpufeature.c > @@ -333,6 +333,8 @@ 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(zicfilp, RISCV_ISA_EXT_ZICFILP, riscv_xlinuxenvcfg_exts), > + __RISCV_ISA_EXT_SUPERSET(zicfiss, RISCV_ISA_EXT_ZICFISS, riscv_xlinuxenvcfg_exts), Hey Deepak, I think these definitions can benefit from using a validation callback: 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; } __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), That way, ZICFISS/ZICFILP wont be enable if the kernel does not have builtin support for them. Additionally, this solve a bug you have with your hwprobe patch (19/26) that exposes ZICFILP/ZICFISS unconditionally (ie, even if the kernel does not have CONFIG_RISCV_USER_CFI). BTW, patch 23/26 introduce CONFIG_RISCV_USER_CFI but it is used in that patch. Thanks, Clément > __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), >