* [PATCH v1 1/2] uapi: riscv: hwprobe: add Zicbop extension bit and block-size key
2025-09-11 12:12 [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
@ 2025-09-11 12:12 ` Yao Zihong
2025-09-11 12:12 ` [PATCH v1 2/2] riscv: hwprobe: report Zicbop presence and block size Yao Zihong
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Yao Zihong @ 2025-09-11 12:12 UTC (permalink / raw)
To: linux-riscv
Cc: linux-kernel, zihong.plct, zihongyao, zhangyin2018, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Charlie Jenkins,
Clément Léger, Samuel Holland, Jesse Taube,
Miquel Sabaté Solà, Yunhui Cui
Introduce RISCV_HWPROBE_EXT_ZICBOP to report presence of the Zicbop
extension through sys_hwprobe(), and add
RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE to expose the block size (in bytes)
when Zicbop is supported.
Signed-off-by: Yao Zihong <zihong.plct@isrc.iscas.ac.cn>
---
arch/riscv/include/uapi/asm/hwprobe.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uapi/asm/hwprobe.h
index aaf6ad970499..c65c41a4d8ea 100644
--- a/arch/riscv/include/uapi/asm/hwprobe.h
+++ b/arch/riscv/include/uapi/asm/hwprobe.h
@@ -82,6 +82,7 @@ struct riscv_hwprobe {
#define RISCV_HWPROBE_EXT_ZAAMO (1ULL << 56)
#define RISCV_HWPROBE_EXT_ZALRSC (1ULL << 57)
#define RISCV_HWPROBE_EXT_ZABHA (1ULL << 58)
+#define RISCV_HWPROBE_EXT_ZICBOP (1ULL << 59)
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
#define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
@@ -106,6 +107,7 @@ struct riscv_hwprobe {
#define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
#define RISCV_HWPROBE_KEY_VENDOR_EXT_SIFIVE_0 13
+#define RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE 14
/* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
/* Flags */
--
2.47.2
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v1 2/2] riscv: hwprobe: report Zicbop presence and block size
2025-09-11 12:12 [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
2025-09-11 12:12 ` [PATCH v1 1/2] uapi: riscv: hwprobe: add Zicbop extension bit and block-size key Yao Zihong
@ 2025-09-11 12:12 ` Yao Zihong
2025-09-22 13:53 ` [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
2025-09-24 19:14 ` Andrew Jones
3 siblings, 0 replies; 5+ messages in thread
From: Yao Zihong @ 2025-09-11 12:12 UTC (permalink / raw)
To: linux-riscv
Cc: linux-kernel, zihong.plct, zihongyao, zhangyin2018, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Charlie Jenkins,
Clément Léger, Jesse Taube,
Miquel Sabaté Solà, Samuel Holland,
Thomas Weißschuh, Nam Cao, Yunhui Cui
Plumb Zicbop into sys_hwprobe. Semantics mirror Zicbom/Zicboz
to keep userspace expectations aligned.
Signed-off-by: Yao Zihong <zihong.plct@isrc.iscas.ac.cn>
---
arch/riscv/kernel/sys_hwprobe.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprobe.c
index 0b170e18a2be..857d4e602e76 100644
--- a/arch/riscv/kernel/sys_hwprobe.c
+++ b/arch/riscv/kernel/sys_hwprobe.c
@@ -112,6 +112,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
EXT_KEY(ZCB);
EXT_KEY(ZCMOP);
EXT_KEY(ZICBOM);
+ EXT_KEY(ZICBOP);
EXT_KEY(ZICBOZ);
EXT_KEY(ZICNTR);
EXT_KEY(ZICOND);
@@ -294,6 +295,11 @@ static void hwprobe_one_pair(struct riscv_hwprobe *pair,
if (hwprobe_ext0_has(cpus, RISCV_HWPROBE_EXT_ZICBOM))
pair->value = riscv_cbom_block_size;
break;
+ case RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE:
+ pair->value = 0;
+ if (hwprobe_ext0_has(cpus, RISCV_HWPROBE_EXT_ZICBOP))
+ pair->value = riscv_cbop_block_size;
+ break;
case RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS:
pair->value = user_max_virt_addr();
break;
--
2.47.2
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v1 0/2] riscv: hwprobe: add Zicbop support
2025-09-11 12:12 [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
2025-09-11 12:12 ` [PATCH v1 1/2] uapi: riscv: hwprobe: add Zicbop extension bit and block-size key Yao Zihong
2025-09-11 12:12 ` [PATCH v1 2/2] riscv: hwprobe: report Zicbop presence and block size Yao Zihong
@ 2025-09-22 13:53 ` Yao Zihong
2025-09-24 19:14 ` Andrew Jones
3 siblings, 0 replies; 5+ messages in thread
From: Yao Zihong @ 2025-09-22 13:53 UTC (permalink / raw)
To: zihong.plct
Cc: alex, aou, linux-kernel, linux-riscv, palmer, paul.walmsley,
zhangyin2018, zihongyao
Hi all,
It’s been about two weeks since I posted this patch.
Could someone take a look when convenient and let me know if there are
any concerns or improvements needed?
Patch links:
https://lore.kernel.org/linux-riscv/20250911121219.20243-1-zihong.plct@isrc.iscas.ac.cn/
https://lore.kernel.org/linux-riscv/20250911121219.20243-2-zihong.plct@isrc.iscas.ac.cn/
https://lore.kernel.org/linux-riscv/20250911121219.20243-3-zihong.plct@isrc.iscas.ac.cn/
If useful, I can resend with updates if needed.
Thanks for your attention.
Zihong
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v1 0/2] riscv: hwprobe: add Zicbop support
2025-09-11 12:12 [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
` (2 preceding siblings ...)
2025-09-22 13:53 ` [PATCH v1 0/2] riscv: hwprobe: add Zicbop support Yao Zihong
@ 2025-09-24 19:14 ` Andrew Jones
3 siblings, 0 replies; 5+ messages in thread
From: Andrew Jones @ 2025-09-24 19:14 UTC (permalink / raw)
To: Yao Zihong
Cc: linux-riscv, linux-kernel, zihongyao, zhangyin2018, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti
On Thu, Sep 11, 2025 at 08:12:07PM +0800, Yao Zihong wrote:
> Add UAPI and kernel plumbing to expose the Zicbop extension presence
> and its block size through sys_hwprobe(). The interface mirrors
> Zicbom/Zicboz.
Yes, the changes to add Zicbop support should closely resemble those
of Zicbom/Zicboz. So I suggest you grep / git-blame, etc. one or both of
those extensions in order to read how they were done.
With a quick look at this series I can see several changes are missing,
such as
- an update to the documentation, Documentation/arch/riscv/hwprobe.rst
- a bump to RISCV_HWPROBE_MAX_KEY (as the comment below the change
this patch makes says to do)
- test(s) added to tools/testing/selftests/riscv/hwprobe/cbo.c
Thanks,
drew
> This allows userspace to safely discover and optimize
> for Zicbop when available.
>
> Yao Zihong (2):
> uapi: riscv: hwprobe: add Zicbop extension bit and block-size key
> riscv: hwprobe: report Zicbop presence and block size
>
> arch/riscv/include/uapi/asm/hwprobe.h | 2 ++
> arch/riscv/kernel/sys_hwprobe.c | 6 ++++++
> 2 files changed, 8 insertions(+)
>
> --
> 2.47.2
>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 5+ messages in thread