From: Heiko Stuebner <heiko@sntech.de> To: palmer@rivosinc.com Cc: greentime.hu@sifive.com, conor@kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, christoph.muellner@vrull.eu, Heiko Stuebner <heiko.stuebner@vrull.eu> Subject: [PATCH RFC 03/12] RISC-V: add Zbb extension detection Date: Mon, 6 Feb 2023 23:58:37 +0100 [thread overview] Message-ID: <20230206225846.1381789-4-heiko@sntech.de> (raw) In-Reply-To: <20230206225846.1381789-1-heiko@sntech.de> From: Heiko Stuebner <heiko.stuebner@vrull.eu> Add handling for Zbb extension. Zbb provides basic bit-manipulation instructions. As multiple subsequent features want to check for zbb presence, add the extension handling without directly including code using it. Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu> --- arch/riscv/Kconfig | 23 +++++++++++++++++++++++ arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/kernel/cpu.c | 1 + arch/riscv/kernel/cpufeature.c | 1 + 4 files changed, 26 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index f4299ba9a843..f4b0e0144516 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -426,6 +426,29 @@ config RISCV_ISA_V If you don't know what to do here, say Y. +config TOOLCHAIN_HAS_ZBB + bool + default y + depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb) + depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb) + depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900 + depends on AS_IS_GNU + +config RISCV_ISA_ZBB + bool "Zbb extension support for bit manipulation instructions" + depends on TOOLCHAIN_HAS_ZBB + depends on !XIP_KERNEL && MMU + default y + help + Adds support to dynamically detect the presence of the ZBB + extension (basic bit manipulation) and enable its usage. + + The Zbb extension provides instructions to accelerate a number + of bit-specific operations (count bit population, sign extending, + bitrotation, etc). + + If you don't know what to do here, say Y. + config TOOLCHAIN_HAS_ZICBOM bool default y diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index f413db6118e5..c8c69b49f0ad 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -59,6 +59,7 @@ enum riscv_isa_ext_id { RISCV_ISA_EXT_SSTC, RISCV_ISA_EXT_SVINVAL, RISCV_ISA_EXT_SVPBMT, + RISCV_ISA_EXT_ZBB, RISCV_ISA_EXT_ZICBOM, RISCV_ISA_EXT_ZIHINTPAUSE, RISCV_ISA_EXT_ID_MAX diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index 0bf1c7f663fc..420228e219f7 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -185,6 +185,7 @@ arch_initcall(riscv_cpuinfo_init); * New entries to this struct should follow the ordering rules described above. */ static struct riscv_isa_ext_data isa_ext_arr[] = { + __RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB), __RISCV_ISA_EXT_DATA(zicbom, RISCV_ISA_EXT_ZICBOM), __RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE), __RISCV_ISA_EXT_DATA(sscofpmf, RISCV_ISA_EXT_SSCOFPMF), diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index cbd60e744c09..33938f91cbbf 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -234,6 +234,7 @@ printk("!!!! isa-string: %s\n\n\n", isa); SET_ISA_EXT_MAP("sstc", RISCV_ISA_EXT_SSTC); SET_ISA_EXT_MAP("svinval", RISCV_ISA_EXT_SVINVAL); SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT); + SET_ISA_EXT_MAP("zbb", RISCV_ISA_EXT_ZBB); SET_ISA_EXT_MAP("zicbom", RISCV_ISA_EXT_ZICBOM); SET_ISA_EXT_MAP("zihintpause", RISCV_ISA_EXT_ZIHINTPAUSE); } -- 2.39.0
WARNING: multiple messages have this Message-ID (diff)
From: Heiko Stuebner <heiko@sntech.de> To: palmer@rivosinc.com Cc: greentime.hu@sifive.com, conor@kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, christoph.muellner@vrull.eu, Heiko Stuebner <heiko.stuebner@vrull.eu> Subject: [PATCH RFC 03/12] RISC-V: add Zbb extension detection Date: Mon, 6 Feb 2023 23:58:37 +0100 [thread overview] Message-ID: <20230206225846.1381789-4-heiko@sntech.de> (raw) In-Reply-To: <20230206225846.1381789-1-heiko@sntech.de> From: Heiko Stuebner <heiko.stuebner@vrull.eu> Add handling for Zbb extension. Zbb provides basic bit-manipulation instructions. As multiple subsequent features want to check for zbb presence, add the extension handling without directly including code using it. Signed-off-by: Heiko Stuebner <heiko.stuebner@vrull.eu> --- arch/riscv/Kconfig | 23 +++++++++++++++++++++++ arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/kernel/cpu.c | 1 + arch/riscv/kernel/cpufeature.c | 1 + 4 files changed, 26 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index f4299ba9a843..f4b0e0144516 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -426,6 +426,29 @@ config RISCV_ISA_V If you don't know what to do here, say Y. +config TOOLCHAIN_HAS_ZBB + bool + default y + depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb) + depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb) + depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900 + depends on AS_IS_GNU + +config RISCV_ISA_ZBB + bool "Zbb extension support for bit manipulation instructions" + depends on TOOLCHAIN_HAS_ZBB + depends on !XIP_KERNEL && MMU + default y + help + Adds support to dynamically detect the presence of the ZBB + extension (basic bit manipulation) and enable its usage. + + The Zbb extension provides instructions to accelerate a number + of bit-specific operations (count bit population, sign extending, + bitrotation, etc). + + If you don't know what to do here, say Y. + config TOOLCHAIN_HAS_ZICBOM bool default y diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index f413db6118e5..c8c69b49f0ad 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -59,6 +59,7 @@ enum riscv_isa_ext_id { RISCV_ISA_EXT_SSTC, RISCV_ISA_EXT_SVINVAL, RISCV_ISA_EXT_SVPBMT, + RISCV_ISA_EXT_ZBB, RISCV_ISA_EXT_ZICBOM, RISCV_ISA_EXT_ZIHINTPAUSE, RISCV_ISA_EXT_ID_MAX diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index 0bf1c7f663fc..420228e219f7 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -185,6 +185,7 @@ arch_initcall(riscv_cpuinfo_init); * New entries to this struct should follow the ordering rules described above. */ static struct riscv_isa_ext_data isa_ext_arr[] = { + __RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB), __RISCV_ISA_EXT_DATA(zicbom, RISCV_ISA_EXT_ZICBOM), __RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE), __RISCV_ISA_EXT_DATA(sscofpmf, RISCV_ISA_EXT_SSCOFPMF), diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index cbd60e744c09..33938f91cbbf 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -234,6 +234,7 @@ printk("!!!! isa-string: %s\n\n\n", isa); SET_ISA_EXT_MAP("sstc", RISCV_ISA_EXT_SSTC); SET_ISA_EXT_MAP("svinval", RISCV_ISA_EXT_SVINVAL); SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT); + SET_ISA_EXT_MAP("zbb", RISCV_ISA_EXT_ZBB); SET_ISA_EXT_MAP("zicbom", RISCV_ISA_EXT_ZICBOM); SET_ISA_EXT_MAP("zihintpause", RISCV_ISA_EXT_ZIHINTPAUSE); } -- 2.39.0 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2023-02-06 22:59 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-02-06 22:58 [PATCH RFC 00/12] RISC-V: support some cryptography accelerations Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 01/12] riscv: Add support for kernel mode vector Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 02/12] riscv: Add vector extension XOR implementation Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner [this message] 2023-02-06 22:58 ` [PATCH RFC 03/12] RISC-V: add Zbb extension detection Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 04/12] RISC-V: add Zbc " Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 05/12] RISC-V: add Zbkb " Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 06/12] RISC-V: hook new crypto subdir into build-system Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 07/12] RISC-V: crypto: add accelerated GCM GHASH implementation Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 08/12] RISC-V: add vector crypto extension detection Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 09/12] RISC-V: crypto: update perl include with helpers for vector (crypto) instructions Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 10/12] RISC-V: crypto: add Zvkb accelerated GCM GHASH implementation Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 11/12] RISC-V: crypto: add Zvkg " Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner 2023-02-06 22:58 ` [PATCH RFC 12/12] RISC-V: crypto: add a vector-crypto-accelerated SHA256 implementation Heiko Stuebner 2023-02-06 22:58 ` Heiko Stuebner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230206225846.1381789-4-heiko@sntech.de \ --to=heiko@sntech.de \ --cc=christoph.muellner@vrull.eu \ --cc=conor@kernel.org \ --cc=greentime.hu@sifive.com \ --cc=heiko.stuebner@vrull.eu \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=palmer@rivosinc.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.