diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 5277949e82e0..3b3ad6b08873 100755 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -191,6 +191,8 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask, if (!chip || !chip->irq_set_affinity) return -EINVAL; + /* IRQs only run on the first CPU in the affinity mask; reflect that */ + mask = cpumask_of(cpumask_first(mask)); ret = chip->irq_set_affinity(data, mask, force); switch (ret) { case IRQ_SET_MASK_OK: