| From de58b982935bab5d8e976f27cb5e17aa63555e70 Mon Sep 17 00:00:00 2001 |
| From: Srinivas Ramana <sramana@codeaurora.org> |
| Date: Thu, 20 Dec 2018 19:05:57 +0530 |
| Subject: genirq: Make sure the initial affinity is not empty |
| |
| [ Upstream commit bddda606ec76550dd63592e32a6e87e7d32583f7 ] |
| |
| 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 |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| kernel/irq/manage.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c |
| index 9dbdccab3b6a3..5c0ba5ca59308 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); |
| |
| -- |
| 2.19.1 |
| |