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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'irq_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Borislav Petkov:

- Fix a kernel panic in mips-cpu due to invalid irq domain hierarchy.

- Fix to not lose IPIs on bcm2836.

- Fix for a bogus marking of ITS devices as shared due to unitialized
stack variable.

- Clear a phantom interrupt on qcom-pdc to unblock suspend.

- Small cleanups, warning and build fixes.

* tag 'irq_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
genirq: Export irq_check_status_bit()
irqchip/mips-cpu: Set IPI domain parent chip
irqchip/pruss: Simplify the TI_PRUSS_INTC Kconfig
irqchip/loongson-liointc: Fix build warnings
driver core: platform: Add extra error check in devm_platform_get_irqs_affinity()
irqchip/bcm2836: Fix IPI acknowledgement after conversion to handle_percpu_devid_irq
irqchip/irq-sl28cpld: Convert comma to semicolon
genirq/msi: Initialize msi_alloc_info before calling msi_domain_prepare_irqs()

+19 -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
kernel/irq/manage.c
··· 2859 2859 rcu_read_unlock(); 2860 2860 return res; 2861 2861 } 2862 + EXPORT_SYMBOL_GPL(irq_check_status_bit);
+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