From 27c957a43b030523baf931a3b8ef002418fb27ad Mon Sep 17 00:00:00 2001 From: Guo Ren Date: Sun, 18 Jun 2023 11:07:16 -0400 Subject: [PATCH] lib: reset: Move fdt_reset_init into generic_early_init The fdt_reset_thead driver needs to modify the __reset_thead_csr_stub text region for the secondary harts booting. After that, the sbi_hart_pmp_configure may lock down the text region with M_READABLE & M_EXECUTABLE attributes in the future. Currently, the M_READABLE & M_EXECUtABLE have no effect on m-mode, the L-bit in pmpcfg csr is useless for the current opensbi scenario. See: Priv-isa-spec 3.7.1.2. Locking and Privilege Mode When the L bit is clear, any M-mode access matching the PMP entry will succeed; the R/W/X permissions apply only to S and U modes. That's why current fdt_reset_thead could still work well after commit: 230278dcf127 ("lib: sbi: Add separate entries for firmware RX and RW regions"). So this patch fixes up a fake bug for the M-mode permission setting of the future. Fixes: 230278dcf127 ("lib: sbi: Add separate entries for firmware RX and RW regions") Link: http://lists.infradead.org/pipermail/opensbi/2023-June/005176.html Reported-by: Jessica Clarke Signed-off-by: Guo Ren Signed-off-by: Guo Ren Reviewed-by: Anup Patel --- platform/generic/platform.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/generic/platform.c b/platform/generic/platform.c index 0c9cd95..86811e6 100644 --- a/platform/generic/platform.c +++ b/platform/generic/platform.c @@ -143,6 +143,9 @@ static int generic_nascent_init(void) static int generic_early_init(bool cold_boot) { + if (cold_boot) + fdt_reset_init(); + if (!generic_plat || !generic_plat->early_init) return 0; @@ -154,9 +157,6 @@ static int generic_final_init(bool cold_boot) void *fdt; int rc; - if (cold_boot) - fdt_reset_init(); - if (generic_plat && generic_plat->final_init) { rc = generic_plat->final_init(cold_boot, generic_plat_match); if (rc) -- 2.34.1