diff options
author | Srinivas Ramana <sramana@codeaurora.org> | 2018-12-20 08:35:57 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-01-15 05:23:27 -0500 |
commit | bddda606ec76550dd63592e32a6e87e7d32583f7 (patch) | |
tree | ede90e17594152a9580d797d2c9b265ed1774c76 /kernel/irq | |
parent | 1c7fc5cbc33980acd13d668f1c8f0313d6ae9fd8 (diff) |
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) | |||
393 | } | 393 | } |
394 | 394 | ||
395 | cpumask_and(&mask, cpu_online_mask, set); | 395 | cpumask_and(&mask, cpu_online_mask, set); |
396 | if (cpumask_empty(&mask)) | ||
397 | cpumask_copy(&mask, cpu_online_mask); | ||
398 | |||
396 | if (node != NUMA_NO_NODE) { | 399 | if (node != NUMA_NO_NODE) { |
397 | const struct cpumask *nodemask = cpumask_of_node(node); | 400 | const struct cpumask *nodemask = cpumask_of_node(node); |
398 | 401 | ||