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 10E36CF0429 for ; Tue, 8 Oct 2024 22:38:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 03D686B00A0; Tue, 8 Oct 2024 18:38:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F2FBD6B00A1; Tue, 8 Oct 2024 18:38:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DA7BE6B00A2; Tue, 8 Oct 2024 18:38:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BA3A96B00A0 for ; Tue, 8 Oct 2024 18:38:13 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DD46F80CB4 for ; Tue, 8 Oct 2024 22:38:11 +0000 (UTC) X-FDA: 82651899666.01.7F1A97C Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) by imf11.hostedemail.com (Postfix) with ESMTP id 4B0B740011 for ; Tue, 8 Oct 2024 22:38:11 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=VVZhsiDv; dmarc=none; spf=pass (imf11.hostedemail.com: domain of debug@rivosinc.com designates 209.85.215.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=1728426942; 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=1PgKK5psJ4uqI8azQmoLe2esobQYgrwfNA+bFUurkQQ=; b=ztiT53RYzrgAVzqla8yjAhw/ynBtOzOG5l02aKvrK9HFEQn2Mq2x3Be7VBijEnKygYp3+d TVcJS+vMaxvfy9OPic1I/Dk3viIZDDvNU/15cmoL1N6HYyXFWQrqhY/3X3k8cRuvDyfOk/ 2dc1jUe0byXe51etroCbxaVUDYJiznc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728426942; a=rsa-sha256; cv=none; b=rl6gpeWcpip/S1+09kW+MKtGnmWDOJCQoutQzAjMLBgo9mDJseJbaZOKiRGzRbFNO7gtuY ufoz/4yssGk0uSCNeghUJvtQnNgD34hwlqBKY4ySBVY/J2wgw+T8rjLtxfM2OSKNsWWbIE N2RkPzc/n/BHQqRq8LvCzanDeUY9nsw= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=VVZhsiDv; dmarc=none; spf=pass (imf11.hostedemail.com: domain of debug@rivosinc.com designates 209.85.215.182 as permitted sender) smtp.mailfrom=debug@rivosinc.com Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-7e9fd82f1a5so2174439a12.1 for ; Tue, 08 Oct 2024 15:38:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1728427090; x=1729031890; 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=1PgKK5psJ4uqI8azQmoLe2esobQYgrwfNA+bFUurkQQ=; b=VVZhsiDvnrSlTs/17xVtjpuEc0xbEJl3clw8T6+XAsSWp9U2XY5h+qZ/3KrJitSm3W gXKpSeso6WuiY+S+RHtzEAY3D7Lz+CozcP/MTLGYjzQpS10/xUFUqUxETkcG8FSv5i2v Opd2PgQtQIjrAs29t52G7aPfVrrDFUtZeeqNjcUErE32tnRzny39TB56SpNwtMSagkbL 8/VC+dcarwU+HB/idbDh5GgFT0j2d1opOB/fQlO/nDQlqtuvrGOgZr1DgnApr6sN3hwt zGK2w2g+x1kgLVKI4JrW/Q68GU2dB6YC9+hdfoRxmo/gwlkdn1Nc6NfIkU1UzZSa/kNk X5Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728427090; x=1729031890; 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=1PgKK5psJ4uqI8azQmoLe2esobQYgrwfNA+bFUurkQQ=; b=dLyVJr4Idm1AEr/Azqhy/CH56I799LGywfYvcArem14J26PqjUP2opH6Oyqmqcyhg6 E+Qu6JJRFDfI31jBdUhyFY5El5GmoSE8zvL30vhWktmD0EIkO/HcZKSmqHgcaUSH2ky+ 4eb1ihSJXA67Kk7aXUBji6V5y9JBSjIHSIOveRDJcOJZ/K30WQ4HetkBpe8/e7dr1O3A rSyPpYB6doZZyK8q68H4ljdOZo6b4zbwEdgksDN0xZcIInUpEkYnZDXFeiafJYjcH7+X NrhPJSUUmQl5s64kOPzpFmk3v+UXvph1H88Db9gDolmvVi7oSZ7uRiGsiQ55XhybUi8g QxvA== X-Forwarded-Encrypted: i=1; AJvYcCU+cYB9GT3jXm7OxW1zyW8F8YhoTbgxMy5Zz6Rdhfwl9YMm6n/K8iuv+N9FphsNdESSXlV4eQdu5A==@kvack.org X-Gm-Message-State: AOJu0YydUUsEUZmCfA68oogSycLFwDZ/41wr+IEON2JYDs5JldBC79uC htvxSYVl32FPC/CtOp5Iqb1eLS3n12iZPBZhP48mmGKvUT2xqKGKJhCbiGh88b8= X-Google-Smtp-Source: AGHT+IFY7chdq/RlO1VqqZI5iRB44TlQ/FpJUC1y/VZKQga2d2VHN1qSiIxLmjb9SvMQ9TpE0KT+Pw== X-Received: by 2002:a05:6a20:9f9b:b0:1d7:f7d:5cf3 with SMTP id adf61e73a8af0-1d8a3c1d7c4mr777890637.25.1728427089845; Tue, 08 Oct 2024 15:38:09 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71df0ccc4b2sm6591270b3a.45.2024.10.08.15.38.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Oct 2024 15:38:09 -0700 (PDT) From: Deepak Gupta Date: Tue, 08 Oct 2024 15:36:50 -0700 Subject: [PATCH v6 08/33] riscv: zicfiss / zicfilp enumeration MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20241008-v5_user_cfi_series-v6-8-60d9fe073f37@rivosinc.com> References: <20241008-v5_user_cfi_series-v6-0-60d9fe073f37@rivosinc.com> In-Reply-To: <20241008-v5_user_cfi_series-v6-0-60d9fe073f37@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 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-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 4B0B740011 X-Stat-Signature: qbdo3smqq1cknn1db6gjfjt93m34eyue X-Rspam-User: X-HE-Tag: 1728427091-383568 X-HE-Meta: U2FsdGVkX18Tkh3qS/QCHpQhr0q5lyMV9VlQPIO90H2jMvpYPu/M8ITwCe/cXZ+saOFnZiE1olTovtoImQL1QxHJFNSiaUdLZcG23SoOgbnCn0M4d8sHkTWgx2UTw7nDM9YDY/tjInSu+dIhBYm5ponAl5lKZIXcGL8YhVlPSawo13UmGWyGJT2MfCd3AbEBE8fOVwQOfU73U+gWVMvcfPtfI4FBkFndBs9Gpz7feBdFDBOv4301853leJ0tr35zR+Cj4FcemCXTXZzRslxOdV6buzUEJUf9uRoJTyEO2g/Bfcg9+obH07hwVVEr96OqqSY4N6vaagpe+ps5F9RT0oyp1S6p8Wh18wuJYhpLUBCTelnXUkB/zBeEfcb9SQEXLIZ8nZOkI5hBmVrzi1HnmVK/TDJxYG4VSy/3iMpw8BtVyr1gBxKGwsqNPFKmSLPlQ86vGk17FNNSm3faDGU5qkqn6kxvvb1/pP2nPDEn/sJQjyMmtBgB9303yTjqvS7aMb+Duzq8rsaw4Or1rgqGfmvvpA1JmYMzZhz74UMZ/8FQfHKfM5Fk4MqxnPqm3BqDy9UsBANPYiHLxQxDXN4w6Un0XSJonoBzpfsX3DsfdG2E5JCcjAZpMmv6GccqFZlFGnuI67CKaP94vWQNLd88B17Tnbaso8n0UK0bV3je38L2aRj6qsmQ67Gq59Mpl9bLCm2/4pYvjloG98x2vboIO5vdChzLJcwbwS7lm4VDpGIlpvWDZu4UlN94z4+UpT/Kuzj5AVybwqgL6Tj8h8i++QeOYXMVFsiVAgKoYBtTc4cIbmxlKv3UbaRIjqdXCsdCf87548X4846y2UhRpUmxIB0ixxffLmotzdM9vEQJyF/9Nsii0JkYHh6TCXl95DPPShaucFMXs4JBxSRCZ62CjMiSjmXpggDrBAbI8ofysxONQUo+rXnw909xToGxGgeTlFj0vb3Ky+H02suqsyx 7kcp6/JF cymyqb7wOS2LStOmgrS95qIGTYQdc00SRMTrVjlwJqGcVlP80iKsdvsIHpGcuP6KB509Tms9ZmkxuvAjBNyebFQzkiqQN4SwCZdxSlmSFDuSLTnzcaLkhReB79VMEoICegJC/r9OhDH382fcG/RlnVstgVmWSJb0XNjyFuGohcBgYoak8gTvNRszHCiMRkBTToNB4Il9LbpYWDbYI42Zqzshp8tGCcPKbyLPZA3l8kzv+QV+15Z9qp1pW/mnjscSikXHkmrGNAL9/gDq207qFRAFFYewas9AP+4tZL69z3ICMG/VoTLte/n9/yM+hm/UiZHy29XnsQc4jmuPRyT4Fia7ajtZfrGtwVpvbUWA7OeqLhMge27EJklRtN3YQIuvb5XysB7UMneRJOeQs9yGl3WuI3sPZP5c5V2t1lkgvG01I7ualVVFKungUteS+nAEhqyBNpPA5fAsDbEWW3RJVmtIp4irk5DZ9zQMKXgOnKluaJjZAKTy1qBP5BC4mBcNgbrPJgWSkidohg4PTtX7Cfgltmd0okPVKEUYjtM8m0j0JJ4uCk+cABjDVN3Ri8Hc/oCbVIAcotaPrWDp2PPDZK0HdK9ix708i0UPGL4kTuIeNtkI= 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 | 2 ++ 4 files changed, 18 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/cpufeature.h index ce9a995730c1..344b8e8cd3e8 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -180,4 +181,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 46d9de54179e..10d315a6ef0e 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -93,6 +93,8 @@ #define RISCV_ISA_EXT_ZCMOP 84 #define RISCV_ISA_EXT_ZAWRS 85 #define RISCV_ISA_EXT_SVVPTC 86 +#define RISCV_ISA_EXT_ZICFILP 87 +#define RISCV_ISA_EXT_ZICFISS 88 #define RISCV_ISA_EXT_XLINUXENVCFG 127 diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index c1a492508835..aec3466a389c 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 b3a057c36996..70803aa66332 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -317,6 +317,8 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = { riscv_ext_zicbom_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xlinuxenvcfg_exts, riscv_ext_zicboz_validate), + __RISCV_ISA_EXT_SUPERSET(zicfilp, RISCV_ISA_EXT_ZICFILP, riscv_xlinuxenvcfg_exts), + __RISCV_ISA_EXT_SUPERSET(zicfiss, RISCV_ISA_EXT_ZICFISS, riscv_xlinuxenvcfg_exts), __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.45.0