]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
riscv: set trap vector earlier
authoryang.zhang <yang.zhang@hexintek.com>
Wed, 8 May 2024 02:24:45 +0000 (10:24 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:11:37 +0000 (11:11 +0200)
[ Upstream commit 6ad8735994b854b23c824dd6b1dd2126e893a3b4 ]

The exception vector of the booting hart is not set before enabling
the mmu and then still points to the value of the previous firmware,
typically _start. That makes it hard to debug setup_vm() when bad
things happen. So fix that by setting the exception vector earlier.

Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Signed-off-by: yang.zhang <yang.zhang@hexintek.com>
Link: https://lore.kernel.org/r/20240508022445.6131-1-gaoshanliukou@163.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/riscv/kernel/head.S

index 0097c145385f6794d9424a2034ff64654c4a62ea..9691fa8f2faa7b54a3c86ac97bda1ad89f694c87 100644 (file)
@@ -305,6 +305,9 @@ clear_bss_done:
 #else
        mv a0, a1
 #endif /* CONFIG_BUILTIN_DTB */
+       /* Set trap vector to spin forever to help debug */
+       la a3, .Lsecondary_park
+       csrw CSR_TVEC, a3
        call setup_vm
 #ifdef CONFIG_MMU
        la a0, early_pg_dir