From: Greg Kroah-Hartman Date: Thu, 5 Jun 2014 18:12:03 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.14.6~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c6aa4ca971de500383b9447f9551ce11d52e68ec;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: arm64-use-cpu_online_mask-when-using-forced-irq_set_affinity.patch --- diff --git a/queue-3.14/arm64-use-cpu_online_mask-when-using-forced-irq_set_affinity.patch b/queue-3.14/arm64-use-cpu_online_mask-when-using-forced-irq_set_affinity.patch new file mode 100644 index 00000000000..cc140b2e2ef --- /dev/null +++ b/queue-3.14/arm64-use-cpu_online_mask-when-using-forced-irq_set_affinity.patch @@ -0,0 +1,61 @@ +From 601c942176d8ad8334118bddb747e3720bed24f8 Mon Sep 17 00:00:00 2001 +From: Sudeep Holla +Date: Fri, 9 May 2014 17:37:44 +0100 +Subject: arm64: use cpu_online_mask when using forced irq_set_affinity + +From: Sudeep Holla + +commit 601c942176d8ad8334118bddb747e3720bed24f8 upstream. + +Commit 01f8fa4f01d8("genirq: Allow forcing cpu affinity of interrupts") +enabled the forced irq_set_affinity which previously refused to route an +interrupt to an offline cpu. + +Commit ffde1de64012("irqchip: Gic: Support forced affinity setting") +implements this force logic and disables the cpu online check for GIC +interrupt controller. + +When __cpu_disable calls migrate_irqs, it disables the current cpu in +cpu_online_mask and uses forced irq_set_affinity to migrate the IRQs +away from the cpu but passes affinity mask with the cpu being offlined +also included in it. + +When calling irq_set_affinity with force == true in a cpu hotplug path, +the caller must ensure that the cpu being offlined is not present in the +affinity mask or it may be selected as the target CPU, leading to the +interrupt not being migrated. + +This patch uses cpu_online_mask when using forced irq_set_affinity so +that the IRQs are properly migrated away. + +Signed-off-by: Sudeep Holla +Acked-by: Mark Rutland +Cc: Will Deacon +Signed-off-by: Catalin Marinas +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm64/kernel/irq.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +--- a/arch/arm64/kernel/irq.c ++++ b/arch/arm64/kernel/irq.c +@@ -97,11 +97,15 @@ static bool migrate_one_irq(struct irq_d + if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity)) + return false; + +- if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) { +- affinity = cpu_online_mask; ++ if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) + ret = true; +- } + ++ /* ++ * when using forced irq_set_affinity we must ensure that the cpu ++ * being offlined is not present in the affinity mask, it may be ++ * selected as the target CPU otherwise ++ */ ++ affinity = cpu_online_mask; + c = irq_data_get_irq_chip(d); + if (!c->irq_set_affinity) + pr_debug("IRQ%u: unable to set affinity\n", d->irq); diff --git a/queue-3.14/series b/queue-3.14/series index 779c28ef819..00c25fda85a 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -226,3 +226,4 @@ iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch media-v4l2-ov7670-fix-a-wrong-index-potentially-oopsing-the-kernel-from-user-space.patch media-v4l2-fix-vidioc_create_bufs-in-64-32-bit-compatibility-mode.patch +arm64-use-cpu_online_mask-when-using-forced-irq_set_affinity.patch