ARM: gic: add CPU migration support
authorNicolas Pitre <nicolas.pitre@linaro.org>
Thu, 12 Apr 2012 05:40:31 +0000 (01:40 -0400)
committerChristoffer Dall <christoffer.dall@linaro.org>
Thu, 2 Oct 2014 07:29:38 +0000 (09:29 +0200)
commit176c78de32186c9c8def04bc9054f2f60d5ef6a0
treeba80354c2c0a4adf7cccb3cd5816d902bc788844
parent91e8ffa66ead9f85ff86bdcb03042ada441acf78
ARM: gic: add CPU migration support

This is required by the big.LITTLE switcher code.

The gic_migrate_target() changes the CPU interface mapping for the
current CPU to redirect SGIs to the specified interface, and it also
updates the target CPU for each interrupts to that CPU interface
if they were targeting the current interface.  Finally, pending
SGIs for the current CPU are forwarded to the new interface.

Because Linux does not use it, the SGI source information for the
forwarded SGIs is not preserved.  Neither is the source information
for the SGIs sent by the current CPU to other CPUs adjusted to match
the new CPU interface mapping.  The required registers are banked so
only the target CPU could do it.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
(cherry picked from commit 1a6b69b6548cd0dd82549393f30dd982ceeb79d2)
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
drivers/irqchip/irq-gic.c
include/linux/irqchip/arm-gic.h