]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
powerpc/watchdog: remove arch_trigger_cpumask_backtrace
authorNicholas Piggin <npiggin@gmail.com>
Wed, 11 Apr 2018 16:09:39 +0000 (12:09 -0400)
committerSeth Forshee <seth.forshee@canonical.com>
Thu, 12 Apr 2018 15:28:25 +0000 (10:28 -0500)
BugLink: http://bugs.launchpad.net/bugs/1762913
The powerpc NMI IPIs may not be recoverable if they are taken in
some sections of code, and also there have been and still are issues
with taking NMIs (in KVM guest code, in firmware, etc) which makes them
a bit dangerous to use.

Generic code like softlockup detector and rcu stall detectors really
hammer on trigger_*_backtrace, which has lead to further problems
because we've implemented it with the NMI.

So stop providing NMI backtraces for now. Importantly, the powerpc code
uses NMI IPIs in crash/debug, and the SMP hardlockup watchdog. So if the
softlockup and rcu hang detection traces are not being printed because
the CPU is stuck with interrupts off, then the hard lockup watchdog
should get it with the NMI IPI.

Fixes: 2104180a5369 ("powerpc/64s: implement arch-specific hardlockup watchdog")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
(cherry picked from commit 47712a921bb781caf69fca9eae43be19968816cb)
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
arch/powerpc/include/asm/nmi.h
arch/powerpc/kernel/watchdog.c

index e97f58689ca717d756217ac43d6458a4971eced4..9c80939b4d14773e1a57949c86988620e3006aa3 100644 (file)
@@ -4,10 +4,6 @@
 
 #ifdef CONFIG_PPC_WATCHDOG
 extern void arch_touch_nmi_watchdog(void);
-extern void arch_trigger_cpumask_backtrace(const cpumask_t *mask,
-                                          bool exclude_self);
-#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
-
 #else
 static inline void arch_touch_nmi_watchdog(void) {}
 #endif
index 87da80ccced14d9ad8cdef50b27700416ead6dd8..3963baaba92db5545284bf17977a6b0f1200b249 100644 (file)
@@ -393,25 +393,3 @@ int __init watchdog_nmi_probe(void)
        }
        return 0;
 }
-
-static void handle_backtrace_ipi(struct pt_regs *regs)
-{
-       nmi_cpu_backtrace(regs);
-}
-
-static void raise_backtrace_ipi(cpumask_t *mask)
-{
-       unsigned int cpu;
-
-       for_each_cpu(cpu, mask) {
-               if (cpu == smp_processor_id())
-                       handle_backtrace_ipi(NULL);
-               else
-                       smp_send_nmi_ipi(cpu, handle_backtrace_ipi, 1000000);
-       }
-}
-
-void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
-{
-       nmi_trigger_cpumask_backtrace(mask, exclude_self, raise_backtrace_ipi);
-}