From: Thomas Gleixner <tglx@linutronix.de> To: Baokun Li <libaokun1@huawei.com> Cc: arjan@linux.intel.com, ashok.raj@intel.com, ashok.raj@linux.intel.com, ebiederm@xmission.com, linux-kernel@vger.kernel.org, mario.limonciello@amd.com, thomas.lendacky@amd.com, tony.luck@intel.com, tonyb@cybernetics.com, x86@kernel.org, yangerkun <yangerkun@huawei.com>, Baoquan He <bhe@redhat.com>, kexec@lists.infradead.org Subject: Re: [BUG REPORT] Triggering a panic in an x86 virtual machine does not wait Date: Wed, 05 Jul 2023 10:59:23 +0200 [thread overview] Message-ID: <87ttui91jo.ffs@tglx> (raw) In-Reply-To: <71578392-63ed-02a9-24da-2adf8cce38c7@huawei.com> On Mon, Jul 03 2023 at 11:44, Baokun Li wrote: > When I manually trigger panic in a qume x86 VM with > > `echo c > /proc/sysrq-trigger`, > > I find that the VM will probably reboot directly, but the > PANIC_TIMEOUT is 0. > This prevents us from exporting the vmcore via panic, and even if we succeed > in panic exporting the vmcore, the processes in the vmcore are mostly > stop_this_cpu(). By dichotomizing we found the patch that introduced the > behavior change > > 45e34c8af58f ("x86/smp: Put CPUs into INIT on shutdown if possible"), Bah, I missed that this is used by crash too. So if this happens to be invoked on an AP, i.e. not on CPU 0, then the INIT will reset the machine. Fix below. Thanks, tglx --- diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index ed2d51960a7d..e1aa2cd7734b 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -1348,6 +1348,14 @@ bool smp_park_other_cpus_in_init(void) if (apic->wakeup_secondary_cpu_64 || apic->wakeup_secondary_cpu) return false; + /* + * If this is a crash stop which does not execute on the boot CPU, + * then this cannot use the INIT mechanism because INIT to the boot + * CPU will reset the machine. + */ + if (this_cpu) + return false; + for_each_present_cpu(cpu) { if (cpu == this_cpu) continue;
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de> To: Baokun Li <libaokun1@huawei.com> Cc: arjan@linux.intel.com, ashok.raj@intel.com, ashok.raj@linux.intel.com, ebiederm@xmission.com, linux-kernel@vger.kernel.org, mario.limonciello@amd.com, thomas.lendacky@amd.com, tony.luck@intel.com, tonyb@cybernetics.com, x86@kernel.org, yangerkun <yangerkun@huawei.com>, Baoquan He <bhe@redhat.com>, kexec@lists.infradead.org Subject: Re: [BUG REPORT] Triggering a panic in an x86 virtual machine does not wait Date: Wed, 05 Jul 2023 10:59:23 +0200 [thread overview] Message-ID: <87ttui91jo.ffs@tglx> (raw) In-Reply-To: <71578392-63ed-02a9-24da-2adf8cce38c7@huawei.com> On Mon, Jul 03 2023 at 11:44, Baokun Li wrote: > When I manually trigger panic in a qume x86 VM with > > `echo c > /proc/sysrq-trigger`, > > I find that the VM will probably reboot directly, but the > PANIC_TIMEOUT is 0. > This prevents us from exporting the vmcore via panic, and even if we succeed > in panic exporting the vmcore, the processes in the vmcore are mostly > stop_this_cpu(). By dichotomizing we found the patch that introduced the > behavior change > > 45e34c8af58f ("x86/smp: Put CPUs into INIT on shutdown if possible"), Bah, I missed that this is used by crash too. So if this happens to be invoked on an AP, i.e. not on CPU 0, then the INIT will reset the machine. Fix below. Thanks, tglx --- diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index ed2d51960a7d..e1aa2cd7734b 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -1348,6 +1348,14 @@ bool smp_park_other_cpus_in_init(void) if (apic->wakeup_secondary_cpu_64 || apic->wakeup_secondary_cpu) return false; + /* + * If this is a crash stop which does not execute on the boot CPU, + * then this cannot use the INIT mechanism because INIT to the boot + * CPU will reset the machine. + */ + if (this_cpu) + return false; + for_each_present_cpu(cpu) { if (cpu == this_cpu) continue; _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2023-07-05 8:59 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-06-15 20:33 [patch v3 0/7] x86/smp: Cure stop_other_cpus() and kexec() troubles Thomas Gleixner 2023-06-15 20:33 ` [patch v3 1/7] x86/smp: Make stop_other_cpus() more robust Thomas Gleixner 2023-06-16 1:58 ` Ashok Raj 2023-06-16 7:53 ` Thomas Gleixner 2023-06-16 14:13 ` Ashok Raj 2023-06-16 18:01 ` Thomas Gleixner 2023-06-16 20:57 ` Ashok Raj 2023-06-19 17:51 ` Ashok Raj 2023-06-20 8:09 ` Borislav Petkov 2023-06-16 16:36 ` Tony Battersby 2023-06-15 20:33 ` [patch v3 2/7] x86/smp: Dont access non-existing CPUID leaf Thomas Gleixner 2023-06-19 17:02 ` Limonciello, Mario 2023-06-19 17:15 ` Thomas Gleixner 2023-06-20 8:20 ` Borislav Petkov 2023-06-15 20:33 ` [patch v3 3/7] x86/smp: Remove pointless wmb()s from native_stop_other_cpus() Thomas Gleixner 2023-06-20 8:47 ` Borislav Petkov 2023-06-20 13:00 ` [tip: x86/core] " tip-bot2 for Thomas Gleixner 2023-06-15 20:33 ` [patch v3 4/7] x86/smp: Use dedicated cache-line for mwait_play_dead() Thomas Gleixner 2023-06-20 9:01 ` Borislav Petkov 2023-06-20 13:00 ` [tip: x86/core] " tip-bot2 for Thomas Gleixner 2023-06-15 20:33 ` [patch v3 5/7] x86/smp: Cure kexec() vs. mwait_play_dead() breakage Thomas Gleixner 2023-06-20 9:23 ` Borislav Petkov 2023-06-20 12:25 ` Thomas Gleixner 2023-06-20 13:00 ` [tip: x86/core] " tip-bot2 for Thomas Gleixner 2023-06-15 20:33 ` [patch v3 6/7] x86/smp: Split sending INIT IPI out into a helper function Thomas Gleixner 2023-06-20 9:29 ` Borislav Petkov 2023-06-20 12:30 ` Thomas Gleixner 2023-06-20 13:00 ` [tip: x86/core] " tip-bot2 for Thomas Gleixner 2023-06-15 20:34 ` [patch v3 7/7] x86/smp: Put CPUs into INIT on shutdown if possible Thomas Gleixner 2023-06-20 10:27 ` Borislav Petkov 2023-06-20 13:00 ` [tip: x86/core] " tip-bot2 for Thomas Gleixner 2023-07-03 3:44 ` [BUG REPORT] Triggering a panic in an x86 virtual machine does not wait Baokun Li 2023-07-05 8:59 ` Thomas Gleixner [this message] 2023-07-05 8:59 ` Thomas Gleixner 2023-07-06 6:44 ` Baokun Li 2023-07-06 6:44 ` Baokun Li 2023-07-07 10:18 ` Thomas Gleixner 2023-07-07 10:18 ` Thomas Gleixner 2023-07-07 12:40 ` Baokun Li 2023-07-07 12:40 ` Baokun Li 2023-07-07 13:49 ` [tip: x86/core] x86/smp: Don't send INIT to boot CPU tip-bot2 for Thomas Gleixner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87ttui91jo.ffs@tglx \ --to=tglx@linutronix.de \ --cc=arjan@linux.intel.com \ --cc=ashok.raj@intel.com \ --cc=ashok.raj@linux.intel.com \ --cc=bhe@redhat.com \ --cc=ebiederm@xmission.com \ --cc=kexec@lists.infradead.org \ --cc=libaokun1@huawei.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mario.limonciello@amd.com \ --cc=thomas.lendacky@amd.com \ --cc=tony.luck@intel.com \ --cc=tonyb@cybernetics.com \ --cc=x86@kernel.org \ --cc=yangerkun@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.