MIPS: kdump: Mark cpu back online before rebooting
authorDengcheng Zhu <dzhu@wavecomp.com>
Wed, 26 Sep 2018 19:49:10 +0000 (19:49 +0000)
committerPaul Burton <paul.burton@mips.com>
Fri, 28 Sep 2018 17:09:03 +0000 (10:09 -0700)
The crash utility initializes cpu state by reading the system kernel
memory, which is copied into vmcore.

It is also natural to preserve the online state for CPUs at crash.

Failing to do so could make the analysis tool present info for only 1 CPU
by default, and unable to find panic task.

Signed-off-by: Dengcheng Zhu <dzhu@wavecomp.com>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/20809/
Cc: Paul Burton <pburton@wavecomp.com>
Cc: "ralf@linux-mips.org" <ralf@linux-mips.org>
Cc: "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>
Cc: "rachel.mozes@intel.com" <rachel.mozes@intel.com>
arch/mips/kernel/machine_kexec.c

index 35175eb2e8b04712d30e948411c6fcd2740da43d..93936dce04d65d606accb838009a1d62ebb1169e 100644 (file)
@@ -173,6 +173,16 @@ void kexec_reboot(void)
 {
        void (*do_kexec)(void) __noreturn;
 
+       /*
+        * We know we were online, and there will be no incoming IPIs at
+        * this point. Mark online again before rebooting so that the crash
+        * analysis tool will see us correctly.
+        */
+       set_cpu_online(smp_processor_id(), true);
+
+       /* Ensure remote CPUs observe that we're online before rebooting. */
+       smp_mb__after_atomic();
+
 #ifdef CONFIG_SMP
        if (smp_processor_id() > 0) {
                /*