alistair23-linux/arch/powerpc/sysdev
Marc Zyngier ad3aedfbb0 genirq/irqdomain: Allow irq domain aliasing
It is not uncommon (at least with the ARM stuff) to have a piece
of hardware that implements different flavours of "interrupts".
A typical example of this is the GICv3 ITS, which implements
standard PCI/MSI support, but also some form of "generic MSI".

So far, the PCI/MSI domain is registered using the ITS device_node,
so that irq_find_host can return it. On the contrary, the raw MSI
domain is not registered with an device_node, making it impossible
to be looked up by another subsystem (obviously, using the same
device_node twice would only result in confusion, as it is not
defined which one irq_find_host would return).

A solution to this is to "type" domains that may be aliasing, and
to be able to lookup an device_node that matches a given type.
For this, we introduce irq_find_matching_host() as a superset
of irq_find_host:

struct irq_domain *irq_find_matching_host(struct device_node *node,
                                enum irq_domain_bus_token bus_token);

where bus_token is the "type" we want to match the domain against
(so far, only DOMAIN_BUS_ANY is defined). This result in some
moderately invasive changes on the PPC side (which is the only
user of the .match method).

This has otherwise no functionnal change.

Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Yijing Wang <wangyijing@huawei.com>
Cc: Ma Jun <majun258@huawei.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Duc Dang <dhdang@apm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Link: http://lkml.kernel.org/r/1438091186-10244-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2015-07-30 00:14:36 +02:00
..
ge
qe_lib genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
xics genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
6xx-suspend.S
axonram.c Merge branch 'for-3.20/core' into for-3.20/drivers 2015-01-13 21:58:45 -07:00
cpm1.c
cpm2.c
cpm2_pic.c
cpm2_pic.h
cpm_common.c
dart.h
dart_iommu.c powerpc/iommu: Move tce_xxx callbacks from ppc_md to iommu_table 2015-06-11 15:14:56 +10:00
dcr-low.S
dcr.c powerpc: Use bool function return values of true/false not 1/0 2015-03-31 14:19:47 +11:00
ehv_pic.c genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
fsl_85xx_cache_ctlr.h
fsl_85xx_cache_sram.c
fsl_85xx_l2ctlr.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
fsl_gtm.c
fsl_lbc.c powerpc: use subsys_initcall for Freescale Local Bus 2015-06-16 14:12:34 -04:00
fsl_mpic_err.c
fsl_mpic_timer_wakeup.c
fsl_msi.c powerpc/PCI: Use for_pci_msi_entry() to access MSI device list 2015-07-22 18:37:42 +02:00
fsl_msi.h powerpc/85xx: workaround for chips with MSI hardware errata 2015-03-23 19:51:18 -05:00
fsl_pci.c powerpc: fsl_pci, swiotlb: Move controller ops from ppc_md to controller_ops 2015-04-11 20:49:17 +10:00
fsl_pci.h
fsl_pmc.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
fsl_rio.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
fsl_rio.h powerpc/fsl-rio: add support for mapping inbound windows 2014-11-12 23:56:16 -06:00
fsl_rmu.c
fsl_soc.c powerpc/fsl: fsl_soc: delete unneeded test before of_node_put 2014-11-10 09:59:34 +11:00
fsl_soc.h
grackle.c
i8259.c genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
indirect_pci.c powerpc/fsl_pci: Fix pci stack build bug with FRAME_WARN 2015-01-29 19:56:15 -06:00
ipic.c genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
ipic.h
Kconfig
Makefile powerpc/pasemi: Only the build the pasemi MSI code for PASEMI=y 2015-05-11 19:55:25 +10:00
micropatch.c powerpc/8xx: Remove empty asm/mpc8xx.h 2014-06-25 18:49:40 -05:00
mmio_nvram.c
mpc5xxx_clocks.c powerpc/mpc5xxx: delete unneeded test before of_node_put 2014-11-10 09:59:34 +11:00
mpc8xx_pic.c powerpc: Constify irq_domain_ops 2015-05-11 16:58:20 +10:00
mpc8xx_pic.h
mpic.c genirq/irqdomain: Allow irq domain aliasing 2015-07-30 00:14:36 +02:00
mpic.h powerpc/pasemi: Only the build the pasemi MSI code for PASEMI=y 2015-05-11 19:55:25 +10:00
mpic_msgr.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
mpic_msi.c
mpic_timer.c
mpic_u3msi.c powerpc/PCI: Use for_pci_msi_entry() to access MSI device list 2015-07-22 18:37:42 +02:00
msi_bitmap.c powerpc/msi: Use WARN_ON() in msi bitmap selftests 2014-10-15 13:09:33 +11:00
mv64x60.h
mv64x60_dev.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
mv64x60_pci.c
mv64x60_pic.c powerpc: Constify irq_domain_ops 2015-05-11 16:58:20 +10:00
mv64x60_udbg.c
of_rtc.c
pmi.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
ppc4xx_cpm.c powerpc/4xx/cpm: delete unneeded test before of_node_put 2014-11-10 09:59:34 +11:00
ppc4xx_gpio.c
ppc4xx_hsta_msi.c Merge branch 'linus' into irq/core 2015-07-30 00:13:24 +02:00
ppc4xx_msi.c powerpc/PCI: Use for_pci_msi_entry() to access MSI device list 2015-07-22 18:37:42 +02:00
ppc4xx_ocm.c
ppc4xx_pci.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
ppc4xx_pci.h
ppc4xx_soc.c
rtc_cmos_setup.c
scom.c
simple_gpio.c
simple_gpio.h
tsi108_dev.c
tsi108_pci.c powerpc: Constify irq_domain_ops 2015-05-11 16:58:20 +10:00
udbg_memcons.c
uic.c powerpc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-06-02 16:54:44 +10:00
xilinx_intc.c powerpc: Constify irq_domain_ops 2015-05-11 16:58:20 +10:00
xilinx_pci.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00