From: Imre Kaloz <kaloz@kernel.org>
To: John Ogness <john.ogness@linutronix.de>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>,
linux-serial@vger.kernel.org, Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: Re: [PATCH] MIPS: SGI-IP27: print the NMI dump on an nbcon console
Date: Thu, 1 Oct 2026 18:52:38 +0200 (CEST) [thread overview]
Message-ID: <55083820-478c-e6a6-b129-467140f161db@kernel.org> (raw)
In-Reply-To: <87ece98je8.fsf@jogness.linutronix.de>
Hi John,
On Thu, 1 Oct 2026, John Ogness wrote:
> On 2026-10-01, Imre Kaloz <kaloz@kernel.org> wrote:
>> Since the 8250 console became nbcon, printk() in nmi_dump() only queues
>> records for the printer thread, which never runs because no CPU leaves
>> the NMI handler before the hub reset. Print the dump from an emergency
>> section.
>
> Please excuse my ignorance, but could you inform me about the context?
> When is nmi_dump() called? Does the hardware always reset/reboot/hang
> from this call?
nmi_dump() has no caller in Linux. install_cpu_nmi_handler() stores
its address in the per-CPU NMI vector the PROM keeps in low memory,
and the PROM jumps to it when the system controller asserts NMI on
the CPUs: the "nmi" command at the L1 (or the MMSC on an Origin
2000), typically used to get a dump out of a hung machine.
Every CPU that takes the NMI enters nmi_dump(). The first one to get
nmi_lock waits until all online CPUs have arrived, prints the saved
state of every CPU and ends with the NI_PORT_RESET write. The others
spin on nmi_lock, which is never released. No CPU goes back to the
interrupted context, so the printer kthread never runs, which is why
the dump never reaches the 8250 console today.
On the IP35 machines I tested the reset write takes effect and the PROM
restarts right after the dump.
<snip>
>> @@ -183,6 +184,12 @@ static void nmi_dump(void)
>> */
>> arch_spin_lock(&nmi_lock);
>>
>> + /*
>> + * No CPU leaves the NMI handler before the hub reset below, so an
>> + * nbcon console's printer thread would never print the dump.
>> + */
>> + nbcon_cpu_emergency_enter();
>> +
>> #ifdef REAL_NMI_SIGNAL
>> /*
>> * Wait up to 15 seconds for the other cpus to respond to the NMI.
>
> The CPU enters an emergency state, but shouldn't it exit the emergency
> state at some point? Or does the machine always unstoppably
> reset/reboot/hang after this point?
If the reset write did not take effect, nmi_dump() would return to
the PROM.
Best,
Imre
next prev parent reply other threads:[~2026-10-01 16:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 15:50 Imre Kaloz
2026-10-01 16:39 ` John Ogness
2026-10-01 16:52 ` Imre Kaloz [this message]
2026-10-01 18:01 ` John Ogness
2026-10-01 18:16 ` Imre Kaloz
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=55083820-478c-e6a6-b129-467140f161db@kernel.org \
--to=kaloz@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=tsbogend@alpha.franken.de \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®