From 905d4eaeb375b460571582fea140b1c1d9a64a2c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 27 Sep 2018 10:55:37 +0200 Subject: [PATCH] 4.14-stable patches added patches: tick-nohz-prevent-bogus-softirq-pending-warning.patch --- queue-4.14/series | 1 + ...revent-bogus-softirq-pending-warning.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 queue-4.14/tick-nohz-prevent-bogus-softirq-pending-warning.patch diff --git a/queue-4.14/series b/queue-4.14/series index a52b7feb9d8..99d88334b5d 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -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 index 00000000000..59c6cc1a7cc --- /dev/null +++ b/queue-4.14/tick-nohz-prevent-bogus-softirq-pending-warning.patch @@ -0,0 +1,52 @@ +From tglx@linutronix.de Thu Sep 27 10:47:34 2018 +From: Thomas Gleixner +Date: Thu, 30 Aug 2018 17:05:19 +0200 (CEST) +Subject: tick/nohz: Prevent bogus softirq pending warning +To: John Crispin +Cc: Frederic Weisbecker , LKML , Ingo Molnar , Anna-Maria Gleixner , Greg Kroah-Hartman , stable@vger.kernel.org +Message-ID: + +From: Thomas Gleixner + +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 +Reported-by: John Crispin +Signed-off-by: Thomas Gleixner +Tested-by: Grygorii Strashko +Tested-by: John Crispin +Cc: Frederic Weisbecker +Cc: Ingo Molnar +Cc: Anna-Maria Gleixner +Cc: stable@vger.kernel.org +Fixes: 2d898915ccf4838c ("nohz: Fix missing tick reprogram when interrupting an inline softirq") +Acked-by: Frederic Weisbecker +Tested-by: Geert Uytterhoeven +--- + 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()); -- 2.47.3