linux-stable/include/linux/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
..
arm-gic-common.h irqchip/gic-v3: Parse and export virtual GIC information 2016-05-03 12:54:21 +02:00
arm-gic-v3.h irqchip/gic-v3-its: Add VPE scheduling 2017-08-31 15:31:36 +01:00
arm-gic-v4.h irqchip/gic-v3-its: Add device proxy for VPE management if !DirectLpi 2017-08-31 15:31:39 +01:00
arm-gic.h KVM: arm/arm64: Fix isues with GICv2 on GICv3 migration 2017-05-24 09:44:07 +02:00
arm-vic.h
chained_irq.h
ingenic.h
irq-omap-intc.h
irq-partition-percpu.h irqchip: Add per-cpu interrupt partitioning library 2016-05-02 13:42:51 +02:00
irq-sa11x0.h
metag-ext.h
metag.h
mips-gic.h Clocksource/mips-gic: Remove redundant non devicetree init 2017-04-20 14:56:59 +02:00
mmp.h
mxs.h
versatile-fpga.h
xtensa-mx.h
xtensa-pic.h