[PATCH] lib: utils/ipi: Fix hartid wrongly used as hart index

Samuel Holland samuel.holland at sifive.com
Fri Aug 30 19:27:43 PDT 2024


Since commit 78c667b6fc07 ("lib: sbi: Prefer hartindex over hartid in
IPI framework"), The .ipi_clear callback functions take a hart index,
not a hartid. However, these warm_init functions were never updated.

Fixes: 78c667b6fc07 ("lib: sbi: Prefer hartindex over hartid in IPI framework")
Signed-off-by: Samuel Holland <samuel.holland at sifive.com>
---
These functions could be updated to use current_hartindex() once that
API is added, and I will do that if I send a v2 of the hartindex series.

 lib/utils/ipi/aclint_mswi.c  | 2 +-
 lib/utils/ipi/andes_plicsw.c | 4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/lib/utils/ipi/aclint_mswi.c b/lib/utils/ipi/aclint_mswi.c
index 4ae6bb1c..905c1996 100644
--- a/lib/utils/ipi/aclint_mswi.c
+++ b/lib/utils/ipi/aclint_mswi.c
@@ -74,7 +74,7 @@ static struct sbi_ipi_device aclint_mswi = {
 int aclint_mswi_warm_init(void)
 {
 	/* Clear IPI for current HART */
-	mswi_ipi_clear(current_hartid());
+	mswi_ipi_clear(sbi_hartid_to_hartindex(current_hartid()));
 
 	return 0;
 }
diff --git a/lib/utils/ipi/andes_plicsw.c b/lib/utils/ipi/andes_plicsw.c
index 413ac20e..37dc4f64 100644
--- a/lib/utils/ipi/andes_plicsw.c
+++ b/lib/utils/ipi/andes_plicsw.c
@@ -67,10 +67,8 @@ static struct sbi_ipi_device plicsw_ipi = {
 
 int plicsw_warm_ipi_init(void)
 {
-	u32 hartid = current_hartid();
-
 	/* Clear PLICSW IPI */
-	plicsw_ipi_clear(hartid);
+	plicsw_ipi_clear(sbi_hartid_to_hartindex(current_hartid()));
 
 	return 0;
 }
-- 
2.45.1




More information about the opensbi mailing list