From: Vladimir Kondratiev Date: Thu, 12 Jun 2025 14:39:09 +0000 (+0300) Subject: irqchip/aslint-sswi: Resolve hart index X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=128ab2cfd0205fe395196a9f3221bcddd6adf54e;p=thirdparty%2Fkernel%2Fstable.git irqchip/aslint-sswi: Resolve hart index Resolve hart index according to assignment in the "riscv,hart-indexes" property as defined in the specification [1] Signed-off-by: Vladimir Kondratiev Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20250612143911.3224046-6-vladimir.kondratiev@mobileye.com Link: https://github.com/riscvarchive/riscv-aclint [1] --- diff --git a/drivers/irqchip/irq-aclint-sswi.c b/drivers/irqchip/irq-aclint-sswi.c index 9d8b19be66b6..93e28e9f281f 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, void __iom for (u32 i = 0; i < contexts; i++) { struct of_phandle_args parent; unsigned long hartid; + u32 hart_index; int rc, cpu; rc = of_irq_parse_one(to_of_node(fwnode), i, &parent); @@ -86,6 +87,11 @@ static int __init aclint_sswi_parse_irq(struct fwnode_handle *fwnode, void __iom 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; }