diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-19 13:58:45 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-19 13:58:45 -0400 |
| commit | d9351ea14ddca708d3cb384f828af4bf82fcc772 (patch) | |
| tree | 90c5fe9067f1005ce512c63b2e664a670af72b4f /kernel | |
| parent | 39feaa3ff4453594297574e116a55bd6d5371f37 (diff) | |
| parent | fb4e0592654adb31bc6f3a738d6499b816a655d6 (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/Kconfig | 3 | ||||
| -rw-r--r-- | kernel/irq/chip.c | 27 | ||||
| -rw-r--r-- | kernel/irq/irqdomain.c | 2 |
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 | ||
| 94 | config IRQ_MSI_IOMMU | ||
| 95 | bool | ||
| 96 | |||
| 94 | config HANDLE_DOMAIN_IRQ | 97 | config 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 | } |
| 1461 | EXPORT_SYMBOL_GPL(irq_chip_set_wake_parent); | 1461 | EXPORT_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 | */ | ||
| 1467 | int 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 | } | ||
| 1476 | EXPORT_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 | */ | ||
| 1482 | void 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 | } | ||
| 1488 | EXPORT_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 |
