:: commit d7d4aea753d538e3584549e7499981cc6e19866c

xvanc <xvancm@gmail.com> — 2023-08-02 21:58

parents: 56cdc669bf

vmm/riscv: execute `sfence` after loading `satp`

diff --git a/common/lib/spinup.asm_riscv64 b/common/lib/spinup.asm_riscv64
index 7c27ba82..702e1938 100644
--- a/common/lib/spinup.asm_riscv64
+++ b/common/lib/spinup.asm_riscv64
@@ -11,6 +11,7 @@ riscv_spinup:
         add     t0, t0, a3
         csrw    stvec, t0
         csrw    satp, a2
+        sfence.vma
         unimp
 .align 4
 0:
diff --git a/common/sys/smp_trampoline.asm_riscv64 b/common/sys/smp_trampoline.asm_riscv64
index 6bdb1f92..9430e893 100644
--- a/common/sys/smp_trampoline.asm_riscv64
+++ b/common/sys/smp_trampoline.asm_riscv64
@@ -30,6 +30,8 @@ smp_trampoline_start:
         csrw    stvec, t0
         ld      t0, smp_tpl_satp(a1)
         csrw    satp, t0
+        sfence.vma
+        unimp
 0:
         // Relocate the info struct to the higher half.
         add     a0, t1, a0
tab: 248 wrap: offon