linux/drivers/irqchip
Minghuan Lian ae3efabfad irqchip/ls-scfg-msi: Add MSI affinity support
For LS1046a and LS1043a v1.1, the MSI controller has 4 MSIRs and 4 GIC
SPI interrupts which can be associated with different Core.
So we can support affinity to improve the performance.
The MSI message data is a byte for Layerscape MSI.
  7    6   5  4  3  2   1   0
| - |       IBS       |  SRS |
SRS bit0-1 is to select a MSIR which is associated with a CPU.
IBS bit2-6 of ls1046, bit2-4 of ls1043a v1.1 is to select bit of the
MSIR. With affinity, only bits of MSIR0(srs=0 cpu0) are available.
All other bits of the MSIR1-3(cpu1-3) are reserved. The MSI hwirq
always equals bit index of the MSIR0. When changing affinity, MSI
message data will be appended corresponding SRS then MSI will be
moved to the corresponding core.
But in affinity mode, there is only 8 MSI interrupts for a controller
of LS1043a v1.1. It cannot meet the requirement of the some PCIe
devices such as 4 ports Ethernet card. In contrast, without affinity,
all MSIRs can be used for core 0, the MSI interrupts can up to 32.
So the parameter is added to control affinity mode.
"lsmsi=no-affinity" will disable affinity and increase MSI
interrupt number.

