Skip to content

Commit 04f1f17

Browse files
chenhuacaiThomas Gleixner
authored andcommitted
irqchip/loongson-htvec: Adjust irqchip driver for 32BIT/64BIT
irq_domain_alloc_fwnode() takes a parameter with the phys_addr_t type. Currently the code passes acpi_htvec->address to it. This can only work on 64BIT platform because its type is u64, so cast it to phys_addr_t and then the driver works on both 32BIT and 64BIT platforms. [ tglx: Dereference _after_ the NULL pointer check, make the cast explicit and use the casted address as argument for htvec_init() which takes a phys_addr_t as well. Sigh... ] Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Link: https://patch.msgid.link/20260113085940.3344837-5-chenhuacai@loongson.cn
1 parent 61fb5e5 commit 04f1f17

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

drivers/irqchip/irq-loongson-htvec.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,19 +295,19 @@ static int __init acpi_cascade_irqdomain_init(void)
295295
return 0;
296296
}
297297

298-
int __init htvec_acpi_init(struct irq_domain *parent,
299-
struct acpi_madt_ht_pic *acpi_htvec)
298+
int __init htvec_acpi_init(struct irq_domain *parent, struct acpi_madt_ht_pic *acpi_htvec)
300299
{
301-
int i, ret;
302-
int num_parents, parent_irq[8];
300+
int i, ret, num_parents, parent_irq[8];
303301
struct fwnode_handle *domain_handle;
302+
phys_addr_t addr;
304303

305304
if (!acpi_htvec)
306305
return -EINVAL;
307306

308307
num_parents = HTVEC_MAX_PARENT_IRQ;
308+
addr = (phys_addr_t)acpi_htvec->address;
309309

310-
domain_handle = irq_domain_alloc_fwnode(&acpi_htvec->address);
310+
domain_handle = irq_domain_alloc_fwnode(&addr);
311311
if (!domain_handle) {
312312
pr_err("Unable to allocate domain handle\n");
313313
return -ENOMEM;
@@ -317,9 +317,7 @@ int __init htvec_acpi_init(struct irq_domain *parent,
317317
for (i = 0; i < HTVEC_MAX_PARENT_IRQ; i++)
318318
parent_irq[i] = irq_create_mapping(parent, acpi_htvec->cascade[i]);
319319

320-
ret = htvec_init(acpi_htvec->address, acpi_htvec->size,
321-
num_parents, parent_irq, domain_handle);
322-
320+
ret = htvec_init(addr, acpi_htvec->size, num_parents, parent_irq, domain_handle);
323321
if (ret == 0)
324322
ret = acpi_cascade_irqdomain_init();
325323
else

0 commit comments

Comments
 (0)