diff --git a/lib/sbi/sbi_init.c b/lib/sbi/sbi_init.c index 4afeed28..c5a899c3 100644 --- a/lib/sbi/sbi_init.c +++ b/lib/sbi/sbi_init.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #define BANNER \ @@ -103,6 +104,10 @@ static void __noreturn init_coldboot(struct sbi_scratch *scratch, u32 hartid) if (rc) sbi_hart_hang(); + rc = sbi_tlb_init(scratch, TRUE); + if (rc) + sbi_hart_hang(); + rc = sbi_timer_init(scratch, TRUE); if (rc) sbi_hart_hang(); @@ -152,6 +157,10 @@ static void __noreturn init_warmboot(struct sbi_scratch *scratch, u32 hartid) if (rc) sbi_hart_hang(); + rc = sbi_tlb_init(scratch, FALSE); + if (rc) + sbi_hart_hang(); + rc = sbi_timer_init(scratch, FALSE); if (rc) sbi_hart_hang(); diff --git a/lib/sbi/sbi_ipi.c b/lib/sbi/sbi_ipi.c index a900fda2..206931c6 100644 --- a/lib/sbi/sbi_ipi.c +++ b/lib/sbi/sbi_ipi.c @@ -17,8 +17,6 @@ #include #include #include -#include -#include struct sbi_ipi_data { unsigned long ipi_type; @@ -232,10 +230,6 @@ int sbi_ipi_init(struct sbi_scratch *scratch, bool cold_boot) ipi_data = sbi_scratch_offset_ptr(scratch, ipi_data_off); ipi_data->ipi_type = 0x00; - ret = sbi_tlb_init(scratch, cold_boot); - if (ret) - return ret; - /* Platform init */ ret = sbi_platform_ipi_init(sbi_platform_ptr(scratch), cold_boot); if (ret)