linux/arch/powerpc/platforms
Ian Munsie a2f67d5ee8 cxl: Add support for interrupts on the Mellanox CX4
The Mellanox CX4 in cxl mode uses a hybrid interrupt model, where
interrupts are routed from the networking hardware to the XSL using the
MSIX table, and from there will be transformed back into an MSIX
interrupt using the cxl style interrupts (i.e. using IVTE entries and
ranges to map a PE and AFU interrupt number to an MSIX address).

We want to hide the implementation details of cxl interrupts as much as
possible. To this end, we use a special version of the MSI setup &
teardown routines in the PHB while in cxl mode to allocate the cxl
interrupts and configure the IVTE entries in the process element.

This function does not configure the MSIX table - the CX4 card uses a
custom format in that table and it would not be appropriate to fill that
out in generic code. The rest of the functionality is similar to the
"Full MSI-X mode" described in the CAIA, and this could be easily
extended to support other adapters that use that mode in the future.

The interrupts will be associated with the default context. If the
maximum number of interrupts per context has been limited (e.g. by the
mlx5 driver), it will automatically allocate additional kernel contexts
to associate extra interrupts as required. These contexts will be
started using the same WED that was used to start the default context.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-07-14 20:27:08 +10:00
..
8xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
40x powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
44x powerpc/44x/Akebono: Remove select of IBM_EMAC_RGMII_WOL 2014-12-29 15:45:44 +11:00
52xx powerpc: mpc52xx_gpt: use gpiochip data pointer 2016-03-30 10:50:47 +02:00
82xx mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
83xx powerpc: mpc8349emitx: use gpiochip data pointer 2016-03-30 10:51:54 +02:00
85xx powerpc/85xx/mpc85xx_rdb: Don't use the flat device-tree after boot 2016-07-13 18:15:37 +10:00
86xx powerpc/86xx: Consolidate common platform code 2016-03-11 19:14:12 -06:00
512x powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
amigaone lib/scatterlist: make ARCH_HAS_SG_CHAIN an actual Kconfig 2014-08-08 15:57:26 -07:00
cell powerpc/cell: Don't use flat device-tree after boot 2016-07-13 18:15:36 +10:00
chrp genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
embedded6xx powerpc32: remove ioremap_base 2016-03-11 17:18:02 -06:00
maple powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
pasemi powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
powermac powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
powernv cxl: Add support for interrupts on the Mellanox CX4 2016-07-14 20:27:08 +10:00
ps3 powerpc/ps3: Fix typo in comment reference to CONFIG_PS3_REPOSITORY_WRITE 2016-07-08 22:09:57 +10:00
pseries powerpc/pseries: Fix error return value in cmm_mem_going_offline() 2016-07-05 23:58:52 +10:00
fsl_uli1575.c of/irq: Refactor interrupt-map parsing 2013-10-24 11:43:04 +01:00
Kconfig QE: Move QE from arch/powerpc to drivers/soc 2015-12-22 17:12:56 -06:00
Kconfig.cputype powerpc/mm/radix: Add THP support for 4K linux page size 2016-05-11 21:53:58 +10:00
Makefile powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00