Signed-off-by: Minghuan Lian <Minghuan.Lian@nxp.com>
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2017-08-31 16:19:48 +01:00
..
alphascale_asm9260-icoll.h irqchip/mxs: Add Alphascale ASM9260 support 2015-10-14 09:37:47 +02:00
exynos-combiner.c irqchip/exynos-combiner: Fix usage of __raw IO 2016-06-23 18:26:42 +00:00
irq-alpine-msi.c irqchip/irq-alpine-msi: Don't use <asm-generic/msi.h> 2016-05-11 10:12:25 +01:00
irq-armada-370-xp.c irqchip/armada-370-xp: Enable MSI-X support 2017-08-18 14:29:08 +01:00
irq-aspeed-i2c-ic.c irqchip/aspeed-i2c-ic: Add I2C IRQ controller for Aspeed 2017-06-22 14:15:00 +01:00
irq-aspeed-vic.c irqchip/aspeed-vic: Add AST2500 compatible string 2017-06-22 14:13:39 +01:00
irq-ath79-cpu.c irqchip/ath79-cpu: Move the CPU IRQ driver from arch/mips/ath79/ 2016-02-17 13:47:19 +00:00
irq-ath79-misc.c irqchip/ath79-misc: Move the MISC driver from arch/mips/ath79/ 2016-02-17 13:44:31 +00:00
irq-atmel-aic5.c irqchip/atmel-aic5: Handle suspend to RAM 2017-04-12 09:12:53 +01:00
irq-atmel-aic-common.c irqchip/atmel-aic: Change return type of aic_common_set_priority() 2016-02-08 15:03:42 +01:00
irq-atmel-aic-common.h irqchip/atmel-aic: Change return type of aic_common_set_priority() 2016-02-08 15:03:42 +01:00
irq-atmel-aic.c irqchip/atmel-aic: Fix potential deadlock in ->xlate() 2016-09-13 16:57:40 +02:00
irq-bcm2835.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-bcm2836.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-bcm6345-l1.c treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
irq-bcm7038-l1.c irqchip/bcm7038-l1: Implement irq_cpu_offline() callback 2016-11-18 14:17:22 +01:00
irq-bcm7120-l2.c irqchip/irq-bcm7120-l2: Use correct I/O accessors for irq_fwd_mask 2017-08-31 15:32:18 +01:00
irq-brcmstb-l2.c treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
irq-clps711x.c irqchip: clps711x: Changing the compatibility string to match with the smallest supported chip 2016-07-06 17:38:15 +02:00
irq-crossbar.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-digicolor.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-dw-apb-ictl.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-eznps.c irqchip/eznps: Drop pointless static qualifier in nps400_of_init() 2016-10-19 14:24:36 +02:00
irq-ftintc010.c irqchip/faraday: Replace moxa with ftintc010 2017-04-07 10:36:30 +01:00
irq-gic-common.c irqchip/gic: Prepare for adding platform driver 2016-06-13 11:53:52 +01:00
irq-gic-common.h irqchip/gic-v2: Parse and export virtual GIC information 2016-05-03 12:54:21 +02:00
irq-gic-pm.c irqchip/gic-pm: Update driver to use of_pm_clk_add_clk 2016-09-12 19:46:28 +01:00
irq-gic-realview.c irqchip/gic/realview: Drop unnecessary static 2017-07-18 21:59:22 +02:00
irq-gic-v2m.c irqchip/MSI: Use irq_domain_update_bus_token instead of an open coded access 2017-06-22 18:29:17 +02:00
irq-gic-v3-its-pci-msi.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-gic-v3-its-platform-msi.c irqchip/gic-v3-its-platform-msi: Make of_device_ids const 2017-06-23 09:14:58 +01:00
irq-gic-v3-its.c irqchip/gic-v4: Enable low-level GICv4 operations 2017-08-31 15:31:42 +01:00
irq-gic-v3.c irqchip/gic-v3: Advertise GICv4 support to KVM 2017-08-31 15:31:42 +01:00
irq-gic-v4.c irqchip/gic-v4: Enable low-level GICv4 operations 2017-08-31 15:31:42 +01:00
irq-gic.c irqchip/gic: Make irq_chip const 2017-08-31 15:31:43 +01:00
irq-hip04.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
irq-i8259.c irqchip/i8259: Constify irq_domain_ops 2017-06-22 14:12:49 +01:00
irq-imgpdc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-imx-gpcv2.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ingenic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-jcore-aic.c irqchip/jcore: Fix lost per-cpu interrupts 2016-10-14 14:26:55 +02:00
irq-keystone.c irqchip/keystone: Fix "scheduling while atomic" on rt 2016-12-31 18:41:45 +00:00
irq-lpc32xx.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ls-scfg-msi.c irqchip/ls-scfg-msi: Add MSI affinity support 2017-08-31 16:19:48 +01:00
irq-mbigen.c irqchip/irq-mbigen: Constify irq_domain_ops 2017-06-22 14:13:00 +01:00
irq-metag-ext.c irqchip/metag-ext: Improve function-level documentation 2016-10-05 11:53:35 +02:00
irq-metag.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-mips-cpu.c irqchip/mips-cpu: Drop unnecessary static 2017-07-18 21:59:22 +02:00
irq-mips-gic.c irqchip/mips-gic: Remove population of irq domain names 2017-07-18 09:45:28 +02:00
irq-mmp.c irqchip/mmp: Make mmp_intc_conf const 2017-08-31 15:31:43 +01:00
irq-mtk-cirq.c irqchip: Add Mediatek mtk-cirq driver 2017-04-07 10:52:22 +01:00
irq-mtk-sysirq.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-mvebu-gicp.c irqchip/irq-mvebu-gicp: Allocate enough memory for spi_bitmap 2017-06-30 15:32:46 +01:00
irq-mvebu-gicp.h irqchip/irq-mvebu-gicp: Add new driver for Marvell GICP 2017-06-23 09:14:57 +01:00
irq-mvebu-icu.c irqchip/irq-mvebu-icu: Add new driver for Marvell ICU 2017-06-23 09:14:57 +01:00
irq-mvebu-odmi.c irqchip/gic: Return IRQ_SET_MASK_OK_DONE in the set_affinity method 2016-02-19 15:42:29 +00:00
irq-mvebu-pic.c irqchip/mvebu-pic: New driver for Marvell Armada 7K/8K PIC 2016-08-22 22:58:27 +00:00
irq-mxs.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-nvic.c irqchip: Convert all alloc/xlate users from of_node to fwnode 2015-10-13 19:01:23 +02:00
irq-omap-intc.c irqchip/omap-intc: Fix missing <linux/irqchip/irq-omap-intc.h> include 2016-06-13 00:57:23 +00:00
irq-or1k-pic.c irqchip/or1k-pic: Fix interrupt acknowledgement 2017-06-30 15:33:11 +01:00
irq-orion.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-partition-percpu.c irqchip: Add per-cpu interrupt partitioning library 2016-05-02 13:42:51 +02:00
irq-pic32-evic.c irqchip/irq-pic32-evic: Fix bug with external interrupts. 2016-06-02 18:03:50 +01:00
irq-renesas-h8s.c irqchip/irq-renesas-h8s: Constify irq_domain_ops 2017-06-22 14:13:20 +01:00
irq-renesas-h8300h.c irqchip/irq-renesas-h8300h: Constify irq_domain_ops 2017-06-22 14:13:14 +01:00
irq-renesas-intc-irqpin.c irqchip/renesas-intc-irqpin: Improve clock error handling and reporting 2015-11-24 16:54:19 +00:00
irq-renesas-irqc.c irqchip/renesas-irqc: Move over to nested generic chip 2015-09-29 20:41:00 +02:00
irq-s3c24xx.c irqchip/s3c24xx: Fixup IO accessors for big endian 2016-06-23 18:28:00 +00:00
irq-sa11x0.c ARM: kill off set_irq_flags usage 2015-07-28 13:58:13 +02:00
irq-sirfsoc.c irqchip/sirfsoc: Fix sparse warnings on __iomem 2016-06-13 00:48:31 +00:00
irq-st.c irqchip/st: Mark st_irq_syscfg_resume() __maybe_unused 2016-12-19 10:55:43 +01:00
irq-stm32-exti.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-sun4i.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-sunxi-nmi.c irqchip/sunxi-nmi: Support sun6i-a31-r-intc compatible 2017-06-22 14:08:17 +01:00
irq-tango.c irqchip/tango: Add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-02-18 01:18:14 +00:00
irq-tb10x.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
irq-tegra.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ts4800.c irqchip/ts4800: Make ts4800_ic_ops static const 2016-02-18 02:09:18 +00:00
irq-uniphier-aidet.c irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +01:00
irq-versatile-fpga.c irqchip: versatile-fpga: add new compatible for OX810SE SoC 2016-04-26 09:50:51 +02:00
irq-vf610-mscm-ir.c irqchip: Convert all alloc/xlate users from of_node to fwnode 2015-10-13 19:01:23 +02:00
irq-vic.c irqchip/vic: Improve function-level documentation 2016-10-05 11:53:35 +02:00
irq-vt8500.c irqchip: Kill off set_irq_flags usage 2015-09-16 16:53:38 +02:00
irq-xilinx-intc.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-xtensa-mx.c xtensa: don't use linux IRQ #0 2017-06-05 16:53:10 -07:00
irq-xtensa-pic.c xtensa: don't use linux IRQ #0 2017-06-05 16:53:10 -07:00
irq-zevio.c irqchip/zevio: Use irq_data_get_chip_type() helper 2015-12-30 18:29:02 +01:00
irqchip.c irqchip / GIC: Convert the GIC driver to ACPI probing 2015-10-01 02:18:38 +02:00
Kconfig irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +01:00
Makefile irqchip/gic-v4: Enable low-level GICv4 operations 2017-08-31 15:31:42 +01:00
qcom-irq-combiner.c irqchip/qcom: Use builtin_platform_driver to simplify the code 2017-06-22 14:15:00 +01:00
spear-shirq.c remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00