linux-stable/drivers/irqchip
Marc Zyngier 20b3d54ecb irqchip/gic-v3-its: Add device proxy for VPE management if !DirectLpi
When we don't have the DirectLPI feature, we must work around the
architecture shortcomings to be able to perform the required
maintenance (interrupt masking, clearing and injection).

For this, we create a fake device whose sole purpose is to
provide a way to issue commands as if we were dealing with LPIs
coming from that device (while they actually originate from
the ITS). This fake device doesn't have LPIs allocated to it,
but instead uses the VPE LPIs.

Of course, this could be a real bottleneck, and a naive
implementation would require 6 commands to issue an invalidation.

Instead, let's allocate at least one event per physical CPU
(rounded up to the next power of 2), and opportunistically
map the VPE doorbell to an event. This doorbell will be mapped
until we roll over and need to reallocate this slot.

This ensures that most of the time, we only need 2 commands
to issue an INV, INT or CLEAR, making the performance a lot
better, given that we always issue a CLEAR on entry, and
an INV on each side of a trapped WFI.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2017-08-31 15:31:39 +01:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c
irq-alpine-msi.c
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
irq-ath79-misc.c
irq-atmel-aic-common.c
irq-atmel-aic-common.h
irq-atmel-aic.c irqchip/atmel-aic: Fix potential deadlock in ->xlate() 2016-09-13 16:57:40 +02:00
irq-atmel-aic5.c irqchip/atmel-aic5: Handle suspend to RAM 2017-04-12 09:12:53 +01: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 treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
irq-brcmstb-l2.c treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
irq-clps711x.c
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
irq-gic-common.h
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-v3-its: Add device proxy for VPE management if !DirectLpi 2017-08-31 15:31:39 +01:00
irq-gic-v3.c irqchip/gic-v3: Add VLPI/DirectLPI discovery 2017-08-23 11:09:15 +01:00
irq-gic.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +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
irq-imx-gpcv2.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ingenic.c
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
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
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
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
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
irq-omap-intc.c
irq-or1k-pic.c irqchip/or1k-pic: Fix interrupt acknowledgement 2017-06-30 15:33:11 +01:00
irq-orion.c
irq-partition-percpu.c
irq-pic32-evic.c
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
irq-renesas-irqc.c
irq-s3c24xx.c
irq-sa11x0.c
irq-sirfsoc.c
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
irq-tb10x.c
irq-tegra.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ts4800.c
irq-uniphier-aidet.c irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +01:00
irq-versatile-fpga.c
irq-vf610-mscm-ir.c
irq-vic.c irqchip/vic: Improve function-level documentation 2016-10-05 11:53:35 +02:00
irq-vt8500.c
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.c
Kconfig irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +01:00
Makefile irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +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