lib: utils: Fix sbi_hartid_to_scratch() usage in ACLINT drivers
PATCH 1/1 lib: utils: Fix sbi_hartid_to_scratch() usage in ACLINT drivers
The cold_init() functions of ACLINT drivers should skip the HART is sbi_hartid_to_scratch() returns NULL because we might be dealing with a HART that is disabled in the device tree.
--- lib/utils/ipi/aclint_mswi.c | 7 ++++++- lib/utils/timer/aclint_mtimer.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-)
lib/utils/ipi/aclint_mswi.c +6 -1
@@ -101,8 +101,13 @@ int aclint_mswi_cold_init(struct aclint_mswi_data *mswi)/* Update MSWI pointer in scratch space */ for (i =0 ; i < mswi->hart_count; i++) { scratch =sbi_hartid_to_scratch (mswi->first_hartid + i); +/* +* We don't need to fail if scratch pointer is not available +* because we might be dealing with hartid of a HART disabled +* in the device tree. +*/ if (!scratch) -return SBI_ENOENT ; +continue ;mswi_set_hart_data_ptr (scratch, mswi); }
lib/utils/timer/aclint_mtimer.c +6 -1
@@ -219,8 +219,13 @@ int aclint_mtimer_cold_init(struct aclint_mtimer_data *mt,/* Update MTIMER pointer in scratch space */ for (i =0 ; i < mt->hart_count; i++) { scratch =sbi_hartid_to_scratch (mt->first_hartid + i); +/* +* We don't need to fail if scratch pointer is not available +* because we might be dealing with hartid of a HART disabled +* in the device tree. +*/ if (!scratch) -return SBI_ENOENT ; +continue ;mtimer_set_hart_data_ptr (scratch, mt); }
Signature · 1 line
2.34.1
PATCH 1/1 lib: utils: Fix sbi_hartid_to_scratch() usage in ACLINT drivers
? 2023-07-05???? 12:15 +0530?Anup Patel???
Quoted 5 lines
The
cold_init()functions of ACLINT drivers should skip the HART issbi_hartid_to_scratch()returns NULL because we might be dealing with a HART that is disabled in the device tree.Signed-off-by Anup Patel <[email protected]>
Look good to me
Quoted 47 lines
---
?lib/utils/ipi/aclint_mswi.c???? | 7 ++++++- ?lib/utils/timer/aclint_mtimer.c | 7 ++++++- ?2 files changed, 12 insertions(+), 2 deletions(-)lib/utils/ipi/aclint_mswi.c +0
-0@@ -101,8 +101,13 @@ int aclint_mswi_cold_init(struct aclint_mswi_data *mswi)????????/* Update MSWI pointer in scratch space */
????????for (i = 0; i <mswi->hart_count; i++) { ????????????????scratch =sbi_hartid_to_scratch(mswi->first_hartid + i); +???????????????/*
+??????????????? * We don't need to fail if scratch pointer is not available +??????????????? * because we might be dealing with hartid of a HART disabled +??????????????? * in the device tree.
+??????????????? */
????????????????if (!scratch)
-???????????????????????returnSBI_ENOENT; +???????????????????????continue; ????????????????mswi_set_hart_data_ptr(scratch, mswi);
????????}
?lib/utils/timer/aclint_mtimer.c +0
-0@@ -219,8 +219,13 @@ int aclint_mtimer_cold_init(struct aclint_mtimer_data *mt,????????/* Update MTIMER pointer in scratch space */
????????for (i = 0; i <mt->hart_count; i++) { ????????????????scratch =sbi_hartid_to_scratch(mt->first_hartid + i); +???????????????/*
+??????????????? * We don't need to fail if scratch pointer is not available +??????????????? * because we might be dealing with hartid of a HART disabled +??????????????? * in the device tree.
+??????????????? */
????????????????if (!scratch)
-???????????????????????returnSBI_ENOENT; +???????????????????????continue; ????????????????mtimer_set_hart_data_ptr(scratch, mt);
????????}
?Signature · 1 line
2.34.1
Anup Patel
AppliedPATCH 1/1 lib: utils: Fix sbi_hartid_to_scratch() usage in ACLINT drivers
In reply to Anup PatelQuoted 6 lines · On Wed, Jul 5, 2023 at 12:15?PM Anup Patel <[email protected]> wrote:
The
cold_init()functions of ACLINT drivers should skip the HART issbi_hartid_to_scratch()returns NULL because we might be dealing with a HART that is disabled in the device tree.Signed-off-by Anup Patel <[email protected]>
Applied this patch to the riscv/opensbi repo.
Regards,
Anup
Quoted 46 lines
--- lib/utils/ipi/aclint_mswi.c | 7 ++++++- lib/utils/timer/aclint_mtimer.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-)lib/utils/ipi/aclint_mswi.c +6
-1@@ -101,8 +101,13 @@ int aclint_mswi_cold_init(struct aclint_mswi_data *mswi)/* Update MSWI pointer in scratch space */ for (i =0 ; i < mswi->hart_count; i++) { scratch =sbi_hartid_to_scratch (mswi->first_hartid + i); +/* +* We don't need to fail if scratch pointer is not available +* because we might be dealing with hartid of a HART disabled +* in the device tree. +*/ if (!scratch) -return SBI_ENOENT ; +continue ;mswi_set_hart_data_ptr (scratch, mswi); }lib/utils/timer/aclint_mtimer.c +6
-2@@ -219,8 +219,13 @@ int aclint_mtimer_cold_init(struct aclint_mtimer_data *mt,/* Update MTIMER pointer in scratch space */ for (i =0 ; i < mt->hart_count; i++) { scratch =sbi_hartid_to_scratch (mt->first_hartid + i); +/* +* We don't need to fail if scratch pointer is not available +* because we might be dealing with hartid of a HART disabled +* in the device tree. +*/ if (!scratch) -return SBI_ENOENT ; +continue ;mtimer_set_hart_data_ptr (scratch, mt); } --2.34.1