]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Sep 2018 08:55:37 +0000 (10:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Sep 2018 08:55:37 +0000 (10:55 +0200)
added patches:
tick-nohz-prevent-bogus-softirq-pending-warning.patch

queue-4.14/series
queue-4.14/tick-nohz-prevent-bogus-softirq-pending-warning.patch [new file with mode: 0644]

index a52b7feb9d82df36ee1e560060954c56df9ad2a0..99d88334b5d8465e5914373268205387ccaa0d75 100644 (file)
@@ -60,4 +60,5 @@ sched-fair-fix-vruntime_normalized-for-remote-non-migration-wakeup.patch
 pci-aardvark-size-bridges-before-resources-allocation.patch
 vmw_balloon-include-asm-io.h.patch
 iw_cxgb4-only-allow-1-flush-on-user-qps.patch
+tick-nohz-prevent-bogus-softirq-pending-warning.patch
 crypto-x86-aegis-morus-do-not-require-osxsave-for-sse2.patch
diff --git a/queue-4.14/tick-nohz-prevent-bogus-softirq-pending-warning.patch b/queue-4.14/tick-nohz-prevent-bogus-softirq-pending-warning.patch
new file mode 100644 (file)
index 0000000..59c6cc1
--- /dev/null
@@ -0,0 +1,52 @@
+From tglx@linutronix.de  Thu Sep 27 10:47:34 2018
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 30 Aug 2018 17:05:19 +0200 (CEST)
+Subject: tick/nohz: Prevent bogus softirq pending warning
+To: John Crispin <john@phrozen.org>
+Cc: Frederic Weisbecker <frederic@kernel.org>, LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@kernel.org>, Anna-Maria Gleixner <anna-maria@linutronix.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, stable@vger.kernel.org
+Message-ID: <alpine.DEB.2.21.1808301702450.1210@nanos.tec.linutronix.de>
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+Commit 0a0e0829f990 ("nohz: Fix missing tick reprogram when interrupting an
+inline softirq") got backported to stable trees and now causes the NOHZ
+softirq pending warning to trigger. It's not an upstream issue as the NOHZ
+update logic has been changed there.
+
+The problem is when a softirq disabled section gets interrupted and on
+return from interrupt the tick/nohz state is evaluated, which then can
+observe pending soft interrupts. These soft interrupts are legitimately
+pending because they cannot be processed as long as soft interrupts are
+disabled and the interrupted code will correctly process them when soft
+interrupts are reenabled.
+
+Add a check for softirqs disabled to the pending check to prevent the
+warning.
+
+Reported-by: Grygorii Strashko <grygorii.strashko@ti.com>
+Reported-by: John Crispin <john@phrozen.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Grygorii Strashko <grygorii.strashko@ti.com>
+Tested-by: John Crispin <john@phrozen.org>
+Cc: Frederic Weisbecker <frederic@kernel.org>
+Cc: Ingo Molnar <mingo@kernel.org>
+Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
+Cc: stable@vger.kernel.org
+Fixes: 2d898915ccf4838c ("nohz: Fix missing tick reprogram when interrupting an inline softirq")
+Acked-by: Frederic Weisbecker <frederic@kernel.org>
+Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
+---
+ kernel/time/tick-sched.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -908,7 +908,7 @@ static bool can_stop_idle_tick(int cpu,
+       if (unlikely(local_softirq_pending() && cpu_online(cpu))) {
+               static int ratelimit;
+-              if (ratelimit < 10 &&
++              if (ratelimit < 10 && !in_softirq() &&
+                   (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) {
+                       pr_warn("NOHZ: local_softirq_pending %02x\n",
+                               (unsigned int) local_softirq_pending());