linux/arch/arm/common
Will Deacon 1a01753ed9 ARM: gic: use handle_fasteoi_irq for SPIs
Currently, the gic uses handle_level_irq for handling SPIs (Shared
Peripheral Interrupts), requiring active interrupts to be masked at
the distributor level during IRQ handling.

On a virtualised system, only the CPU interfaces are virtualised in
hardware. Accesses to the distributor must be trapped by the
hypervisor, adding latency to the critical interrupt path in Linux.

This patch modifies the GIC code to use handle_fasteoi_irq for handling
interrupts, which only requires us to signal EOI to the CPU interface
when handling is complete. Cascaded IRQ handling is also updated to use
the chained IRQ enter/exit functions to honour the flow control of the
parent chip.

Note that commit 846afbd1 ("GIC: Dont disable INT in ack callback")
broke cascading interrupts by forgetting to add IRQ masking. This is
no longer an issue because the unmask call is now unnecessary.

Tested on Versatile Express and Realview EB (1176 w/ cascaded GICs).

Tested-and-reviewed-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Tested-and-acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2011-05-11 16:04:17 +01:00
..
Kconfig ARM: 6762/1: Update number of VIC for S5P6442 and S5PC100 2011-02-26 13:36:56 +00:00
Makefile ARM: 6872/1: arch:common:Makefile Remove unused config in the Makefile. 2011-04-10 21:13:37 +01:00
dmabounce.c ARM: DMA: add support for DMA debugging 2011-01-06 22:31:11 +00:00
gic.c ARM: gic: use handle_fasteoi_irq for SPIs 2011-05-11 16:04:17 +01:00
icst.c Update broken web addresses in arch directory. 2010-10-18 11:03:21 +02:00
it8152.c arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
locomo.c arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
pl330.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sa1111.c arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
scoop.c arm: scoop.c: remove C99 comments 2010-09-23 13:19:08 +02:00
sharpsl_param.c [ARM] 4733/1: export sharpsl_param 2008-10-03 10:18:35 +01:00
time-acorn.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
timer-sp.c Merge branch 'clksrc' into devel 2011-01-05 18:09:03 +00:00
uengine.c arm: uengine.c: remove C99 comments 2010-09-23 13:20:06 +02:00
via82c505.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
vic.c arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00