[PATCH v1 5/7] irqchip: aslint-sswi: resolve hart index
From: Vladimir Kondratiev
Date: Mon Jun 09 2025 - 09:54:44 EST
Resolve hart index according to assignment in the
"riscv,hart-indexes" property as defined in [1]
Link: https://github.com/riscvarchive/riscv-aclint [1]
Signed-off-by: Vladimir Kondratiev <vladimir.kondratiev@xxxxxxxxxxxx>
---
drivers/irqchip/irq-aclint-sswi.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/irqchip/irq-aclint-sswi.c b/drivers/irqchip/irq-aclint-sswi.c
index dfba34f712ff..7ff43f685e92 100644
--- a/drivers/irqchip/irq-aclint-sswi.c
+++ b/drivers/irqchip/irq-aclint-sswi.c
@@ -71,6 +71,7 @@ static int __init aclint_sswi_parse_irq(struct fwnode_handle *fwnode,
unsigned long hartid;
u32 contexts, i;
int rc, cpu;
+ u32 hart_index;
contexts = of_irq_count(to_of_node(fwnode));
if (!(contexts)) {
@@ -92,6 +93,11 @@ static int __init aclint_sswi_parse_irq(struct fwnode_handle *fwnode,
cpu = riscv_hartid_to_cpuid(hartid);
+ rc = riscv_get_hart_index(fwnode, i, &hart_index);
+ if (rc) {
+ pr_warn("%pfwP: hart index [%d] not found\n", fwnode, i);
+ return -EINVAL;
+ }
per_cpu(sswi_cpu_regs, cpu) = reg + hart_index * 4;
}
--
2.43.0