Re: [PATCH printk v2 2/2] printk: Avoid scheduling irq_work on suspend

From: John Ogness

Date: Thu Nov 13 2025 - 12:07:01 EST


Hi Derek,

On 2025-11-13, Derek Barbosa <debarbos@xxxxxxxxxx> wrote:
> Thanks for this. I have recently have been seeing the same issue with a large-CPU
> workstation system in which the serial console been locking up entry/exit of S4
> Hibernation sleep state at different intervals.
>
> I am still running tests on the V1 of the series to determine reproducibility,
> but I will try to get this version tested in a timely manner as well.
>
> I did, however, test the proto-patch at [0]. The original issue was reproducible
> with this patch applied. Avoiding klogd waking in vprintk_emit() and the
> addition of the check in nbcon.c (new in this series) opposed to aborting
> callers outright seems more airtight.

I assume the problem you are seeing is with the PREEMPT_RT patches
applied (i.e. with the 8250-NBCON included). If that is the case, note
that recent versions of the 8250 driver introduce its own irq_work that
is also problematic. I am currently reworking the 8250-NBCON series so
that it does not introduce irq_work.

Since you probably are not doing anything related to modem control,
maybe you could test with the following hack (assuming you are using a
v6.14 or later PREEMPT_RT patched kernel).

diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 96d32db9f8872..2ad0f91ad467a 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -3459,7 +3459,7 @@ void serial8250_console_write(struct uart_8250_port *up,
* may be a context that does not permit waking up tasks.
*/
if (is_atomic)
- irq_work_queue(&up->modem_status_work);
+ ;//irq_work_queue(&up->modem_status_work);
else
serial8250_modem_status(up);
}

> [0] https://github.com/Linutronix/linux/commit/ae173249d9028ef159fba040bdab260d80dda43f

John