From: Charlie Jenkins <charlie@rivosinc.com>
To: "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Anup Patel" <anup@brainfault.org>,
"Atish Patra" <atish.patra@linux.dev>,
"Samuel Holland" <samuel.holland@sifive.com>,
"Björn Töpel" <bjorn@kernel.org>,
"Luke Nelson" <luke.r.nels@gmail.com>,
"Xi Wang" <xi.wang@gmail.com>,
"Eric Biggers" <ebiggers@kernel.org>,
"Conor Dooley" <conor@kernel.org>
Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org,
Charlie Jenkins <thecharlesjenkins@gmail.com>
Subject: [PATCH RFC 07/10] riscv: kconfig: Make vendor extensions tristate
Date: Wed, 10 Dec 2025 08:13:44 -0800 [thread overview]
Message-ID: <20251210-profiles-v1-7-315a6ff2ca5a@gmail.com> (raw)
In-Reply-To: <20251210-profiles-v1-0-315a6ff2ca5a@gmail.com>
Adjust the vendor extensions to use the same tristate selection as the
standard extensions. This will allow the vendor extensions to use the
same code paths as the standard extensions for discovery and
optimization.
Signed-off-by: Charlie Jenkins <thecharlesjenkins@gmail.com>
---
arch/riscv/Kconfig.vendor | 25 ++++++++++++++++++++++---
arch/riscv/kernel/vendor_extensions/Makefile | 22 +++++++++++++++-------
drivers/perf/Kconfig | 2 +-
3 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/arch/riscv/Kconfig.vendor b/arch/riscv/Kconfig.vendor
index 3c1f92e406c3..74155c5b642f 100644
--- a/arch/riscv/Kconfig.vendor
+++ b/arch/riscv/Kconfig.vendor
@@ -14,6 +14,20 @@ config RISCV_ISA_VENDOR_EXT_ANDES
requested by hardware probing to be ignored.
If you don't know what to do here, say Y.
+
+config RISCV_ISA_XANDESPMU
+ tristate "xandespmu extension support"
+ depends on NONPORTABLE || m
+ default m
+ help
+ The Andes cores implement the PMU overflow extension very
+ similar to the standard Sscofpmf and Smcntrpmf extension.
+
+ Select "m" for boot-time detection for portability.
+
+ Select "y" for compile-time detection for optimization. Only available with NONPORTABLE.
+
+ If you don't know what to do here, say m.
endmenu
menu "MIPS"
@@ -55,17 +69,22 @@ config RISCV_ISA_VENDOR_EXT_THEAD
If you don't know what to do here, say Y.
config RISCV_ISA_XTHEADVECTOR
- bool "xtheadvector extension support"
+ tristate "xtheadvector extension support"
depends on RISCV_ISA_VENDOR_EXT_THEAD
depends on RISCV_ISA_V
depends on FPU
- default y
+ depends on NONPORTABLE || m
+ default m
help
Say N here if you want to disable all xtheadvector related procedures
in the kernel. This will disable vector for any T-Head board that
contains xtheadvector rather than the standard vector.
- If you don't know what to do here, say Y.
+ Select "m" for boot-time detection for portability.
+
+ Select "y" for compile-time detection for optimization. Only available with NONPORTABLE.
+
+ If you don't know what to do here, say m.
endmenu
endmenu
diff --git a/arch/riscv/kernel/vendor_extensions/Makefile b/arch/riscv/kernel/vendor_extensions/Makefile
index bf116c82b6bd..e5ef5219a050 100644
--- a/arch/riscv/kernel/vendor_extensions/Makefile
+++ b/arch/riscv/kernel/vendor_extensions/Makefile
@@ -1,9 +1,17 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_ANDES) += andes.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_MIPS) += mips.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_MIPS) += mips_hwprobe.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_SIFIVE) += sifive.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_SIFIVE) += sifive_hwprobe.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_THEAD) += thead.o
-obj-$(CONFIG_RISCV_ISA_VENDOR_EXT_THEAD) += thead_hwprobe.o
+ifneq ($(filter y m,$(CONFIG_RISCV_ISA_VENDOR_EXT_ANDES)),)
+obj-y += andes.o
+endif
+ifneq ($(filter y m,$(CONFIG_RISCV_ISA_VENDOR_EXT_MIPS)),)
+obj-y += mips.o
+obj-y += mips_hwprobe.o
+endif
+ifneq ($(filter y m,$(CONFIG_RISCV_ISA_VENDOR_EXT_SIFIVE)),)
+obj-y += sifive.o
+obj-y += sifive_hwprobe.o
+endif
+ifneq ($(filter y m,$(CONFIG_RISCV_ISA_VENDOR_EXT_THEAD)),)
+obj-y += thead.o
+obj-y += thead_hwprobe.o
+endif
diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
index 638321fc9800..dfbd02d28c3f 100644
--- a/drivers/perf/Kconfig
+++ b/drivers/perf/Kconfig
@@ -117,7 +117,7 @@ config STARFIVE_STARLINK_PMU
config ANDES_CUSTOM_PMU
bool "Andes custom PMU support"
- depends on ARCH_RENESAS && RISCV_ALTERNATIVE && RISCV_PMU_SBI
+ depends on ARCH_RENESAS && RISCV_ALTERNATIVE && RISCV_PMU_SBI && RISCV_ISA_XANDESPMU
default y
help
The Andes cores implement the PMU overflow extension very
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2025-12-10 16:14 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-10 16:13 [PATCH RFC 00/10] riscv: Add support for rva23 Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 01/10] riscv: Standardize extension capitilization Charlie Jenkins
2026-01-15 2:48 ` Paul Walmsley
2026-01-15 16:03 ` Andrew Jones
2025-12-10 16:13 ` [PATCH RFC 02/10] riscv: kconfig: Reorganize extensions Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 03/10] riscv: kconfig: Simply arch selection Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 04/10] riscv: kconfig: Make extensions tristate Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 05/10] riscv: kconfig: Add zve32x Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 06/10] riscv: Makefile: Add enabled extensions to compiler flags Charlie Jenkins
2025-12-10 16:13 ` Charlie Jenkins [this message]
2025-12-10 16:13 ` [PATCH RFC 08/10] riscv: Optimize cpufeature macros for extension assumptions Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 09/10] riscv: kconfig: Add rva23 config Charlie Jenkins
2025-12-10 16:13 ` [PATCH RFC 10/10] riscv: csum: Remove inline assembly Charlie Jenkins
2026-01-14 18:16 ` [PATCH RFC 00/10] riscv: Add support for rva23 Paul Walmsley
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=20251210-profiles-v1-7-315a6ff2ca5a@gmail.com \
--to=charlie@rivosinc.com \
--cc=alex@ghiti.fr \
--cc=anup@brainfault.org \
--cc=atish.patra@linux.dev \
--cc=bjorn@kernel.org \
--cc=conor@kernel.org \
--cc=ebiggers@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=luke.r.nels@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=samuel.holland@sifive.com \
--cc=thecharlesjenkins@gmail.com \
--cc=xi.wang@gmail.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox