[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