diff options
author | Srinivas Ramana <sramana@codeaurora.org> | 2018-12-20 19:05:57 +0530 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-01-15 11:23:27 +0100 |
commit | bddda606ec76550dd63592e32a6e87e7d32583f7 (patch) | |
tree | ede90e17594152a9580d797d2c9b265ed1774c76 /kernel/irq | |
parent | 1c7fc5cbc33980acd13d668f1c8f0313d6ae9fd8 (diff) | |
download | linux-stable-bddda606ec76550dd63592e32a6e87e7d32583f7.tar.gz linux-stable-bddda606ec76550dd63592e32a6e87e7d32583f7.tar.bz2 linux-stable-bddda606ec76550dd63592e32a6e87e7d32583f7.zip |
genirq: Make sure the initial affinity is not empty
If all CPUs in the irq_default_affinity mask are offline when an interrupt
is initialized then irq_setup_affinity() can set an empty affinity mask for
a newly allocated interrupt.
Fix this by falling back to cpu_online_mask in case the resulting affinity
mask is zero.
Signed-off-by: Srinivas Ramana <sramana@codeaurora.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-arm-msm@vger.kernel.org
Link: https://lkml.kernel.org/r/1545312957-8504-1-git-send-email-sramana@codeaurora.org
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/manage.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index a4888ce4667a..84b54a17b95d 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -393,6 +393,9 @@ int irq_setup_affinity(struct irq_desc *desc) } cpumask_and(&mask, cpu_online_mask, set); + if (cpumask_empty(&mask)) + cpumask_copy(&mask, cpu_online_mask); + if (node != NUMA_NO_NODE) { const struct cpumask *nodemask = cpumask_of_node(node); |