aboutsummaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorDaniel Thompson <daniel.thompson@linaro.org>2014-11-26 10:51:52 +0000
committerDaniel Thompson <daniel.thompson@linaro.org>2015-06-26 14:25:49 +0100
commit239efe40ba5688ba384ca6e7fa3167d19f904e0c (patch)
treef68b6442b18dcd707cecb5ae7f6cfba650c99158 /firmware
parentd74f1bb1ecaae06209b57723c4ea29c708f9a7f8 (diff)
irqchip: gic: Make gic_raise_softirq FIQ-safe
It is currently possible for FIQ handlers to re-enter gic_raise_softirq() and lock up. gic_raise_softirq() lock(x); -~-> FIQ handle_fiq() gic_raise_softirq() lock(x); <-- Lockup arch/arm/ uses IPIs to implement arch_irq_work_raise(), thus this issue renders it difficult for FIQ handlers to safely defer work to less restrictive calling contexts. This patch fixes the problem by converting the cpu_map_migration_lock into a rwlock making it safe to re-enter the function. Note that having made it safe to re-enter gic_raise_softirq() we no longer need to mask interrupts during gic_raise_softirq() because the b.L migration is always performed from task context. 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> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Diffstat (limited to 'firmware')
0 files changed, 0 insertions, 0 deletions