From patchwork Thu Jan 25 06:21:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 13530075 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 8A4B1C47DDF for ; Thu, 25 Jan 2024 06:28:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 28E1F6B0088; Thu, 25 Jan 2024 01:28:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 23E526B0089; Thu, 25 Jan 2024 01:28:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B9886B008A; Thu, 25 Jan 2024 01:28:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E84A86B0088 for ; Thu, 25 Jan 2024 01:28:50 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 9B0091A0D30 for ; Thu, 25 Jan 2024 06:28:50 +0000 (UTC) X-FDA: 81716855220.25.DFB78BE Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf07.hostedemail.com (Postfix) with ESMTP id CC3CC40011 for ; Thu, 25 Jan 2024 06:28:48 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=Dwee+kuW; spf=pass (imf07.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706164128; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dAejTXU0ubiQ5glx+ACfMnILZ3BSyMGr/22gR94zPLU=; b=JrU1bgsUHqUIt3dsNcu3JUN3XCnoyQT9XvnuZevQklDdg0qCBox+p/RdY2WqyGbGn6aGec fnX32f9geHj+DFEbgTinhoE/6OU852BtRIwWewbdXc4f5V/rG7CQqvBStDMoZXe8N+55bA /FR5zsWW2aPDotHlQgNW1uDZhCUUScg= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=Dwee+kuW; spf=pass (imf07.hostedemail.com: domain of debug@rivosinc.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=debug@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706164128; a=rsa-sha256; cv=none; b=VqiH3sQlXtWjHbXA69QJgndSd+lc0M4773GAFWAbp/6Q6sS1JV0Z/k4eYbOWG7NKMiPhB3 TeQfPytltx6OPZycfQZQ0kBeYmrGQuFyfOiTgwTh6WyzrbW0mwaY5EiRe3YNIaHMAZ46v8 HEOWTU90rJf9XROjR8bwxg/wGxR9gC8= Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-6ddc1b30458so1123303b3a.1 for ; Wed, 24 Jan 2024 22:28:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1706164127; x=1706768927; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dAejTXU0ubiQ5glx+ACfMnILZ3BSyMGr/22gR94zPLU=; b=Dwee+kuWqoaZeg/Nrg+Q3qIR/n69wO/BpU3tRm/WnUhSKJieKYaxIKwRuTHJ8wbauz TDkzJ+LXurV00WGGK+T7EjRI1gn6TckxeRKjayKBGqvSUVG7hfVBDNKeJGMicbzjbXvK g9OCowCS7ZH4Ek+b7htYZZj98ZTRp56KFhzg3d/+bgyXSC6UBPjYTTihC3Svr1Yw7Okk M7WE8qpBNWZMTWBLPa36wjjT18dVauNVFD8FN3kWZW7HHKy+YSwhVWRxyiYnNY9wooWm pWr5nN/kuoMx89uxCYnTbzPkkDxzKKX8rtaTT0MxccTqrqkP1zdKZOWokp9oyAT4zHqZ CZbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706164127; x=1706768927; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dAejTXU0ubiQ5glx+ACfMnILZ3BSyMGr/22gR94zPLU=; b=uaJi2pnNNoPtOTGXTKf04afnjvoxUPaQFh3YF/2XhufL+lZWwxNSt1fq+MX69QVZjc JbFCkHiWH3rXQ4VUTm5x6VkrY5zsAOuD4tbHtTqsrCN7c2DLGTkw2mDV6kpoO2pFG8r3 3SdPK/d+rFHmE6TsNW9NVdMNGaJZ1STj1yYVTQfhx6iUQQdgdk3371s2H9i7fA08Wqbl KQjqAF1Vg74rK1v101F0F+pwwGxtWFpjfMT/wp+f015oVeRt9fKH18wwhYw4dLvCGey+ h8/95H2d+PfaCWityxiUSgf7cZiripuLJLHfvjglttd1HNxst28paKx4YDAMwKA0Vc+P YsNg== X-Gm-Message-State: AOJu0YxTPa4EF7NAprh7opGTKX275gLdfiGEjq6on8/dU67CbJgER0D2 BVsw2cua3eVCA5Tyq1USF/tOtsJWW+B2glOn9LNvO2mGhvXa42tj+tj0c+SWW+s= X-Google-Smtp-Source: AGHT+IFqFfG67XTDjoNiouy/3B041dutuvZL3hrVwMOIb2sdzt40BlsHHzBmvSINS1AroXPOL+Y8dw== X-Received: by 2002:a05:6a20:1447:b0:19a:2e13:667a with SMTP id a7-20020a056a20144700b0019a2e13667amr750598pzi.5.1706164127531; Wed, 24 Jan 2024 22:28:47 -0800 (PST) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id t19-20020a056a00139300b006dd870b51b8sm3201139pfg.126.2024.01.24.22.28.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jan 2024 22:28:47 -0800 (PST) From: debug@rivosinc.com To: rick.p.edgecombe@intel.com, broonie@kernel.org, Szabolcs.Nagy@arm.com, kito.cheng@sifive.com, keescook@chromium.org, ajones@ventanamicro.com, paul.walmsley@sifive.com, palmer@dabbelt.com, conor.dooley@microchip.com, cleger@rivosinc.com, atishp@atishpatra.org, alex@ghiti.fr, bjorn@rivosinc.com, alexghiti@rivosinc.com Cc: corbet@lwn.net, aou@eecs.berkeley.edu, oleg@redhat.com, akpm@linux-foundation.org, arnd@arndb.de, ebiederm@xmission.com, shuah@kernel.org, brauner@kernel.org, debug@rivosinc.com, guoren@kernel.org, samitolvanen@google.com, evan@rivosinc.com, xiao.w.wang@intel.com, apatel@ventanamicro.com, mchitale@ventanamicro.com, waylingii@gmail.com, greentime.hu@sifive.com, heiko@sntech.de, jszhang@kernel.org, shikemeng@huaweicloud.com, david@redhat.com, charlie@rivosinc.com, panqinglin2020@iscas.ac.cn, willy@infradead.org, vincent.chen@sifive.com, andy.chiu@sifive.com, gerg@kernel.org, jeeheng.sia@starfivetech.com, mason.huo@starfivetech.com, ancientmodern4@gmail.com, mathis.salmen@matsal.de, cuiyunhui@bytedance.com, bhe@redhat.com, chenjiahao16@huawei.com, ruscur@russell.cc, bgray@linux.ibm.com, alx@kernel.org, baruch@tkos.co.il, zhangqing@loongson.cn, catalin.marinas@arm.com, revest@chromium.org, josh@joshtriplett.org, joey.gouly@arm.com, shr@devkernel.io, omosnace@redhat.com, ojeda@kernel.org, jhubbard@nvidia.com, linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [RFC PATCH v1 05/28] riscv: zicfiss/zicfilp enumeration Date: Wed, 24 Jan 2024 22:21:30 -0800 Message-ID: <20240125062739.1339782-6-debug@rivosinc.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240125062739.1339782-1-debug@rivosinc.com> References: <20240125062739.1339782-1-debug@rivosinc.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: CC3CC40011 X-Rspam-User: X-Stat-Signature: isjtfyourdasjbfo41kt1ra1b9zf5psg X-Rspamd-Server: rspam01 X-HE-Tag: 1706164128-476219 X-HE-Meta: U2FsdGVkX1+FWSU7M80bNR1xl2GdP5vxN5EsXc59vr4Hi6CtixYHX0/xDiC7v1psajU4vAiIZ+3HxvFQ4zkQ/BxfINm6gzQHE+ecbtvNszZfQRKt5jSVEnU+vP89OJj31uUhzZGvBB2pHd5dBTfV78hqRQTlzYllgBcdMsSDHlQG+PoqS6cyETKbITYETOCEx4Q9OopBKjOmgAA3LsF3fb6A15KXr3LEg0t8Avr1dUn7IJCS9tAcBbMoSoS/0iB7neLgNXNUo53HEc3qmbx/MYIjbMkEEr33OqonqzpDFgtoVEySj7oDHhrNHpi55cbheLwjkWRBwTieLAieB8I89Q7UnHKEm2ncAIPc91nyIR0q6pQEfMT7MU/J0WVms52X8kka1iRAnMioQSAEDsEfWwYLACZdjvK9eoOhhRFE12t5Afu1i5pEufW6yZ7e96XgFweA/mlh1FbF1YBeUSyqpG4SeCl4WaGQXs0wJB0rOW4VF6DOXSTg/okxLynNcmfTiydXNIlE/XU5oGe110nTVG+v6NxBqwJIBjq8PPwFJ5+LHGkqvrsSzgBF+V/P3HWGHH9YzUY3l4cYfSn3cHnsdGYKb9+/JD4Azwq/xjME4W6JxN+22IRYToTlRXa2ilbrPN+OG6WElQMRRkBX/TWxCg3dJ77zCOkUNnEfqSo00DcnxS/lJ2oY32uF7shKCWv/YjNKJXxvhTGF2GT9Md6QDGZWA8VSLs+ljKdMRgmAWVMAtguttyoUZPTX0e58JEGBy+A2JKHBCpMilRB4AkIkMUPAjCVjAL2/zSM3zhVzK8iUWdP+UQqTKLgVVJtdBeD/4Qc4v1r1TBno+/gvOS4qbTyvz0ZTax7WN7NVfGmDwujlde6d0k0f0I0uIYwkgyJaBqdSG3/ulIJ9QmQweBiOaBiTFJb57TvLK8H3IbfeZePCgKa4ytqta5nrI3XAArKLw5bmobA4qDmThi2NtG8 +IWhyuFh QuqJjSy1zO2xlq73JLWXM6Wm8VYLcAGz6tMH028dsIQxv4AAnJfWDVaJ0vZWK8lPBMNxCHR8vt7pqLuaA/UBfnVBl+hbJzw7HqnG1Fv9ZG2C1v2zkSZFk1cie/Bz80CGCm78IKd2C1Njw9xGFMRweVUjzbr+18RknL+seAtH90c809Ri4oia7K+QxQACqARQFZLJ3xR/PkTE2OmbVbgFuAo3IDwFuIbyQfoglZ1iI0P+NsSjzdhefC87d7QlAz4oXVvJLhje2B92qqYbvc21qsIYHBSaEVMxmkzRZEivT8SeA24dEUOI2DpNVmhevOBOLL5zZq62iKf/4l5WPZ4ZOFX0zNyL1/UjbCrvB9+BmmJELZxD+34UL44sUB5K9xoxWp6617arCxWjQ/CUTeamc603YLe5qhn0txzWl6VlXYDtmuBAzlkYZnrbTgl0DLGyLsvwL 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: From: Deepak Gupta 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 | 18 ++++++++++++++++++ arch/riscv/include/asm/hwcap.h | 2 ++ arch/riscv/include/asm/processor.h | 1 + arch/riscv/kernel/cpufeature.c | 2 ++ 4 files changed, 23 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/cpufeature.h index a418c3112cd6..216190731c55 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -133,4 +133,22 @@ 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) +{ +#ifdef CONFIG_RISCV_USER_CFI + return riscv_isa_extension_available(NULL, ZICFISS); +#else + return false; +#endif +} + +static inline bool cpu_supports_indirect_br_lp_instr(void) +{ +#ifdef CONFIG_RISCV_USER_CFI + return riscv_isa_extension_available(NULL, ZICFILP); +#else + return false; +#endif +} + #endif diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 06d30526ef3b..918165cfb4fa 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -57,6 +57,8 @@ #define RISCV_ISA_EXT_ZIHPM 42 #define RISCV_ISA_EXT_SMSTATEEN 43 #define RISCV_ISA_EXT_ZICOND 44 +#define RISCV_ISA_EXT_ZICFISS 45 +#define RISCV_ISA_EXT_ZICFILP 46 #define RISCV_ISA_EXT_MAX 64 diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index f19f861cda54..ee2f51787ff8 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -13,6 +13,7 @@ #include #include +#include #ifdef CONFIG_64BIT #define DEFAULT_MAP_WINDOW (UL(1) << (MMAP_VA_BITS - 1)) diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 98623393fd1f..16624bc9a46b 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -185,6 +185,8 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = { __RISCV_ISA_EXT_DATA(svinval, RISCV_ISA_EXT_SVINVAL), __RISCV_ISA_EXT_DATA(svnapot, RISCV_ISA_EXT_SVNAPOT), __RISCV_ISA_EXT_DATA(svpbmt, RISCV_ISA_EXT_SVPBMT), + __RISCV_ISA_EXT_DATA(zicfiss, RISCV_ISA_EXT_ZICFISS), + __RISCV_ISA_EXT_DATA(zicfilp, RISCV_ISA_EXT_ZICFILP), }; const size_t riscv_isa_ext_count = ARRAY_SIZE(riscv_isa_ext);