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-2020-12-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Thomas Gleixner:
"A set of updates for the interrupt subsystem:

- Make multiqueue devices which use the managed interrupt affinity
infrastructure work on PowerPC/Pseries. PowerPC does not use the
generic infrastructure for setting up PCI/MSI interrupts and the
multiqueue changes failed to update the legacy PCI/MSI
infrastructure. Make this work by passing the affinity setup
information down to the mapping and allocation functions.

- Move Jason Cooper from MAINTAINERS to CREDITS as his mail is
bouncing and he's not reachable. We hope all is well with him and
say thanks for his work over the years"

* tag 'irq-urgent-2020-12-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
powerpc/pseries: Pass MSI affinity to irq_create_mapping()
genirq/irqdomain: Add an irq_create_mapping_affinity() function
MAINTAINERS: Move Jason Cooper to CREDITS

+25 -12
+5
CREDITS
··· 740 740 S: Portland, Oregon 741 741 S: USA 742 742 743 + N: Jason Cooper 744 + D: ARM/Marvell SOC co-maintainer 745 + D: irqchip co-maintainer 746 + D: MVEBU PCI DRIVER co-maintainer 747 + 743 748 N: Robin Cornelius 744 749 E: robincornelius@users.sourceforge.net 745 750 D: Ralink rt2x00 WLAN driver
-4
MAINTAINERS
··· 2014 2014 S: Maintained 2015 2015 2016 2016 ARM/Marvell Dove/MV78xx0/Orion SOC support 2017 - M: Jason Cooper <jason@lakedaemon.net> 2018 2017 M: Andrew Lunn <andrew@lunn.ch> 2019 2018 M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> 2020 2019 M: Gregory Clement <gregory.clement@bootlin.com> ··· 2030 2031 F: drivers/soc/dove/ 2031 2032 2032 2033 ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support 2033 - M: Jason Cooper <jason@lakedaemon.net> 2034 2034 M: Andrew Lunn <andrew@lunn.ch> 2035 2035 M: Gregory Clement <gregory.clement@bootlin.com> 2036 2036 M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> ··· 9255 9257 9256 9258 IRQCHIP DRIVERS 9257 9259 M: Thomas Gleixner <tglx@linutronix.de> 9258 - M: Jason Cooper <jason@lakedaemon.net> 9259 9260 M: Marc Zyngier <maz@kernel.org> 9260 9261 L: linux-kernel@vger.kernel.org 9261 9262 S: Maintained ··· 13400 13403 13401 13404 PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support) 13402 13405 M: Thomas Petazzoni <thomas.petazzoni@bootlin.com> 13403 - M: Jason Cooper <jason@lakedaemon.net> 13404 13406 L: linux-pci@vger.kernel.org 13405 13407 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 13406 13408 S: Maintained
+2 -1
arch/powerpc/platforms/pseries/msi.c
··· 458 458 return hwirq; 459 459 } 460 460 461 - virq = irq_create_mapping(NULL, hwirq); 461 + virq = irq_create_mapping_affinity(NULL, hwirq, 462 + entry->affinity); 462 463 463 464 if (!virq) { 464 465 pr_debug("rtas_msi: Failed mapping hwirq %d\n", hwirq);
+10 -2
include/linux/irqdomain.h
··· 384 384 extern void irq_domain_disassociate(struct irq_domain *domain, 385 385 unsigned int irq); 386 386 387 - extern unsigned int irq_create_mapping(struct irq_domain *host, 388 - irq_hw_number_t hwirq); 387 + extern unsigned int irq_create_mapping_affinity(struct irq_domain *host, 388 + irq_hw_number_t hwirq, 389 + const struct irq_affinity_desc *affinity); 389 390 extern unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec); 390 391 extern void irq_dispose_mapping(unsigned int virq); 392 + 393 + static inline unsigned int irq_create_mapping(struct irq_domain *host, 394 + irq_hw_number_t hwirq) 395 + { 396 + return irq_create_mapping_affinity(host, hwirq, NULL); 397 + } 398 + 391 399 392 400 /** 393 401 * irq_linear_revmap() - Find a linux irq from a hw irq number.
+8 -5
kernel/irq/irqdomain.c
··· 624 624 EXPORT_SYMBOL_GPL(irq_create_direct_mapping); 625 625 626 626 /** 627 - * irq_create_mapping() - Map a hardware interrupt into linux irq space 627 + * irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space 628 628 * @domain: domain owning this hardware interrupt or NULL for default domain 629 629 * @hwirq: hardware irq number in that domain space 630 + * @affinity: irq affinity 630 631 * 631 632 * Only one mapping per hardware interrupt is permitted. Returns a linux 632 633 * irq number. 633 634 * If the sense/trigger is to be specified, set_irq_type() should be called 634 635 * on the number returned from that call. 635 636 */ 636 - unsigned int irq_create_mapping(struct irq_domain *domain, 637 - irq_hw_number_t hwirq) 637 + unsigned int irq_create_mapping_affinity(struct irq_domain *domain, 638 + irq_hw_number_t hwirq, 639 + const struct irq_affinity_desc *affinity) 638 640 { 639 641 struct device_node *of_node; 640 642 int virq; ··· 662 660 } 663 661 664 662 /* Allocate a virtual interrupt number */ 665 - virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), NULL); 663 + virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), 664 + affinity); 666 665 if (virq <= 0) { 667 666 pr_debug("-> virq allocation failed\n"); 668 667 return 0; ··· 679 676 680 677 return virq; 681 678 } 682 - EXPORT_SYMBOL_GPL(irq_create_mapping); 679 + EXPORT_SYMBOL_GPL(irq_create_mapping_affinity); 683 680 684 681 /** 685 682 * irq_create_strict_mappings() - Map a range of hw irqs to fixed linux irqs