Re: [PATCH tty v11 1/2] serial: 8250: Switch to nbcon console, take 2

From: Jon Hunter

Date: Thu Aug 27 2026 - 10:29:47 EST



On 27/08/2026 10:45, Thierry Reding wrote:
On Thu, Aug 20, 2026 at 01:26:03PM +0206, John Ogness wrote:
On 2026-08-18, Petr Mladek <pmladek@xxxxxxxx> wrote:
[0] https://pastebin.com/FhQVSqfy

...

Almost everything works as expected except for:

1. I am not sure why "printk: console [ttyS0] disabled" is printed.
It does not make any sense to me.

I have seen this in the past. It can happens unregister_console_locked()
has always printed the disabled message before actually checking if the
console is registered.

IIRC it has something to do with serial8250_register_8250_port() calling
uart_remove_one_port(). I remember starting to look into how to fix it
but then was going down a rabbit hole that exceeded my scope at the
time.

2. The WARNING would be handled with NBCON_PRIO_EMERGENCY.
I wonder if this warning happened also with "v5" of this
patchset.

The tegra issue we had with v5 was related to irqwork being scheduled
when suspending. When keep_bootcon is specified, there will be no
irqwork scheduled during boot because legacy_direct=true.

From the backtrace in the posted boot log we see that the warning is
within tegra_pmc_enter_suspend_mode(). I am wondering if this is the
same issue we saw with v5... an irqwork getting scheduled when the tegra
is entering some suspend state.

You mentioning tegra_pmc_enter_suspend_mode() jogged a memory. We have
to play some weird cpuidle tricks when PCI interrupts are anebled
because of a hardware bug. That bug, as far as I know, is only Tegra20
specific, so it doesn't explain this. In this particular case we're also
not talking about PCI in this case, *but* I wonder if there's maybe
other IRQ issues related to cpuidle.

It's a bit of a shot in the dark, but we could try disabling the various
suspend modes via the PMC DT node. Notably LP2 seems to be the one
that's causing issues on Tegra20 with PCI, so maybe changing
nvidia,suspend-mode to something like 0 or 1 would help narrow things
down?
By default 'nvidia,suspend-mode' is set to 1 for this board. In order,
to disable CPU idle CC6 state (CPU cluster off) I needed to remove this
property completely. Doing so does work around the problem and the
device boots.

Similarly, if I make the following change to ensure that CC6 is
disabled for Tegra20 and Tegra30 this also works for both Tegra20 and
Tegra30 ...

diff --git a/drivers/cpuidle/cpuidle-tegra.c b/drivers/cpuidle/cpuidle-tegra.c
index aca907a62bb5..d592e1f37f00 100644
--- a/drivers/cpuidle/cpuidle-tegra.c
+++ b/drivers/cpuidle/cpuidle-tegra.c
@@ -374,9 +374,11 @@ static int tegra_cpuidle_probe(struct platform_device *pdev)
case TEGRA20:
/* Tegra20 isn't capable to power-off individual CPU cores */
tegra_cpuidle_disable_state(TEGRA_C7);
+ tegra_cpuidle_disable_state(TEGRA_CC6);
break;
case TEGRA30:
+ tegra_cpuidle_disable_state(TEGRA_CC6);
break;
case TEGRA114:

Jon

--
nvpublic