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

From: Petr Mladek

Date: Tue Sep 22 2026 - 03:46:02 EST


On Mon 2026-09-21 16:45:36, John Ogness wrote:
> Change console_msr_work (defers MSR handling) to be IRQ_WORK_LAZY,
> thus not raising an IRQ upon irq_work queueing. The irq_work is then
> handled on the next kernel tick. This additional delay is acceptable
> because any pending MSR handling is also performed in the interrupt
> handler, if mctrl is queried, and during console resume. Using
> IRQ_WORK_LAZY has the benefit of not needing to raise an IRQ for
> each line of atomic console printing when modem control is active.
>
> On a side note, the Tegra20 and Tegra30 platforms can hang if an
> irq_work IRQ is raised while entering cpuidle states. This problem
> was reproducible by performing atomic printing while entering cpuidle.
> So this change also provides a workaround for these platforms (as
> long as they are not running tickless). The discussion on this topic
> is linked below.
>
> Link: https://lore.kernel.org/lkml/f3757a75-0ba1-4558-bf57-f19ab7e59a4c@xxxxxxxxxx
> Fixes: d3539347022a ("serial: 8250: Switch to nbcon console, take 2")
> Signed-off-by: John Ogness <john.ogness@xxxxxxxxxxxxx>

We did the same change also for the nbcon_irq_work which is used
to wakeup printk kthreads in a safe context, see the commit
560f4deda32785e ("printk/nbcon: Change nbcon_irq_work to
IRQ_WORK_LAZY").

Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>

Best Regards,
Petr