[kvm-unit-tests PATCH v2 7/8] riscv: initialize ISA extensions for all harts in cpu_init

Xiang W wangxiang at iscas.ac.cn
Thu Nov 5 00:20:34 PST 2026


Move `isa_init()` from `thread_info_init()` to `cpu_init()`.

Previously it only ran for the current hart; now it is called for every
hart so that ISA extensions are parsed for the whole system.

Signed-off-by: Xiang W <wangxiang at iscas.ac.cn>
---
 lib/riscv/processor.c | 1 -
 lib/riscv/setup.c     | 4 ++++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/riscv/processor.c b/lib/riscv/processor.c
index b055acc9..ddecc25e 100644
--- a/lib/riscv/processor.c
+++ b/lib/riscv/processor.c
@@ -81,7 +81,6 @@ void thread_info_init(void)
 	unsigned long hartid = csr_read(CSR_SSCRATCH);
 	int cpu = hartid_to_cpu(hartid);
 
-	isa_init(&cpus[cpu]);
 	csr_write(CSR_SSCRATCH, &cpus[cpu]);
 }
 
diff --git a/lib/riscv/setup.c b/lib/riscv/setup.c
index f1121573..8c16686f 100644
--- a/lib/riscv/setup.c
+++ b/lib/riscv/setup.c
@@ -16,6 +16,7 @@
 #include <on-cpus.h>
 #include <vmalloc.h>
 #include <asm/csr.h>
+#include <asm/isa.h>
 #include <asm/mmu.h>
 #include <asm/page.h>
 #include <asm/processor.h>
@@ -105,6 +106,9 @@ static void cpu_init(void)
 		cpu_init_acpi();
 	}
 
+	for (int cpu = 0; cpu < nr_cpus; cpu++)
+		isa_init(&cpus[cpu]);
+
 	me = hartid_to_cpu(csr_read(CSR_SSCRATCH));
 	assert(cpu_present(me));
 	set_cpu_online(me, true);
-- 
2.47.3




More information about the kvm-riscv mailing list