Re: [PATCH tty v11 1/2] serial: 8250: Switch to nbcon console, take 2
Jon Hunter <[email protected]>
| Newsgroups | gmane.linux.serial,gmane.linux.kernel,gmane.linux.ports.tegra |
|---|---|
| Message-ID | <[email protected]> |
Hi John, On 25/08/2026 14:58, John Ogness wrote: > Hi Jon, > > On 2026-08-24, Jon Hunter <[email protected]> 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 ===== Yes that does boot. Let me know if there are any further tests I can run. Thanks! Jon -- nvpublic