Re: [PATCH tty 1/1] serial: 8250: Change console_msr_work to IRQ_WORK_LAZY

From: Sebastian Andrzej Siewior

Date: Tue Sep 01 2026 - 03:58:21 EST


On 2026-08-31 17:23:54 [+0200], Petr Mladek wrote:
> On Fri 2026-08-28 18:06:52, Sebastian Andrzej Siewior wrote:
> > On 2026-08-28 18:04:08 [+0206], John Ogness wrote:
> > > For some platforms it is a problem to queue irq_work when entering
> > > cpuidle states. Since irq_work is used for deferred MSR handling,
> > > any atomic console printing when entering cpuidle states can lead
> > > to the affected hardware hanging. Tegra20 and Tegra30 are examples
> > > of such platforms. Avoiding raising the irq_work IRQ has shown to
> > > circumvent the problem.
> >
> > > Change the console_msr_work to be IRQ_WORK_LAZY, thus not raising
> > > an IRQ upon irq_work queuing. The irq_work is then handled on the
> > > next interrupt (worst case, kernel tick).
> >
> > Not on the next interrupt, on the next jiffies tick. Should you run
> > tickless and should the CPU have the tick switch off then it will raise
> > the irq-work interrupt anyway.
>
> This seems to be more precise. There is one more scenario. It would
> run in a dedicated kthread with PREEMPT_RT.

That is an implementation detail same as the tickless thingy.

> I hope that nobody would run tickless system on the old
> Tegra hardware. So, this change should be good enough in reality.
>
> Anyway, I would prefer to get this "workaround" in for 7.3.
> In each case, I would not want to revert the uart 8250 conversion
> to nbcon because it did break the Tegra hardware.

I would see this as an improvement and not a workaround. It has the
side effect that it works now on Tegra which has apparently a broken low
idle implementation.

*If* this LAZY mode couldn't be used for some reason, I would suggest to
disable the offending low idle mode
https://lore.kernel.org/all/791131d7-cf8d-4572-8eec-df5fff1783a9@xxxxxxxxxx/

rather than reverting 8250-nbcon for everyone.


> Best Regards,
> Petr

Sebastian