sophgo.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] riscv: dts: sophgo: add more sg2042 isa extension support
@ 2025-05-09 22:11 Han Gao
  2025-05-09 22:11 ` [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree Han Gao
  2025-05-09 22:11 ` [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042 Han Gao
  0 siblings, 2 replies; 12+ messages in thread
From: Han Gao @ 2025-05-09 22:11 UTC (permalink / raw)
  To: devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
	Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Han Gao, sophgo, linux-riscv, linux-kernel

Add xtheadvector & ziccrse for sg2042

Thanks,
Han

Han Gao (2):
  riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  riscv: dts: sophgo: add ziccrse for sg2042

 arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 320 ++++++++++++--------
 1 file changed, 192 insertions(+), 128 deletions(-)

-- 
2.47.2


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-09 22:11 [PATCH 0/2] riscv: dts: sophgo: add more sg2042 isa extension support Han Gao
@ 2025-05-09 22:11 ` Han Gao
  2025-05-13  1:19   ` Chen Wang
  2025-05-09 22:11 ` [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042 Han Gao
  1 sibling, 1 reply; 12+ messages in thread
From: Han Gao @ 2025-05-09 22:11 UTC (permalink / raw)
  To: devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
	Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Han Gao, sophgo, linux-riscv, linux-kernel

The sg2042 SoCs support xtheadvector so it can be included in the
devicetree. Also include vlenb for the cpu.

Signed-off-by: Han Gao <rabenda.cn@gmail.com>
---
 arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
 1 file changed, 128 insertions(+), 64 deletions(-)

diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
index b136b6c4128c..927e0260acbd 100644
--- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
+++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
@@ -260,7 +260,8 @@ cpu0: cpu@0 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <0>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -285,7 +286,8 @@ cpu1: cpu@1 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <1>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -310,7 +312,8 @@ cpu2: cpu@2 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <2>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -335,7 +338,8 @@ cpu3: cpu@3 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <3>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -360,7 +364,8 @@ cpu4: cpu@4 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <4>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -385,7 +390,8 @@ cpu5: cpu@5 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <5>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -410,7 +416,8 @@ cpu6: cpu@6 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <6>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -435,7 +442,8 @@ cpu7: cpu@7 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <7>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -460,7 +468,8 @@ cpu8: cpu@8 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <8>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -485,7 +494,8 @@ cpu9: cpu@9 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <9>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -510,7 +520,8 @@ cpu10: cpu@10 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <10>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -535,7 +546,8 @@ cpu11: cpu@11 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <11>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -560,7 +572,8 @@ cpu12: cpu@12 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <12>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -585,7 +598,8 @@ cpu13: cpu@13 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <13>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -610,7 +624,8 @@ cpu14: cpu@14 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <14>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -635,7 +650,8 @@ cpu15: cpu@15 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <15>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -660,7 +676,8 @@ cpu16: cpu@16 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <16>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -685,7 +702,8 @@ cpu17: cpu@17 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <17>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -710,7 +728,8 @@ cpu18: cpu@18 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <18>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -735,7 +754,8 @@ cpu19: cpu@19 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <19>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -760,7 +780,8 @@ cpu20: cpu@20 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <20>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -785,7 +806,8 @@ cpu21: cpu@21 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <21>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -810,7 +832,8 @@ cpu22: cpu@22 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <22>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -835,7 +858,8 @@ cpu23: cpu@23 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <23>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -860,7 +884,8 @@ cpu24: cpu@24 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <24>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -885,7 +910,8 @@ cpu25: cpu@25 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <25>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -910,7 +936,8 @@ cpu26: cpu@26 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <26>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -935,7 +962,8 @@ cpu27: cpu@27 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <27>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -960,7 +988,8 @@ cpu28: cpu@28 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <28>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -985,7 +1014,8 @@ cpu29: cpu@29 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <29>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <30>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <31>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <32>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <33>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <34>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <35>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <36>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <37>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <38>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <39>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <40>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <41>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <42>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <43>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <44>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <45>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <46>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <47>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <48>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <49>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <50>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <51>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <52>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <53>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <54>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <55>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <56>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <57>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <58>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <59>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <60>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <61>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <62>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
@@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
 					       "zicntr", "zicsr", "zifencei",
-					       "zihpm";
+					       "zihpm", "xtheadvector";
+			thead,vlenb = <128>;
 			reg = <63>;
 			i-cache-block-size = <64>;
 			i-cache-size = <65536>;
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042
  2025-05-09 22:11 [PATCH 0/2] riscv: dts: sophgo: add more sg2042 isa extension support Han Gao
  2025-05-09 22:11 ` [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree Han Gao
@ 2025-05-09 22:11 ` Han Gao
  2025-05-09 22:42   ` Inochi Amaoto
  1 sibling, 1 reply; 12+ messages in thread
From: Han Gao @ 2025-05-09 22:11 UTC (permalink / raw)
  To: devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
	Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Han Gao, sophgo, linux-riscv, linux-kernel

sg2042 support Ziccrse ISA extension [1].

Link: https://lore.kernel.org/all/20241103145153.105097-12-alexghiti@rivosinc.com/ [1]

Signed-off-by: Han Gao <rabenda.cn@gmail.com>
---
 arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 128 ++++++++++----------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
index 927e0260acbd..04a6875574bb 100644
--- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
+++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
@@ -259,7 +259,7 @@ cpu0: cpu@0 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <0>;
@@ -285,7 +285,7 @@ cpu1: cpu@1 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <1>;
@@ -311,7 +311,7 @@ cpu2: cpu@2 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <2>;
@@ -337,7 +337,7 @@ cpu3: cpu@3 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <3>;
@@ -363,7 +363,7 @@ cpu4: cpu@4 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <4>;
@@ -389,7 +389,7 @@ cpu5: cpu@5 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <5>;
@@ -415,7 +415,7 @@ cpu6: cpu@6 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <6>;
@@ -441,7 +441,7 @@ cpu7: cpu@7 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <7>;
@@ -467,7 +467,7 @@ cpu8: cpu@8 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <8>;
@@ -493,7 +493,7 @@ cpu9: cpu@9 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <9>;
@@ -519,7 +519,7 @@ cpu10: cpu@10 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <10>;
@@ -545,7 +545,7 @@ cpu11: cpu@11 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <11>;
@@ -571,7 +571,7 @@ cpu12: cpu@12 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <12>;
@@ -597,7 +597,7 @@ cpu13: cpu@13 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <13>;
@@ -623,7 +623,7 @@ cpu14: cpu@14 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <14>;
@@ -649,7 +649,7 @@ cpu15: cpu@15 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <15>;
@@ -675,7 +675,7 @@ cpu16: cpu@16 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <16>;
@@ -701,7 +701,7 @@ cpu17: cpu@17 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <17>;
@@ -727,7 +727,7 @@ cpu18: cpu@18 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <18>;
@@ -753,7 +753,7 @@ cpu19: cpu@19 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <19>;
@@ -779,7 +779,7 @@ cpu20: cpu@20 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <20>;
@@ -805,7 +805,7 @@ cpu21: cpu@21 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <21>;
@@ -831,7 +831,7 @@ cpu22: cpu@22 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <22>;
@@ -857,7 +857,7 @@ cpu23: cpu@23 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <23>;
@@ -883,7 +883,7 @@ cpu24: cpu@24 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <24>;
@@ -909,7 +909,7 @@ cpu25: cpu@25 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <25>;
@@ -935,7 +935,7 @@ cpu26: cpu@26 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <26>;
@@ -961,7 +961,7 @@ cpu27: cpu@27 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <27>;
@@ -987,7 +987,7 @@ cpu28: cpu@28 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <28>;
@@ -1013,7 +1013,7 @@ cpu29: cpu@29 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <29>;
@@ -1039,7 +1039,7 @@ cpu30: cpu@30 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <30>;
@@ -1065,7 +1065,7 @@ cpu31: cpu@31 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <31>;
@@ -1091,7 +1091,7 @@ cpu32: cpu@32 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <32>;
@@ -1117,7 +1117,7 @@ cpu33: cpu@33 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <33>;
@@ -1143,7 +1143,7 @@ cpu34: cpu@34 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <34>;
@@ -1169,7 +1169,7 @@ cpu35: cpu@35 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <35>;
@@ -1195,7 +1195,7 @@ cpu36: cpu@36 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <36>;
@@ -1221,7 +1221,7 @@ cpu37: cpu@37 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <37>;
@@ -1247,7 +1247,7 @@ cpu38: cpu@38 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <38>;
@@ -1273,7 +1273,7 @@ cpu39: cpu@39 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <39>;
@@ -1299,7 +1299,7 @@ cpu40: cpu@40 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <40>;
@@ -1325,7 +1325,7 @@ cpu41: cpu@41 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <41>;
@@ -1351,7 +1351,7 @@ cpu42: cpu@42 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <42>;
@@ -1377,7 +1377,7 @@ cpu43: cpu@43 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <43>;
@@ -1403,7 +1403,7 @@ cpu44: cpu@44 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <44>;
@@ -1429,7 +1429,7 @@ cpu45: cpu@45 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <45>;
@@ -1455,7 +1455,7 @@ cpu46: cpu@46 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <46>;
@@ -1481,7 +1481,7 @@ cpu47: cpu@47 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <47>;
@@ -1507,7 +1507,7 @@ cpu48: cpu@48 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <48>;
@@ -1533,7 +1533,7 @@ cpu49: cpu@49 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <49>;
@@ -1559,7 +1559,7 @@ cpu50: cpu@50 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <50>;
@@ -1585,7 +1585,7 @@ cpu51: cpu@51 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <51>;
@@ -1611,7 +1611,7 @@ cpu52: cpu@52 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <52>;
@@ -1637,7 +1637,7 @@ cpu53: cpu@53 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <53>;
@@ -1663,7 +1663,7 @@ cpu54: cpu@54 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <54>;
@@ -1689,7 +1689,7 @@ cpu55: cpu@55 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <55>;
@@ -1715,7 +1715,7 @@ cpu56: cpu@56 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <56>;
@@ -1741,7 +1741,7 @@ cpu57: cpu@57 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <57>;
@@ -1767,7 +1767,7 @@ cpu58: cpu@58 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <58>;
@@ -1793,7 +1793,7 @@ cpu59: cpu@59 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <59>;
@@ -1819,7 +1819,7 @@ cpu60: cpu@60 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <60>;
@@ -1845,7 +1845,7 @@ cpu61: cpu@61 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <61>;
@@ -1871,7 +1871,7 @@ cpu62: cpu@62 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <62>;
@@ -1897,7 +1897,7 @@ cpu63: cpu@63 {
 			riscv,isa = "rv64imafdc";
 			riscv,isa-base = "rv64i";
 			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-					       "zicntr", "zicsr", "zifencei",
+					       "ziccrse", "zicntr", "zicsr", "zifencei",
 					       "zihpm", "xtheadvector";
 			thead,vlenb = <128>;
 			reg = <63>;
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042
  2025-05-09 22:11 ` [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042 Han Gao
@ 2025-05-09 22:42   ` Inochi Amaoto
  2025-05-10  0:15     ` Inochi Amaoto
  0 siblings, 1 reply; 12+ messages in thread
From: Inochi Amaoto @ 2025-05-09 22:42 UTC (permalink / raw)
  To: Han Gao, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
	Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, sophgo, linux-riscv, linux-kernel

On Sat, May 10, 2025 at 06:11:23AM +0800, Han Gao wrote:
> sg2042 support Ziccrse ISA extension [1].
> 
> Link: https://lore.kernel.org/all/20241103145153.105097-12-alexghiti@rivosinc.com/ [1]
> 
> Signed-off-by: Han Gao <rabenda.cn@gmail.com>
> ---
>  arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 128 ++++++++++----------
>  1 file changed, 64 insertions(+), 64 deletions(-)
> 
> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> index 927e0260acbd..04a6875574bb 100644
> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> @@ -259,7 +259,7 @@ cpu0: cpu@0 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <0>;

I prefer to keep the maximum 74 chars per line. I suggest wrapping
the string. This apply to all the change of this file.

Regards,
Inochi

> @@ -285,7 +285,7 @@ cpu1: cpu@1 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <1>;
> @@ -311,7 +311,7 @@ cpu2: cpu@2 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <2>;
> @@ -337,7 +337,7 @@ cpu3: cpu@3 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <3>;
> @@ -363,7 +363,7 @@ cpu4: cpu@4 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <4>;
> @@ -389,7 +389,7 @@ cpu5: cpu@5 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <5>;
> @@ -415,7 +415,7 @@ cpu6: cpu@6 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <6>;
> @@ -441,7 +441,7 @@ cpu7: cpu@7 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <7>;
> @@ -467,7 +467,7 @@ cpu8: cpu@8 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <8>;
> @@ -493,7 +493,7 @@ cpu9: cpu@9 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <9>;
> @@ -519,7 +519,7 @@ cpu10: cpu@10 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <10>;
> @@ -545,7 +545,7 @@ cpu11: cpu@11 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <11>;
> @@ -571,7 +571,7 @@ cpu12: cpu@12 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <12>;
> @@ -597,7 +597,7 @@ cpu13: cpu@13 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <13>;
> @@ -623,7 +623,7 @@ cpu14: cpu@14 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <14>;
> @@ -649,7 +649,7 @@ cpu15: cpu@15 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <15>;
> @@ -675,7 +675,7 @@ cpu16: cpu@16 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <16>;
> @@ -701,7 +701,7 @@ cpu17: cpu@17 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <17>;
> @@ -727,7 +727,7 @@ cpu18: cpu@18 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <18>;
> @@ -753,7 +753,7 @@ cpu19: cpu@19 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <19>;
> @@ -779,7 +779,7 @@ cpu20: cpu@20 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <20>;
> @@ -805,7 +805,7 @@ cpu21: cpu@21 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <21>;
> @@ -831,7 +831,7 @@ cpu22: cpu@22 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <22>;
> @@ -857,7 +857,7 @@ cpu23: cpu@23 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <23>;
> @@ -883,7 +883,7 @@ cpu24: cpu@24 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <24>;
> @@ -909,7 +909,7 @@ cpu25: cpu@25 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <25>;
> @@ -935,7 +935,7 @@ cpu26: cpu@26 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <26>;
> @@ -961,7 +961,7 @@ cpu27: cpu@27 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <27>;
> @@ -987,7 +987,7 @@ cpu28: cpu@28 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <28>;
> @@ -1013,7 +1013,7 @@ cpu29: cpu@29 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <29>;
> @@ -1039,7 +1039,7 @@ cpu30: cpu@30 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <30>;
> @@ -1065,7 +1065,7 @@ cpu31: cpu@31 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <31>;
> @@ -1091,7 +1091,7 @@ cpu32: cpu@32 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <32>;
> @@ -1117,7 +1117,7 @@ cpu33: cpu@33 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <33>;
> @@ -1143,7 +1143,7 @@ cpu34: cpu@34 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <34>;
> @@ -1169,7 +1169,7 @@ cpu35: cpu@35 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <35>;
> @@ -1195,7 +1195,7 @@ cpu36: cpu@36 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <36>;
> @@ -1221,7 +1221,7 @@ cpu37: cpu@37 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <37>;
> @@ -1247,7 +1247,7 @@ cpu38: cpu@38 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <38>;
> @@ -1273,7 +1273,7 @@ cpu39: cpu@39 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <39>;
> @@ -1299,7 +1299,7 @@ cpu40: cpu@40 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <40>;
> @@ -1325,7 +1325,7 @@ cpu41: cpu@41 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <41>;
> @@ -1351,7 +1351,7 @@ cpu42: cpu@42 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <42>;
> @@ -1377,7 +1377,7 @@ cpu43: cpu@43 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <43>;
> @@ -1403,7 +1403,7 @@ cpu44: cpu@44 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <44>;
> @@ -1429,7 +1429,7 @@ cpu45: cpu@45 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <45>;
> @@ -1455,7 +1455,7 @@ cpu46: cpu@46 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <46>;
> @@ -1481,7 +1481,7 @@ cpu47: cpu@47 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <47>;
> @@ -1507,7 +1507,7 @@ cpu48: cpu@48 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <48>;
> @@ -1533,7 +1533,7 @@ cpu49: cpu@49 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <49>;
> @@ -1559,7 +1559,7 @@ cpu50: cpu@50 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <50>;
> @@ -1585,7 +1585,7 @@ cpu51: cpu@51 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <51>;
> @@ -1611,7 +1611,7 @@ cpu52: cpu@52 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <52>;
> @@ -1637,7 +1637,7 @@ cpu53: cpu@53 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <53>;
> @@ -1663,7 +1663,7 @@ cpu54: cpu@54 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <54>;
> @@ -1689,7 +1689,7 @@ cpu55: cpu@55 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <55>;
> @@ -1715,7 +1715,7 @@ cpu56: cpu@56 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <56>;
> @@ -1741,7 +1741,7 @@ cpu57: cpu@57 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <57>;
> @@ -1767,7 +1767,7 @@ cpu58: cpu@58 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <58>;
> @@ -1793,7 +1793,7 @@ cpu59: cpu@59 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <59>;
> @@ -1819,7 +1819,7 @@ cpu60: cpu@60 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <60>;
> @@ -1845,7 +1845,7 @@ cpu61: cpu@61 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <61>;
> @@ -1871,7 +1871,7 @@ cpu62: cpu@62 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <62>;
> @@ -1897,7 +1897,7 @@ cpu63: cpu@63 {
>  			riscv,isa = "rv64imafdc";
>  			riscv,isa-base = "rv64i";
>  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> -					       "zicntr", "zicsr", "zifencei",
> +					       "ziccrse", "zicntr", "zicsr", "zifencei",
>  					       "zihpm", "xtheadvector";
>  			thead,vlenb = <128>;
>  			reg = <63>;
> -- 
> 2.47.2
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042
  2025-05-09 22:42   ` Inochi Amaoto
@ 2025-05-10  0:15     ` Inochi Amaoto
  0 siblings, 0 replies; 12+ messages in thread
From: Inochi Amaoto @ 2025-05-10  0:15 UTC (permalink / raw)
  To: Han Gao, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
	Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, sophgo, linux-riscv, linux-kernel

On Sat, May 10, 2025 at 06:42:02AM +0800, Inochi Amaoto wrote:
> On Sat, May 10, 2025 at 06:11:23AM +0800, Han Gao wrote:
> > sg2042 support Ziccrse ISA extension [1].
> > 
> > Link: https://lore.kernel.org/all/20241103145153.105097-12-alexghiti@rivosinc.com/ [1]
> > 
> > Signed-off-by: Han Gao <rabenda.cn@gmail.com>
> > ---
> >  arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 128 ++++++++++----------
> >  1 file changed, 64 insertions(+), 64 deletions(-)
> > 
> > diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > index 927e0260acbd..04a6875574bb 100644
> > --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > @@ -259,7 +259,7 @@ cpu0: cpu@0 {
> >  			riscv,isa = "rv64imafdc";
> >  			riscv,isa-base = "rv64i";
> >  			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> > -					       "zicntr", "zicsr", "zifencei",
> > +					       "ziccrse", "zicntr", "zicsr", "zifencei",
> >  					       "zihpm", "xtheadvector";
> >  			thead,vlenb = <128>;
> >  			reg = <0>;
> 
> I prefer to keep the maximum 74 chars per line. I suggest wrapping
> the string. This apply to all the change of this file.
> 

So, I mistake something, please wrap the line with max 80 chars.

Regards,
Inochi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-09 22:11 ` [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree Han Gao
@ 2025-05-13  1:19   ` Chen Wang
  2025-05-13  4:47     ` Inochi Amaoto
  2025-05-13  6:45     ` Han Gao
  0 siblings, 2 replies; 12+ messages in thread
From: Chen Wang @ 2025-05-13  1:19 UTC (permalink / raw)
  To: Han Gao, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel

Hi,Han,

I tested with this patch and the machine can bootup. But I find when I 
run "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print 
nothing, though I expect to see 128.

Do you know why?

Regards,

Chen

On 2025/5/10 6:11, Han Gao wrote:
> The sg2042 SoCs support xtheadvector so it can be included in the
> devicetree. Also include vlenb for the cpu.
>
> Signed-off-by: Han Gao <rabenda.cn@gmail.com>
> ---
>   arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
>   1 file changed, 128 insertions(+), 64 deletions(-)
>
> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> index b136b6c4128c..927e0260acbd 100644
> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> @@ -260,7 +260,8 @@ cpu0: cpu@0 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <0>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -285,7 +286,8 @@ cpu1: cpu@1 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <1>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -310,7 +312,8 @@ cpu2: cpu@2 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <2>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -335,7 +338,8 @@ cpu3: cpu@3 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <3>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -360,7 +364,8 @@ cpu4: cpu@4 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <4>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -385,7 +390,8 @@ cpu5: cpu@5 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <5>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -410,7 +416,8 @@ cpu6: cpu@6 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <6>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -435,7 +442,8 @@ cpu7: cpu@7 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <7>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -460,7 +468,8 @@ cpu8: cpu@8 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <8>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -485,7 +494,8 @@ cpu9: cpu@9 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <9>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -510,7 +520,8 @@ cpu10: cpu@10 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <10>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -535,7 +546,8 @@ cpu11: cpu@11 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <11>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -560,7 +572,8 @@ cpu12: cpu@12 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <12>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -585,7 +598,8 @@ cpu13: cpu@13 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <13>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -610,7 +624,8 @@ cpu14: cpu@14 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <14>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -635,7 +650,8 @@ cpu15: cpu@15 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <15>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -660,7 +676,8 @@ cpu16: cpu@16 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <16>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -685,7 +702,8 @@ cpu17: cpu@17 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <17>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -710,7 +728,8 @@ cpu18: cpu@18 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <18>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -735,7 +754,8 @@ cpu19: cpu@19 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <19>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -760,7 +780,8 @@ cpu20: cpu@20 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <20>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -785,7 +806,8 @@ cpu21: cpu@21 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <21>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -810,7 +832,8 @@ cpu22: cpu@22 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <22>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -835,7 +858,8 @@ cpu23: cpu@23 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <23>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -860,7 +884,8 @@ cpu24: cpu@24 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <24>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -885,7 +910,8 @@ cpu25: cpu@25 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <25>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -910,7 +936,8 @@ cpu26: cpu@26 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <26>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -935,7 +962,8 @@ cpu27: cpu@27 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <27>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -960,7 +988,8 @@ cpu28: cpu@28 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <28>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -985,7 +1014,8 @@ cpu29: cpu@29 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <29>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <30>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <31>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <32>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <33>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <34>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <35>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <36>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <37>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <38>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <39>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <40>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <41>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <42>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <43>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <44>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <45>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <46>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <47>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <48>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <49>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <50>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <51>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <52>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <53>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <54>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <55>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <56>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <57>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <58>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <59>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <60>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <61>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <62>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;
> @@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
>   			riscv,isa-base = "rv64i";
>   			riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>   					       "zicntr", "zicsr", "zifencei",
> -					       "zihpm";
> +					       "zihpm", "xtheadvector";
> +			thead,vlenb = <128>;
>   			reg = <63>;
>   			i-cache-block-size = <64>;
>   			i-cache-size = <65536>;

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13  1:19   ` Chen Wang
@ 2025-05-13  4:47     ` Inochi Amaoto
  2025-05-13  6:45     ` Han Gao
  1 sibling, 0 replies; 12+ messages in thread
From: Inochi Amaoto @ 2025-05-13  4:47 UTC (permalink / raw)
  To: Chen Wang, Han Gao, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel

On Tue, May 13, 2025 at 09:19:07AM +0800, Chen Wang wrote:
> Hi,Han,
> 
> I tested with this patch and the machine can bootup. But I find when I run
> "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print nothing,
> though I expect to see 128.
> 
> Do you know why?
> 

Maybe this is a hex number? Do you try hexdump?

Regards,
Inochi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13  1:19   ` Chen Wang
  2025-05-13  4:47     ` Inochi Amaoto
@ 2025-05-13  6:45     ` Han Gao
  2025-05-13  8:06       ` Chen Wang
  1 sibling, 1 reply; 12+ messages in thread
From: Han Gao @ 2025-05-13  6:45 UTC (permalink / raw)
  To: Chen Wang, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel

You can use xxd to convert it.

cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb | xxd
00000000: 0000 0080                                ....

Regards,
Han

On Tue, May 13, 2025 at 9:19 AM Chen Wang <unicorn_wang@outlook.com> wrote:
>
> Hi,Han,
>
> I tested with this patch and the machine can bootup. But I find when I
> run "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print
> nothing, though I expect to see 128.
>
> Do you know why?
>
> Regards,
>
> Chen
>
> On 2025/5/10 6:11, Han Gao wrote:
> > The sg2042 SoCs support xtheadvector so it can be included in the
> > devicetree. Also include vlenb for the cpu.
> >
> > Signed-off-by: Han Gao <rabenda.cn@gmail.com>
> > ---
> >   arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
> >   1 file changed, 128 insertions(+), 64 deletions(-)
> >
> > diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > index b136b6c4128c..927e0260acbd 100644
> > --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> > @@ -260,7 +260,8 @@ cpu0: cpu@0 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <0>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -285,7 +286,8 @@ cpu1: cpu@1 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <1>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -310,7 +312,8 @@ cpu2: cpu@2 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <2>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -335,7 +338,8 @@ cpu3: cpu@3 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <3>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -360,7 +364,8 @@ cpu4: cpu@4 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <4>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -385,7 +390,8 @@ cpu5: cpu@5 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <5>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -410,7 +416,8 @@ cpu6: cpu@6 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <6>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -435,7 +442,8 @@ cpu7: cpu@7 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <7>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -460,7 +468,8 @@ cpu8: cpu@8 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <8>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -485,7 +494,8 @@ cpu9: cpu@9 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <9>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -510,7 +520,8 @@ cpu10: cpu@10 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <10>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -535,7 +546,8 @@ cpu11: cpu@11 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <11>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -560,7 +572,8 @@ cpu12: cpu@12 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <12>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -585,7 +598,8 @@ cpu13: cpu@13 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <13>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -610,7 +624,8 @@ cpu14: cpu@14 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <14>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -635,7 +650,8 @@ cpu15: cpu@15 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <15>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -660,7 +676,8 @@ cpu16: cpu@16 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <16>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -685,7 +702,8 @@ cpu17: cpu@17 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <17>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -710,7 +728,8 @@ cpu18: cpu@18 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <18>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -735,7 +754,8 @@ cpu19: cpu@19 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <19>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -760,7 +780,8 @@ cpu20: cpu@20 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <20>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -785,7 +806,8 @@ cpu21: cpu@21 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <21>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -810,7 +832,8 @@ cpu22: cpu@22 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <22>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -835,7 +858,8 @@ cpu23: cpu@23 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <23>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -860,7 +884,8 @@ cpu24: cpu@24 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <24>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -885,7 +910,8 @@ cpu25: cpu@25 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <25>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -910,7 +936,8 @@ cpu26: cpu@26 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <26>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -935,7 +962,8 @@ cpu27: cpu@27 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <27>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -960,7 +988,8 @@ cpu28: cpu@28 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <28>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -985,7 +1014,8 @@ cpu29: cpu@29 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <29>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <30>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <31>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <32>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <33>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <34>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <35>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <36>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <37>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <38>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <39>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <40>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <41>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <42>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <43>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <44>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <45>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <46>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <47>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <48>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <49>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <50>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <51>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <52>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <53>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <54>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <55>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <56>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <57>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <58>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <59>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <60>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <61>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <62>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;
> > @@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
> >                       riscv,isa-base = "rv64i";
> >                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >                                              "zicntr", "zicsr", "zifencei",
> > -                                            "zihpm";
> > +                                            "zihpm", "xtheadvector";
> > +                     thead,vlenb = <128>;
> >                       reg = <63>;
> >                       i-cache-block-size = <64>;
> >                       i-cache-size = <65536>;

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13  6:45     ` Han Gao
@ 2025-05-13  8:06       ` Chen Wang
  2025-05-13  9:13         ` Han Gao
  0 siblings, 1 reply; 12+ messages in thread
From: Chen Wang @ 2025-05-13  8:06 UTC (permalink / raw)
  To: Han Gao, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel


On 2025/5/13 14:45, Han Gao wrote:
> You can use xxd to convert it.
>
> cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb | xxd
> 00000000: 0000 0080                                ....
>
> Regards,
> Han

I can read this after disable ERRATA_THEAD_GHOSTWRITE.

I recommend adding some explanation notes in the commit message. For 
example, when we need to enable xtheadvector, the prerequisite is to 
turn off "ERRATA_THEAD_GHOSTWRITE".
I found the relevant patch is 
https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-0-236c22791ef9@rivosinc.com/, 
also hope adding this will help later people quickly understand and 
avoid my mistakes.

One more question is about writing value of "thead,vlenb". See bindings 
description in Documentation/devicetree/bindings/riscv/cpus.yaml:

```

   thead,vlenb:
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       VLEN/8, the vector register length in bytes. This property is 
required on
       thead systems where the vector register length is not identical 
on all harts, or
       the vlenb CSR is not available.

```

What I am not sure about is whether we should write 128 or 128/8=16? 
Assuming VLEN of C910 is 128bit.

Thanks,

Chen

>
> On Tue, May 13, 2025 at 9:19 AM Chen Wang <unicorn_wang@outlook.com> wrote:
>> Hi,Han,
>>
>> I tested with this patch and the machine can bootup. But I find when I
>> run "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print
>> nothing, though I expect to see 128.
>>
>> Do you know why?
>>
>> Regards,
>>
>> Chen
>>
>> On 2025/5/10 6:11, Han Gao wrote:
>>> The sg2042 SoCs support xtheadvector so it can be included in the
>>> devicetree. Also include vlenb for the cpu.
>>>
>>> Signed-off-by: Han Gao <rabenda.cn@gmail.com>
>>> ---
>>>    arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
>>>    1 file changed, 128 insertions(+), 64 deletions(-)
>>>
>>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>> index b136b6c4128c..927e0260acbd 100644
>>> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>> @@ -260,7 +260,8 @@ cpu0: cpu@0 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <0>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -285,7 +286,8 @@ cpu1: cpu@1 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <1>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -310,7 +312,8 @@ cpu2: cpu@2 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <2>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -335,7 +338,8 @@ cpu3: cpu@3 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <3>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -360,7 +364,8 @@ cpu4: cpu@4 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <4>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -385,7 +390,8 @@ cpu5: cpu@5 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <5>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -410,7 +416,8 @@ cpu6: cpu@6 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <6>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -435,7 +442,8 @@ cpu7: cpu@7 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <7>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -460,7 +468,8 @@ cpu8: cpu@8 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <8>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -485,7 +494,8 @@ cpu9: cpu@9 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <9>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -510,7 +520,8 @@ cpu10: cpu@10 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <10>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -535,7 +546,8 @@ cpu11: cpu@11 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <11>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -560,7 +572,8 @@ cpu12: cpu@12 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <12>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -585,7 +598,8 @@ cpu13: cpu@13 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <13>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -610,7 +624,8 @@ cpu14: cpu@14 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <14>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -635,7 +650,8 @@ cpu15: cpu@15 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <15>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -660,7 +676,8 @@ cpu16: cpu@16 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <16>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -685,7 +702,8 @@ cpu17: cpu@17 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <17>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -710,7 +728,8 @@ cpu18: cpu@18 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <18>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -735,7 +754,8 @@ cpu19: cpu@19 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <19>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -760,7 +780,8 @@ cpu20: cpu@20 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <20>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -785,7 +806,8 @@ cpu21: cpu@21 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <21>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -810,7 +832,8 @@ cpu22: cpu@22 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <22>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -835,7 +858,8 @@ cpu23: cpu@23 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <23>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -860,7 +884,8 @@ cpu24: cpu@24 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <24>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -885,7 +910,8 @@ cpu25: cpu@25 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <25>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -910,7 +936,8 @@ cpu26: cpu@26 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <26>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -935,7 +962,8 @@ cpu27: cpu@27 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <27>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -960,7 +988,8 @@ cpu28: cpu@28 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <28>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -985,7 +1014,8 @@ cpu29: cpu@29 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <29>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <30>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <31>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <32>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <33>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <34>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <35>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <36>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <37>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <38>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <39>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <40>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <41>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <42>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <43>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <44>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <45>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <46>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <47>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <48>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <49>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <50>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <51>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <52>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <53>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <54>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <55>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <56>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <57>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <58>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <59>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <60>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <61>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <62>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;
>>> @@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
>>>                        riscv,isa-base = "rv64i";
>>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>                                               "zicntr", "zicsr", "zifencei",
>>> -                                            "zihpm";
>>> +                                            "zihpm", "xtheadvector";
>>> +                     thead,vlenb = <128>;
>>>                        reg = <63>;
>>>                        i-cache-block-size = <64>;
>>>                        i-cache-size = <65536>;

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13  8:06       ` Chen Wang
@ 2025-05-13  9:13         ` Han Gao
  2025-05-13 10:05           ` Chen Wang
  0 siblings, 1 reply; 12+ messages in thread
From: Han Gao @ 2025-05-13  9:13 UTC (permalink / raw)
  To: Chen Wang, devicetree
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel

> Assuming VLEN of C910 is 128bit.

I refer to the value of c906 because c906 and c910/c920v1 have the same value.

Link: https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-3-236c22791ef9@rivosinc.com/
[1]

On Tue, May 13, 2025 at 4:06 PM Chen Wang <unicorn_wang@outlook.com> wrote:
>
>
> On 2025/5/13 14:45, Han Gao wrote:
> > You can use xxd to convert it.
> >
> > cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb | xxd
> > 00000000: 0000 0080                                ....
> >
> > Regards,
> > Han
>
> I can read this after disable ERRATA_THEAD_GHOSTWRITE.
>
> I recommend adding some explanation notes in the commit message. For
> example, when we need to enable xtheadvector, the prerequisite is to
> turn off "ERRATA_THEAD_GHOSTWRITE".
> I found the relevant patch is
> https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-0-236c22791ef9@rivosinc.com/,
> also hope adding this will help later people quickly understand and
> avoid my mistakes.
>
> One more question is about writing value of "thead,vlenb". See bindings
> description in Documentation/devicetree/bindings/riscv/cpus.yaml:
>
> ```
>
>    thead,vlenb:
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        VLEN/8, the vector register length in bytes. This property is
> required on
>        thead systems where the vector register length is not identical
> on all harts, or
>        the vlenb CSR is not available.
>
> ```
>
> What I am not sure about is whether we should write 128 or 128/8=16?
> Assuming VLEN of C910 is 128bit.
>
> Thanks,
>
> Chen
>
> >
> > On Tue, May 13, 2025 at 9:19 AM Chen Wang <unicorn_wang@outlook.com> wrote:
> >> Hi,Han,
> >>
> >> I tested with this patch and the machine can bootup. But I find when I
> >> run "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print
> >> nothing, though I expect to see 128.
> >>
> >> Do you know why?
> >>
> >> Regards,
> >>
> >> Chen
> >>
> >> On 2025/5/10 6:11, Han Gao wrote:
> >>> The sg2042 SoCs support xtheadvector so it can be included in the
> >>> devicetree. Also include vlenb for the cpu.
> >>>
> >>> Signed-off-by: Han Gao <rabenda.cn@gmail.com>
> >>> ---
> >>>    arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
> >>>    1 file changed, 128 insertions(+), 64 deletions(-)
> >>>
> >>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> >>> index b136b6c4128c..927e0260acbd 100644
> >>> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> >>> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
> >>> @@ -260,7 +260,8 @@ cpu0: cpu@0 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <0>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -285,7 +286,8 @@ cpu1: cpu@1 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <1>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -310,7 +312,8 @@ cpu2: cpu@2 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <2>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -335,7 +338,8 @@ cpu3: cpu@3 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <3>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -360,7 +364,8 @@ cpu4: cpu@4 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <4>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -385,7 +390,8 @@ cpu5: cpu@5 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <5>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -410,7 +416,8 @@ cpu6: cpu@6 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <6>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -435,7 +442,8 @@ cpu7: cpu@7 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <7>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -460,7 +468,8 @@ cpu8: cpu@8 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <8>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -485,7 +494,8 @@ cpu9: cpu@9 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <9>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -510,7 +520,8 @@ cpu10: cpu@10 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <10>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -535,7 +546,8 @@ cpu11: cpu@11 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <11>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -560,7 +572,8 @@ cpu12: cpu@12 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <12>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -585,7 +598,8 @@ cpu13: cpu@13 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <13>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -610,7 +624,8 @@ cpu14: cpu@14 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <14>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -635,7 +650,8 @@ cpu15: cpu@15 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <15>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -660,7 +676,8 @@ cpu16: cpu@16 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <16>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -685,7 +702,8 @@ cpu17: cpu@17 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <17>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -710,7 +728,8 @@ cpu18: cpu@18 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <18>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -735,7 +754,8 @@ cpu19: cpu@19 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <19>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -760,7 +780,8 @@ cpu20: cpu@20 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <20>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -785,7 +806,8 @@ cpu21: cpu@21 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <21>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -810,7 +832,8 @@ cpu22: cpu@22 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <22>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -835,7 +858,8 @@ cpu23: cpu@23 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <23>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -860,7 +884,8 @@ cpu24: cpu@24 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <24>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -885,7 +910,8 @@ cpu25: cpu@25 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <25>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -910,7 +936,8 @@ cpu26: cpu@26 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <26>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -935,7 +962,8 @@ cpu27: cpu@27 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <27>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -960,7 +988,8 @@ cpu28: cpu@28 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <28>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -985,7 +1014,8 @@ cpu29: cpu@29 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <29>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <30>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <31>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <32>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <33>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <34>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <35>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <36>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <37>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <38>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <39>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <40>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <41>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <42>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <43>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <44>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <45>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <46>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <47>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <48>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <49>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <50>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <51>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <52>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <53>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <54>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <55>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <56>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <57>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <58>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <59>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <60>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <61>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <62>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;
> >>> @@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
> >>>                        riscv,isa-base = "rv64i";
> >>>                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
> >>>                                               "zicntr", "zicsr", "zifencei",
> >>> -                                            "zihpm";
> >>> +                                            "zihpm", "xtheadvector";
> >>> +                     thead,vlenb = <128>;
> >>>                        reg = <63>;
> >>>                        i-cache-block-size = <64>;
> >>>                        i-cache-size = <65536>;

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13  9:13         ` Han Gao
@ 2025-05-13 10:05           ` Chen Wang
  2025-05-13 21:25             ` Charlie Jenkins
  0 siblings, 1 reply; 12+ messages in thread
From: Chen Wang @ 2025-05-13 10:05 UTC (permalink / raw)
  To: Han Gao, devicetree, charlie
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Inochi Amaoto,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, sophgo,
	linux-riscv, linux-kernel

Adding Charlie.

Hi, Charlie,

Can you please help confirm this? Is there something wrong with my 
understanding? Copied here below for your quick reference:

> One more question is about writing value of "thead,vlenb". See bindings
> description in Documentation/devicetree/bindings/riscv/cpus.yaml:
> 
> ```
> 
>    thead,vlenb:
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        VLEN/8, the vector register length in bytes. This property is
> required on
>        thead systems where the vector register length is not identical
> on all harts, or
>        the vlenb CSR is not available.
> 
> ```
> 
> What I am not sure about is whether we should write 128 or 128/8=16?
> Assuming VLEN of C910 is 128bit.


Thanks, Chen

On 2025/5/13 17:13, Han Gao wrote:
>> Assuming VLEN of C910 is 128bit.
> I refer to the value of c906 because c906 and c910/c920v1 have the same value.
>
> Link: https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-3-236c22791ef9@rivosinc.com/
> [1]
>
> On Tue, May 13, 2025 at 4:06 PM Chen Wang <unicorn_wang@outlook.com> wrote:
>>
>> On 2025/5/13 14:45, Han Gao wrote:
>>> You can use xxd to convert it.
>>>
>>> cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb | xxd
>>> 00000000: 0000 0080                                ....
>>>
>>> Regards,
>>> Han
>> I can read this after disable ERRATA_THEAD_GHOSTWRITE.
>>
>> I recommend adding some explanation notes in the commit message. For
>> example, when we need to enable xtheadvector, the prerequisite is to
>> turn off "ERRATA_THEAD_GHOSTWRITE".
>> I found the relevant patch is
>> https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-0-236c22791ef9@rivosinc.com/,
>> also hope adding this will help later people quickly understand and
>> avoid my mistakes.
>>
>> One more question is about writing value of "thead,vlenb". See bindings
>> description in Documentation/devicetree/bindings/riscv/cpus.yaml:
>>
>> ```
>>
>>     thead,vlenb:
>>       $ref: /schemas/types.yaml#/definitions/uint32
>>       description:
>>         VLEN/8, the vector register length in bytes. This property is
>> required on
>>         thead systems where the vector register length is not identical
>> on all harts, or
>>         the vlenb CSR is not available.
>>
>> ```
>>
>> What I am not sure about is whether we should write 128 or 128/8=16?
>> Assuming VLEN of C910 is 128bit.
>>
>> Thanks,
>>
>> Chen
>>
>>> On Tue, May 13, 2025 at 9:19 AM Chen Wang <unicorn_wang@outlook.com> wrote:
>>>> Hi,Han,
>>>>
>>>> I tested with this patch and the machine can bootup. But I find when I
>>>> run "cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb", it print
>>>> nothing, though I expect to see 128.
>>>>
>>>> Do you know why?
>>>>
>>>> Regards,
>>>>
>>>> Chen
>>>>
>>>> On 2025/5/10 6:11, Han Gao wrote:
>>>>> The sg2042 SoCs support xtheadvector so it can be included in the
>>>>> devicetree. Also include vlenb for the cpu.
>>>>>
>>>>> Signed-off-by: Han Gao <rabenda.cn@gmail.com>
>>>>> ---
>>>>>     arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 192 +++++++++++++-------
>>>>>     1 file changed, 128 insertions(+), 64 deletions(-)
>>>>>
>>>>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> index b136b6c4128c..927e0260acbd 100644
>>>>> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> @@ -260,7 +260,8 @@ cpu0: cpu@0 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <0>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -285,7 +286,8 @@ cpu1: cpu@1 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <1>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -310,7 +312,8 @@ cpu2: cpu@2 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <2>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -335,7 +338,8 @@ cpu3: cpu@3 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <3>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -360,7 +364,8 @@ cpu4: cpu@4 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <4>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -385,7 +390,8 @@ cpu5: cpu@5 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <5>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -410,7 +416,8 @@ cpu6: cpu@6 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <6>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -435,7 +442,8 @@ cpu7: cpu@7 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <7>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -460,7 +468,8 @@ cpu8: cpu@8 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <8>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -485,7 +494,8 @@ cpu9: cpu@9 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <9>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -510,7 +520,8 @@ cpu10: cpu@10 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <10>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -535,7 +546,8 @@ cpu11: cpu@11 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <11>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -560,7 +572,8 @@ cpu12: cpu@12 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <12>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -585,7 +598,8 @@ cpu13: cpu@13 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <13>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -610,7 +624,8 @@ cpu14: cpu@14 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <14>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -635,7 +650,8 @@ cpu15: cpu@15 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <15>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -660,7 +676,8 @@ cpu16: cpu@16 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <16>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -685,7 +702,8 @@ cpu17: cpu@17 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <17>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -710,7 +728,8 @@ cpu18: cpu@18 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <18>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -735,7 +754,8 @@ cpu19: cpu@19 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <19>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -760,7 +780,8 @@ cpu20: cpu@20 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <20>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -785,7 +806,8 @@ cpu21: cpu@21 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <21>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -810,7 +832,8 @@ cpu22: cpu@22 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <22>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -835,7 +858,8 @@ cpu23: cpu@23 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <23>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -860,7 +884,8 @@ cpu24: cpu@24 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <24>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -885,7 +910,8 @@ cpu25: cpu@25 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <25>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -910,7 +936,8 @@ cpu26: cpu@26 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <26>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -935,7 +962,8 @@ cpu27: cpu@27 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <27>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -960,7 +988,8 @@ cpu28: cpu@28 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <28>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -985,7 +1014,8 @@ cpu29: cpu@29 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <29>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1010,7 +1040,8 @@ cpu30: cpu@30 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <30>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1035,7 +1066,8 @@ cpu31: cpu@31 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <31>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1060,7 +1092,8 @@ cpu32: cpu@32 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <32>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1085,7 +1118,8 @@ cpu33: cpu@33 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <33>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1110,7 +1144,8 @@ cpu34: cpu@34 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <34>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1135,7 +1170,8 @@ cpu35: cpu@35 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <35>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1160,7 +1196,8 @@ cpu36: cpu@36 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <36>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1185,7 +1222,8 @@ cpu37: cpu@37 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <37>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1210,7 +1248,8 @@ cpu38: cpu@38 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <38>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1235,7 +1274,8 @@ cpu39: cpu@39 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <39>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1260,7 +1300,8 @@ cpu40: cpu@40 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <40>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1285,7 +1326,8 @@ cpu41: cpu@41 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <41>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1310,7 +1352,8 @@ cpu42: cpu@42 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <42>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1335,7 +1378,8 @@ cpu43: cpu@43 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <43>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1360,7 +1404,8 @@ cpu44: cpu@44 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <44>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1385,7 +1430,8 @@ cpu45: cpu@45 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <45>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1410,7 +1456,8 @@ cpu46: cpu@46 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <46>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1435,7 +1482,8 @@ cpu47: cpu@47 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <47>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1460,7 +1508,8 @@ cpu48: cpu@48 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <48>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1485,7 +1534,8 @@ cpu49: cpu@49 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <49>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1510,7 +1560,8 @@ cpu50: cpu@50 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <50>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1535,7 +1586,8 @@ cpu51: cpu@51 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <51>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1560,7 +1612,8 @@ cpu52: cpu@52 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <52>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1585,7 +1638,8 @@ cpu53: cpu@53 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <53>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1610,7 +1664,8 @@ cpu54: cpu@54 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <54>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1635,7 +1690,8 @@ cpu55: cpu@55 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <55>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1660,7 +1716,8 @@ cpu56: cpu@56 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <56>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1685,7 +1742,8 @@ cpu57: cpu@57 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <57>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1710,7 +1768,8 @@ cpu58: cpu@58 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <58>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1735,7 +1794,8 @@ cpu59: cpu@59 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <59>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1760,7 +1820,8 @@ cpu60: cpu@60 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <60>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1785,7 +1846,8 @@ cpu61: cpu@61 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <61>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1810,7 +1872,8 @@ cpu62: cpu@62 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <62>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;
>>>>> @@ -1835,7 +1898,8 @@ cpu63: cpu@63 {
>>>>>                         riscv,isa-base = "rv64i";
>>>>>                         riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
>>>>>                                                "zicntr", "zicsr", "zifencei",
>>>>> -                                            "zihpm";
>>>>> +                                            "zihpm", "xtheadvector";
>>>>> +                     thead,vlenb = <128>;
>>>>>                         reg = <63>;
>>>>>                         i-cache-block-size = <64>;
>>>>>                         i-cache-size = <65536>;

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
  2025-05-13 10:05           ` Chen Wang
@ 2025-05-13 21:25             ` Charlie Jenkins
  0 siblings, 0 replies; 12+ messages in thread
From: Charlie Jenkins @ 2025-05-13 21:25 UTC (permalink / raw)
  To: Chen Wang
  Cc: Han Gao, devicetree, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Inochi Amaoto, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, sophgo, linux-riscv, linux-kernel

On Tue, May 13, 2025 at 06:05:20PM +0800, Chen Wang wrote:
> Adding Charlie.
> 
> Hi, Charlie,
> 
> Can you please help confirm this? Is there something wrong with my
> understanding? Copied here below for your quick reference:
> 
> > One more question is about writing value of "thead,vlenb". See bindings
> > description in Documentation/devicetree/bindings/riscv/cpus.yaml:
> > 
> > ```
> > 
> >    thead,vlenb:
> >      $ref: /schemas/types.yaml#/definitions/uint32
> >      description:
> >        VLEN/8, the vector register length in bytes. This property is
> > required on
> >        thead systems where the vector register length is not identical
> > on all harts, or
> >        the vlenb CSR is not available.
> > 
> > ```
> > 
> > What I am not sure about is whether we should write 128 or 128/8=16?
> > Assuming VLEN of C910 is 128bit.
> 
> 
> Thanks, Chen
> 
> On 2025/5/13 17:13, Han Gao wrote:
> > > Assuming VLEN of C910 is 128bit.
> > I refer to the value of c906 because c906 and c910/c920v1 have the same value.
> > 
> > Link: https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-3-236c22791ef9@rivosinc.com/
> > [1]
> > 
> > On Tue, May 13, 2025 at 4:06 PM Chen Wang <unicorn_wang@outlook.com> wrote:
> > > 
> > > On 2025/5/13 14:45, Han Gao wrote:
> > > > You can use xxd to convert it.
> > > > 
> > > > cat /sys/devices/system/cpu/cpu63/of_node/thead,vlenb | xxd
> > > > 00000000: 0000 0080                                ....
> > > > 
> > > > Regards,
> > > > Han
> > > I can read this after disable ERRATA_THEAD_GHOSTWRITE.

You can also pass "mitigations=off" as a kernel arg.

> > > 
> > > I recommend adding some explanation notes in the commit message. For
> > > example, when we need to enable xtheadvector, the prerequisite is to
> > > turn off "ERRATA_THEAD_GHOSTWRITE".
> > > I found the relevant patch is
> > > https://lore.kernel.org/linux-riscv/20241113-xtheadvector-v11-0-236c22791ef9@rivosinc.com/,
> > > also hope adding this will help later people quickly understand and
> > > avoid my mistakes.
> > > 
> > > One more question is about writing value of "thead,vlenb". See bindings
> > > description in Documentation/devicetree/bindings/riscv/cpus.yaml:
> > > 
> > > ```
> > > 
> > >     thead,vlenb:
> > >       $ref: /schemas/types.yaml#/definitions/uint32
> > >       description:
> > >         VLEN/8, the vector register length in bytes. This property is
> > > required on
> > >         thead systems where the vector register length is not identical
> > > on all harts, or
> > >         the vlenb CSR is not available.
> > > 
> > > ```
> > > 
> > > What I am not sure about is whether we should write 128 or 128/8=16?
> > > Assuming VLEN of C910 is 128bit.

That's a bug. It should 16, but I had put it as 128 for the D1
devicetree.

- Charlie

> > > 
> > > Thanks,
> > > 
> > > Chen
> > > 

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-05-13 21:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-09 22:11 [PATCH 0/2] riscv: dts: sophgo: add more sg2042 isa extension support Han Gao
2025-05-09 22:11 ` [PATCH 1/2] riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree Han Gao
2025-05-13  1:19   ` Chen Wang
2025-05-13  4:47     ` Inochi Amaoto
2025-05-13  6:45     ` Han Gao
2025-05-13  8:06       ` Chen Wang
2025-05-13  9:13         ` Han Gao
2025-05-13 10:05           ` Chen Wang
2025-05-13 21:25             ` Charlie Jenkins
2025-05-09 22:11 ` [PATCH 2/2] riscv: dts: sophgo: add ziccrse for sg2042 Han Gao
2025-05-09 22:42   ` Inochi Amaoto
2025-05-10  0:15     ` Inochi Amaoto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).