Skip to content

Commit 592d9a0

Browse files
committed
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
2 parents ff615c9 + 9ea69a5 commit 592d9a0

File tree

5 files changed

+25
-12
lines changed

5 files changed

+25
-12
lines changed

CREDITS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,11 @@ S: (ask for current address)
740740
S: Portland, Oregon
741741
S: USA
742742

743+
N: Jason Cooper
744+
D: ARM/Marvell SOC co-maintainer
745+
D: irqchip co-maintainer
746+
D: MVEBU PCI DRIVER co-maintainer
747+
743748
N: Robin Cornelius
744749
745750
D: Ralink rt2x00 WLAN driver

MAINTAINERS

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2014,7 +2014,6 @@ M: Philipp Zabel <[email protected]>
20142014
S: Maintained
20152015

20162016
ARM/Marvell Dove/MV78xx0/Orion SOC support
2017-
M: Jason Cooper <[email protected]>
20182017
M: Andrew Lunn <[email protected]>
20192018
M: Sebastian Hesselbarth <[email protected]>
20202019
M: Gregory Clement <[email protected]>
@@ -2031,7 +2030,6 @@ F: arch/arm/plat-orion/
20312030
F: drivers/soc/dove/
20322031

20332032
ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support
2034-
M: Jason Cooper <[email protected]>
20352033
M: Andrew Lunn <[email protected]>
20362034
M: Gregory Clement <[email protected]>
20372035
M: Sebastian Hesselbarth <[email protected]>
@@ -9257,7 +9255,6 @@ F: kernel/irq/
92579255

92589256
IRQCHIP DRIVERS
92599257
M: Thomas Gleixner <[email protected]>
9260-
M: Jason Cooper <[email protected]>
92619258
M: Marc Zyngier <[email protected]>
92629259
92639260
S: Maintained
@@ -13403,7 +13400,6 @@ F: drivers/pci/controller/mobiveil/pcie-mobiveil*
1340313400

1340413401
PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
1340513402
M: Thomas Petazzoni <[email protected]>
13406-
M: Jason Cooper <[email protected]>
1340713403
1340813404
L: [email protected] (moderated for non-subscribers)
1340913405
S: Maintained

arch/powerpc/platforms/pseries/msi.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,8 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type)
458458
return hwirq;
459459
}
460460

461-
virq = irq_create_mapping(NULL, hwirq);
461+
virq = irq_create_mapping_affinity(NULL, hwirq,
462+
entry->affinity);
462463

463464
if (!virq) {
464465
pr_debug("rtas_msi: Failed mapping hwirq %d\n", hwirq);

include/linux/irqdomain.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,19 @@ extern void irq_domain_associate_many(struct irq_domain *domain,
384384
extern void irq_domain_disassociate(struct irq_domain *domain,
385385
unsigned int irq);
386386

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);
389390
extern unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec);
390391
extern void irq_dispose_mapping(unsigned int virq);
391392

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+
399+
392400
/**
393401
* irq_linear_revmap() - Find a linux irq from a hw irq number.
394402
* @domain: domain owning this hardware interrupt

kernel/irq/irqdomain.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -624,17 +624,19 @@ unsigned int irq_create_direct_mapping(struct irq_domain *domain)
624624
EXPORT_SYMBOL_GPL(irq_create_direct_mapping);
625625

626626
/**
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
628628
* @domain: domain owning this hardware interrupt or NULL for default domain
629629
* @hwirq: hardware irq number in that domain space
630+
* @affinity: irq affinity
630631
*
631632
* Only one mapping per hardware interrupt is permitted. Returns a linux
632633
* irq number.
633634
* If the sense/trigger is to be specified, set_irq_type() should be called
634635
* on the number returned from that call.
635636
*/
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)
638640
{
639641
struct device_node *of_node;
640642
int virq;
@@ -660,7 +662,8 @@ unsigned int irq_create_mapping(struct irq_domain *domain,
660662
}
661663

662664
/* Allocate a virtual interrupt number */
663-
virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), NULL);
665+
virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node),
666+
affinity);
664667
if (virq <= 0) {
665668
pr_debug("-> virq allocation failed\n");
666669
return 0;
@@ -676,7 +679,7 @@ unsigned int irq_create_mapping(struct irq_domain *domain,
676679

677680
return virq;
678681
}
679-
EXPORT_SYMBOL_GPL(irq_create_mapping);
682+
EXPORT_SYMBOL_GPL(irq_create_mapping_affinity);
680683

681684
/**
682685
* irq_create_strict_mappings() - Map a range of hw irqs to fixed linux irqs

0 commit comments

Comments
 (0)