diff options
author | Daniel Thompson <daniel.thompson@linaro.org> | 2015-12-15 13:35:40 +0000 |
---|---|---|
committer | Daniel Thompson <daniel.thompson@linaro.org> | 2016-06-20 14:39:40 +0100 |
commit | f04a42fa626ad31e9eae19a2343fa6ad1dccec71 (patch) | |
tree | 86e94a3334e40f3c86a556a54c0066f9bf9c2680 /arch/arm/kernel/smp.c | |
parent | e10238296ad0c32d2e369d1a44fb44f99872dc38 (diff) |
irqchip: gic: Introduce plumbing for IPI FIQ
Currently it is not possible to exploit FIQ for systems with a GIC, even
on systems are otherwise capable of it. This patch makes it possible
for IPIs to be delivered using FIQ.
To do so it modifies the register state so that normal interrupts are
placed in group 1 and specific IPIs are placed into group 0. It also
configures the controller to raise group 0 interrupts using the FIQ
signal. Finally it provides a means for architecture code to define
which IPIs shall use FIQ and to acknowledge any IPIs that are raised.
All GIC hardware except GICv1-without-TrustZone support provides a means
to group exceptions into group 0 and group 1 but the hardware
functionality is unavailable to the kernel when a secure monitor is
present because access to the grouping registers are prohibited outside
"secure world". However when grouping is not available (or on early
GICv1 implementations where it is available but tricky to enable) the
code to change groups does not deploy and all IPIs will be raised via
IRQ.
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'arch/arm/kernel/smp.c')
0 files changed, 0 insertions, 0 deletions