[PATCH v3 1/4] riscv: Call early_ioremap_setup() before parsing the DTB
Chen Pei
cp0613 at linux.alibaba.com
Thu Nov 5 23:14:56 PST 2026
parse_dtb() can reach early_memremap(), whose return value is composed
from the slot table that early_ioremap_setup() fills in - and on RISC-V
that setup ran after the scan, so the mapping came back NULL. The DT
based kexec handover parsing is the first caller to hit this:
kho_populate() cannot map the handover FDT and the handover is dropped.
Run early_ioremap_setup() before parse_dtb(), as arm64 and x86 already
do.
Signed-off-by: Chen Pei <cp0613 at linux.alibaba.com>
---
arch/riscv/kernel/setup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index d79f99b86033..45e2ef9d32fa 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -308,12 +308,12 @@ extern void __init init_rt_signal_env(void);
void __init setup_arch(char **cmdline_p)
{
+ early_ioremap_setup();
parse_dtb();
setup_initial_init_mm(_stext, _etext, _edata, _end);
*cmdline_p = boot_command_line;
- early_ioremap_setup();
sbi_init();
jump_label_init();
parse_early_param();
--
2.50.1
More information about the linux-riscv
mailing list