[PATCH v2 2/6] riscv: hwprobe: Report Zicbom and Zicboz only when available
Radim Krčmář
radim.krcmar at oss.qualcomm.com
Tue Nov 10 09:50:44 PST 2026
User-mode use of Zicbom and Zicboz requires senvcfg.CBCFE and
senvcfg.CBZE, respectively, which we set only when all harts have the
extension.
hwprobe currently reports the extensions from the per-hart ISA bitmaps
alone, so it can advertise extensions that are always disabled in
user-mode. Report correct environment to user-mode.
Fixes: 1b57747e978f ("riscv: Enable cbo.zero only when all harts support Zicboz")
Fixes: eb1003970940 ("RISC-V: hwprobe: Expose Zicbom extension and its block size")
Reviewed-by: Charlie Jenkins <thecharlesjenkins at gmail.com>
Reviewed-by: Andy Chiu <tchiu at tenstorrent.com>
Reviewed-by: Guodong Xu <guodong.xu at oss.qualcomm.com>
Signed-off-by: Radim Krčmář <radim.krcmar at oss.qualcomm.com>
---
v2:
* slightly reworded commit message
* added r-b
---
arch/riscv/kernel/sys_hwprobe.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprobe.c
index feae40466e2b..73d5e25677a5 100644
--- a/arch/riscv/kernel/sys_hwprobe.c
+++ b/arch/riscv/kernel/sys_hwprobe.c
@@ -91,6 +91,12 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
if (has_vector() && riscv_isa_extension_available(NULL, V))
pair->value |= RISCV_HWPROBE_IMA_V;
+ if (riscv_isa_extension_available(NULL, ZICBOM))
+ pair->value |= RISCV_HWPROBE_EXT_ZICBOM;
+
+ if (riscv_isa_extension_available(NULL, ZICBOZ))
+ pair->value |= RISCV_HWPROBE_EXT_ZICBOZ;
+
/*
* Loop through and record extensions that 1) anyone has, and 2) anyone
* doesn't have.
@@ -120,9 +126,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
EXT_KEY(isainfo->isa, ZCB, pair->value, missing);
EXT_KEY(isainfo->isa, ZCLSD, pair->value, missing);
EXT_KEY(isainfo->isa, ZCMOP, pair->value, missing);
- EXT_KEY(isainfo->isa, ZICBOM, pair->value, missing);
EXT_KEY(isainfo->isa, ZICBOP, pair->value, missing);
- EXT_KEY(isainfo->isa, ZICBOZ, pair->value, missing);
EXT_KEY(isainfo->isa, ZICFILP, pair->value, missing);
EXT_KEY(isainfo->isa, ZICNTR, pair->value, missing);
EXT_KEY(isainfo->isa, ZICOND, pair->value, missing);
--
2.55.0
More information about the linux-riscv
mailing list