Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'irqchip-fixes-5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent

Pull irqchip fixes from Marc Zyngier:

- Fix the MIPS CPU interrupt controller hierarchy
- Simplify the PRUSS Kconfig entry
- Eliminate trivial build warnings on the MIPS Loongson liointc
- Fix error path in devm_platform_get_irqs_affinity()
- Turn the BCM2836 IPI irq_eoi callback into irq_ack
- Fix initialisation of on-stack msi_alloc_info
- Cleanup spurious comma in irq-sl28cpld

Link: https://lore.kernel.org/r/20210110110001.2328708-1-maz@kernel.org

+18 -8
+2
drivers/base/platform.c
··· 366 366 return -ERANGE; 367 367 368 368 nvec = platform_irq_count(dev); 369 + if (nvec < 0) 370 + return nvec; 369 371 370 372 if (nvec < minvec) 371 373 return -ENOSPC;
+3 -2
drivers/irqchip/Kconfig
··· 493 493 TI System Controller, say Y here. Otherwise, say N. 494 494 495 495 config TI_PRUSS_INTC 496 - tristate "TI PRU-ICSS Interrupt Controller" 497 - depends on ARCH_DAVINCI || SOC_AM33XX || SOC_AM43XX || SOC_DRA7XX || ARCH_KEYSTONE || ARCH_K3 496 + tristate 497 + depends on TI_PRUSS 498 + default TI_PRUSS 498 499 select IRQ_DOMAIN 499 500 help 500 501 This enables support for the PRU-ICSS Local Interrupt Controller
+2 -2
drivers/irqchip/irq-bcm2836.c
··· 167 167 chained_irq_exit(chip, desc); 168 168 } 169 169 170 - static void bcm2836_arm_irqchip_ipi_eoi(struct irq_data *d) 170 + static void bcm2836_arm_irqchip_ipi_ack(struct irq_data *d) 171 171 { 172 172 int cpu = smp_processor_id(); 173 173 ··· 195 195 .name = "IPI", 196 196 .irq_mask = bcm2836_arm_irqchip_dummy_op, 197 197 .irq_unmask = bcm2836_arm_irqchip_dummy_op, 198 - .irq_eoi = bcm2836_arm_irqchip_ipi_eoi, 198 + .irq_ack = bcm2836_arm_irqchip_ipi_ack, 199 199 .ipi_send_mask = bcm2836_arm_irqchip_ipi_send_mask, 200 200 }; 201 201
+2 -2
drivers/irqchip/irq-loongson-liointc.c
··· 142 142 143 143 static const char * const parent_names[] = {"int0", "int1", "int2", "int3"}; 144 144 145 - int __init liointc_of_init(struct device_node *node, 146 - struct device_node *parent) 145 + static int __init liointc_of_init(struct device_node *node, 146 + struct device_node *parent) 147 147 { 148 148 struct irq_chip_generic *gc; 149 149 struct irq_domain *domain;
+7
drivers/irqchip/irq-mips-cpu.c
··· 197 197 if (ret) 198 198 return ret; 199 199 200 + ret = irq_domain_set_hwirq_and_chip(domain->parent, virq + i, hwirq, 201 + &mips_mt_cpu_irq_controller, 202 + NULL); 203 + 204 + if (ret) 205 + return ret; 206 + 200 207 ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH); 201 208 if (ret) 202 209 return ret;
+1 -1
drivers/irqchip/irq-sl28cpld.c
··· 66 66 irqchip->chip.num_regs = 1; 67 67 irqchip->chip.status_base = base + INTC_IP; 68 68 irqchip->chip.mask_base = base + INTC_IE; 69 - irqchip->chip.mask_invert = true, 69 + irqchip->chip.mask_invert = true; 70 70 irqchip->chip.ack_base = base + INTC_IP; 71 71 72 72 return devm_regmap_add_irq_chip_fwnode(dev, dev_fwnode(dev),
+1 -1
kernel/irq/msi.c
··· 402 402 struct msi_domain_ops *ops = info->ops; 403 403 struct irq_data *irq_data; 404 404 struct msi_desc *desc; 405 - msi_alloc_info_t arg; 405 + msi_alloc_info_t arg = { }; 406 406 int i, ret, virq; 407 407 bool can_reserve; 408 408