diff --git a/include/sbi_utils/ipi/aclint_mswi.h b/include/sbi_utils/ipi/aclint_mswi.h index e373a8cb..4b8249f2 100644 --- a/include/sbi_utils/ipi/aclint_mswi.h +++ b/include/sbi_utils/ipi/aclint_mswi.h @@ -26,8 +26,6 @@ struct aclint_mswi_data { u32 hart_count; }; -int aclint_mswi_warm_init(void); - int aclint_mswi_cold_init(struct aclint_mswi_data *mswi); #endif diff --git a/include/sbi_utils/ipi/andes_plicsw.h b/include/sbi_utils/ipi/andes_plicsw.h index 0d184449..f6e1cae5 100644 --- a/include/sbi_utils/ipi/andes_plicsw.h +++ b/include/sbi_utils/ipi/andes_plicsw.h @@ -32,8 +32,6 @@ struct plicsw_data { uint32_t hart_count; }; -int plicsw_warm_ipi_init(void); - int plicsw_cold_ipi_init(struct plicsw_data *plicsw); #endif /* _IPI_ANDES_PLICSW_H_ */ diff --git a/lib/sbi/sbi_hsm.c b/lib/sbi/sbi_hsm.c index 58a33798..a3d6947a 100644 --- a/lib/sbi/sbi_hsm.c +++ b/lib/sbi/sbi_hsm.c @@ -178,7 +178,7 @@ static void sbi_hsm_hart_wait(struct sbi_scratch *scratch) /* * No need to clear IPI here because the sbi_ipi_init() will - * clear it for current HART via sbi_platform_ipi_init(). + * clear it for current HART. */ } diff --git a/lib/sbi/sbi_ipi.c b/lib/sbi/sbi_ipi.c index 33b4d9b3..b39f03e0 100644 --- a/lib/sbi/sbi_ipi.c +++ b/lib/sbi/sbi_ipi.c @@ -332,14 +332,14 @@ 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; - /* - * Initialize platform IPI support. This will also clear any - * pending IPIs for current/calling HART. - */ + /* Initialize platform IPI support */ ret = sbi_platform_ipi_init(sbi_platform_ptr(scratch), cold_boot); if (ret) return ret; + /* Clear any pending IPIs for the current hart */ + sbi_ipi_raw_clear(); + /* Enable software interrupts */ csr_set(CSR_MIE, MIP_MSIP); diff --git a/lib/utils/ipi/aclint_mswi.c b/lib/utils/ipi/aclint_mswi.c index 2cd7a530..9e55078a 100644 --- a/lib/utils/ipi/aclint_mswi.c +++ b/lib/utils/ipi/aclint_mswi.c @@ -66,14 +66,6 @@ static struct sbi_ipi_device aclint_mswi = { .ipi_clear = mswi_ipi_clear }; -int aclint_mswi_warm_init(void) -{ - /* Clear IPI for current HART */ - mswi_ipi_clear(); - - return 0; -} - int aclint_mswi_cold_init(struct aclint_mswi_data *mswi) { u32 i; diff --git a/lib/utils/ipi/andes_plicsw.c b/lib/utils/ipi/andes_plicsw.c index 626699f9..5d085d85 100644 --- a/lib/utils/ipi/andes_plicsw.c +++ b/lib/utils/ipi/andes_plicsw.c @@ -65,14 +65,6 @@ static struct sbi_ipi_device plicsw_ipi = { .ipi_clear = plicsw_ipi_clear }; -int plicsw_warm_ipi_init(void) -{ - /* Clear PLICSW IPI */ - plicsw_ipi_clear(); - - return 0; -} - int plicsw_cold_ipi_init(struct plicsw_data *plicsw) { int rc; diff --git a/lib/utils/ipi/fdt_ipi_mswi.c b/lib/utils/ipi/fdt_ipi_mswi.c index c78dead1..01331970 100644 --- a/lib/utils/ipi/fdt_ipi_mswi.c +++ b/lib/utils/ipi/fdt_ipi_mswi.c @@ -64,6 +64,6 @@ static const struct fdt_match ipi_mswi_match[] = { struct fdt_ipi fdt_ipi_mswi = { .match_table = ipi_mswi_match, .cold_init = ipi_mswi_cold_init, - .warm_init = aclint_mswi_warm_init, + .warm_init = NULL, .exit = NULL, }; diff --git a/lib/utils/ipi/fdt_ipi_plicsw.c b/lib/utils/ipi/fdt_ipi_plicsw.c index 32885745..1fd6ba1d 100644 --- a/lib/utils/ipi/fdt_ipi_plicsw.c +++ b/lib/utils/ipi/fdt_ipi_plicsw.c @@ -42,6 +42,6 @@ static const struct fdt_match ipi_plicsw_match[] = { struct fdt_ipi fdt_ipi_plicsw = { .match_table = ipi_plicsw_match, .cold_init = fdt_plicsw_cold_ipi_init, - .warm_init = plicsw_warm_ipi_init, + .warm_init = NULL, .exit = NULL, }; diff --git a/platform/fpga/ariane/platform.c b/platform/fpga/ariane/platform.c index dfe170f9..fb98aade 100644 --- a/platform/fpga/ariane/platform.c +++ b/platform/fpga/ariane/platform.c @@ -143,7 +143,7 @@ static int ariane_ipi_init(bool cold_boot) return ret; } - return aclint_mswi_warm_init(); + return 0; } /* diff --git a/platform/fpga/openpiton/platform.c b/platform/fpga/openpiton/platform.c index 2bfc15ce..6c658be5 100644 --- a/platform/fpga/openpiton/platform.c +++ b/platform/fpga/openpiton/platform.c @@ -174,7 +174,7 @@ static int openpiton_ipi_init(bool cold_boot) return ret; } - return aclint_mswi_warm_init(); + return 0; } /* diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 06b7eb74..1c7bd110 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -156,7 +156,7 @@ static int k210_ipi_init(bool cold_boot) return rc; } - return aclint_mswi_warm_init(); + return 0; } static int k210_timer_init(void) diff --git a/platform/nuclei/ux600/platform.c b/platform/nuclei/ux600/platform.c index d4f309aa..f3b7f98c 100644 --- a/platform/nuclei/ux600/platform.c +++ b/platform/nuclei/ux600/platform.c @@ -212,7 +212,7 @@ static int ux600_ipi_init(bool cold_boot) return rc; } - return aclint_mswi_warm_init(); + return 0; } static int ux600_timer_init(void) diff --git a/platform/template/platform.c b/platform/template/platform.c index 1fc7b7bb..d0f9f32c 100644 --- a/platform/template/platform.c +++ b/platform/template/platform.c @@ -112,7 +112,7 @@ static int platform_ipi_init(bool cold_boot) return ret; } - return aclint_mswi_warm_init(); + return 0; } /*