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_v6.9_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Borislav Petkov:

- Fix an unused function warning on irqchip/irq-armada-370-xp

- Fix the IRQ sharing with pinctrl-amd and ACPI OSL

* tag 'irq_urgent_for_v6.9_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip/armada-370-xp: Suppress unused-function warning
genirq: Introduce IRQF_COND_ONESHOT and use it in pinctrl-amd

+12 -4
+1 -1
drivers/irqchip/irq-armada-370-xp.c
··· 316 316 return 0; 317 317 } 318 318 #else 319 - static void armada_370_xp_msi_reenable_percpu(void) {} 319 + static __maybe_unused void armada_370_xp_msi_reenable_percpu(void) {} 320 320 321 321 static inline int armada_370_xp_msi_init(struct device_node *node, 322 322 phys_addr_t main_int_phys_base)
+1 -1
drivers/pinctrl/pinctrl-amd.c
··· 1159 1159 } 1160 1160 1161 1161 ret = devm_request_irq(&pdev->dev, gpio_dev->irq, amd_gpio_irq_handler, 1162 - IRQF_SHARED | IRQF_ONESHOT, KBUILD_MODNAME, gpio_dev); 1162 + IRQF_SHARED | IRQF_COND_ONESHOT, KBUILD_MODNAME, gpio_dev); 1163 1163 if (ret) 1164 1164 goto out2; 1165 1165
+3
include/linux/interrupt.h
··· 67 67 * later. 68 68 * IRQF_NO_DEBUG - Exclude from runnaway detection for IPI and similar handlers, 69 69 * depends on IRQF_PERCPU. 70 + * IRQF_COND_ONESHOT - Agree to do IRQF_ONESHOT if already set for a shared 71 + * interrupt. 70 72 */ 71 73 #define IRQF_SHARED 0x00000080 72 74 #define IRQF_PROBE_SHARED 0x00000100 ··· 84 82 #define IRQF_COND_SUSPEND 0x00040000 85 83 #define IRQF_NO_AUTOEN 0x00080000 86 84 #define IRQF_NO_DEBUG 0x00100000 85 + #define IRQF_COND_ONESHOT 0x00200000 87 86 88 87 #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) 89 88
+7 -2
kernel/irq/manage.c
··· 1643 1643 } 1644 1644 1645 1645 if (!((old->flags & new->flags) & IRQF_SHARED) || 1646 - (oldtype != (new->flags & IRQF_TRIGGER_MASK)) || 1647 - ((old->flags ^ new->flags) & IRQF_ONESHOT)) 1646 + (oldtype != (new->flags & IRQF_TRIGGER_MASK))) 1647 + goto mismatch; 1648 + 1649 + if ((old->flags & IRQF_ONESHOT) && 1650 + (new->flags & IRQF_COND_ONESHOT)) 1651 + new->flags |= IRQF_ONESHOT; 1652 + else if ((old->flags ^ new->flags) & IRQF_ONESHOT) 1648 1653 goto mismatch; 1649 1654 1650 1655 /* All handlers must agree on per-cpuness */