irq-metag*: stop set_affinity vectoring to offline cpus
authorJames Hogan <james.hogan@imgtec.com>
Tue, 25 Feb 2014 22:05:35 +0000 (22:05 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Mar 2014 05:30:12 +0000 (21:30 -0800)
commitb500c0d3edf6c54e34a65c766a7a657b8ca88952
tree0d2b9e47dcfc828f2c74a21403f2c1204483716c
parent790cc82a2b2b43f9d47934aab74d892c271fcbed
irq-metag*: stop set_affinity vectoring to offline cpus

commit f229006ec6beabf7b844653d92fa61f025fe3dcf upstream.

Fix irq_set_affinity callbacks in the Meta IRQ chip drivers to AND
cpu_online_mask into the cpumask when picking a CPU to vector the
interrupt to.

As Thomas pointed out, the /proc/irq/$N/smp_affinity interface doesn't
filter out offline CPUs, so without this patch if you offline CPU0 and
set an IRQ affinity to 0x3 it vectors the interrupt onto CPU0 even
though it is offline.

Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-metag@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/irqchip/irq-metag-ext.c
drivers/irqchip/irq-metag.c