Re: [PATCH tty v11 1/2] serial: 8250: Switch to nbcon console, take 2
From: John Ogness
Date: Tue Aug 25 2026 - 10:23:13 EST
Hi Jon,
On 2026-08-24, Jon Hunter <jonathanh@xxxxxxxxxx> wrote:
> With this I see a little more output on the console, but it still
> appears to hang later and never fully boots.
>
> Boot log here: https://pastebin.com/Xe1vmeUj
Thanks, this information is helpful. Below is another hack, to be used
on the unmodified linux-next. For whatever reason, I think the queuing
of irqwork is causing problems. Perhaps the irqwork is actually firing
even though interrupts are supposed to be disabled here.
The following hack will disable the queuing during the cpuidle. Please
give this a try:
===== BEGIN CPUIDLE HACK =====
diff --git a/drivers/cpuidle/cpuidle-tegra.c b/drivers/cpuidle/cpuidle-tegra.c
index aca907a62bb5d..1dca9d6defbff 100644
--- a/drivers/cpuidle/cpuidle-tegra.c
+++ b/drivers/cpuidle/cpuidle-tegra.c
@@ -226,6 +226,7 @@ static int tegra_cpuidle_adjust_state_index(int index, unsigned int cpu)
return index;
}
+extern bool console_irqwork_blocked;
static __cpuidle int tegra_cpuidle_enter(struct cpuidle_device *dev,
struct cpuidle_driver *drv,
int index)
@@ -238,6 +239,8 @@ static __cpuidle int tegra_cpuidle_enter(struct cpuidle_device *dev,
if (dev->states_usage[index].disable)
return -1;
+ console_irqwork_blocked = true;
+
if (index == TEGRA_C1) {
if (do_rcu)
ct_cpuidle_enter();
@@ -256,6 +259,8 @@ static __cpuidle int tegra_cpuidle_enter(struct cpuidle_device *dev,
index = ret;
}
+ console_irqwork_blocked = false;
+
return index;
}
===== END CPUIDLE HACK =====
John Ogness