aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-19 13:58:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-19 13:58:45 -0400
commitd9351ea14ddca708d3cb384f828af4bf82fcc772 (patch)
tree90c5fe9067f1005ce512c63b2e664a670af72b4f /kernel
parent39feaa3ff4453594297574e116a55bd6d5371f37 (diff)
parentfb4e0592654adb31bc6f3a738d6499b816a655d6 (diff)
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull IRQ chip updates from Ingo Molnar: "A late irqchips update: - New TI INTR/INTA set of drivers - Rewrite of the stm32mp1-exti driver as a platform driver - Update the IOMMU MSI mapping API to be RT friendly - A number of cleanups and other low impact fixes" * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits) iommu/dma-iommu: Remove iommu_dma_map_msi_msg() irqchip/gic-v3-mbi: Don't map the MSI page in mbi_compose_m{b, s}i_msg() irqchip/ls-scfg-msi: Don't map the MSI page in ls_scfg_msi_compose_msg() irqchip/gic-v3-its: Don't map the MSI page in its_irq_compose_msi_msg() irqchip/gicv2m: Don't map the MSI page in gicv2m_compose_msi_msg() iommu/dma-iommu: Split iommu_dma_map_msi_msg() in two parts genirq/msi: Add a new field in msi_desc to store an IOMMU cookie arm64: arch_k3: Enable interrupt controller drivers irqchip/ti-sci-inta: Add msi domain support soc: ti: Add MSI domain bus support for Interrupt Aggregator irqchip/ti-sci-inta: Add support for Interrupt Aggregator driver dt-bindings: irqchip: Introduce TISCI Interrupt Aggregator bindings irqchip/ti-sci-intr: Add support for Interrupt Router driver dt-bindings: irqchip: Introduce TISCI Interrupt router bindings gpio: thunderx: Use the default parent apis for {request,release}_resources genirq: Introduce irq_chip_{request,release}_resource_parent() apis firmware: ti_sci: Add helper apis to manage resources firmware: ti_sci: Add RM mapping table for am654 firmware: ti_sci: Add support for IRQ management firmware: ti_sci: Add support for RM core ops ...
Diffstat (limited to 'kernel')
-rw-r--r--kernel/irq/Kconfig3
-rw-r--r--kernel/irq/chip.c27
-rw-r--r--kernel/irq/irqdomain.c2
3 files changed, 31 insertions, 1 deletions
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 5f3e2baefca9..8fee06625c37 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -91,6 +91,9 @@ config GENERIC_MSI_IRQ_DOMAIN
91 select IRQ_DOMAIN_HIERARCHY 91 select IRQ_DOMAIN_HIERARCHY
92 select GENERIC_MSI_IRQ 92 select GENERIC_MSI_IRQ
93 93
94config IRQ_MSI_IOMMU
95 bool
96
94config HANDLE_DOMAIN_IRQ 97config HANDLE_DOMAIN_IRQ
95 bool 98 bool
96 99
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 51128bea3846..29d6c7d070b4 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -1459,6 +1459,33 @@ int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on)
1459 return -ENOSYS; 1459 return -ENOSYS;
1460} 1460}
1461EXPORT_SYMBOL_GPL(irq_chip_set_wake_parent); 1461EXPORT_SYMBOL_GPL(irq_chip_set_wake_parent);
1462
1463/**
1464 * irq_chip_request_resources_parent - Request resources on the parent interrupt
1465 * @data: Pointer to interrupt specific data
1466 */
1467int irq_chip_request_resources_parent(struct irq_data *data)
1468{
1469 data = data->parent_data;
1470
1471 if (data->chip->irq_request_resources)
1472 return data->chip->irq_request_resources(data);
1473
1474 return -ENOSYS;
1475}
1476EXPORT_SYMBOL_GPL(irq_chip_request_resources_parent);
1477
1478/**
1479 * irq_chip_release_resources_parent - Release resources on the parent interrupt
1480 * @data: Pointer to interrupt specific data
1481 */
1482void irq_chip_release_resources_parent(struct irq_data *data)
1483{
1484 data = data->parent_data;
1485 if (data->chip->irq_release_resources)
1486 data->chip->irq_release_resources(data);
1487}
1488EXPORT_SYMBOL_GPL(irq_chip_release_resources_parent);
1462#endif 1489#endif
1463 1490
1464/** 1491/**
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 9ed29e4a7dbf..a453e229f99c 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -1297,7 +1297,7 @@ int irq_domain_alloc_irqs_hierarchy(struct irq_domain *domain,
1297/** 1297/**
1298 * __irq_domain_alloc_irqs - Allocate IRQs from domain 1298 * __irq_domain_alloc_irqs - Allocate IRQs from domain
1299 * @domain: domain to allocate from 1299 * @domain: domain to allocate from
1300 * @irq_base: allocate specified IRQ nubmer if irq_base >= 0 1300 * @irq_base: allocate specified IRQ number if irq_base >= 0
1301 * @nr_irqs: number of IRQs to allocate 1301 * @nr_irqs: number of IRQs to allocate
1302 * @node: NUMA node id for memory allocation 1302 * @node: NUMA node id for memory allocation
1303 * @arg: domain specific argument 1303 * @arg: domain specific argument