Thread (25 messages) flat view 25 messages, 7 authors, 2026-06-19

Re: [PATCH net] netpoll: run NAPI poll in softirq context to avoid rq->lock self-deadlock

From: Breno Leitao <leitao@debian.org>
Date: 2026-06-16 16:32:35
Also in: linux-rt-devel, lkml, stable

On Tue, Jun 16, 2026 at 12:35:29PM +0200, Sebastian Andrzej Siewior wrote:
On 2026-06-11 19:11:14 [-0700], Jakub Kicinski wrote:
quoted
On Wed, 10 Jun 2026 11:36:21 -0700 Vlad Poenaru wrote:
quoted
@@ -194,11 +194,56 @@ void netpoll_poll_dev(struct net_device *dev)
+	local_bh_disable();
+ 	poll_napi(dev);
+	_local_bh_enable();
tglx, Sebastian, are you okay with using _local_bh_enable() to trick
softirq into not waking ksoftirqd? The problematic path is:

  scheduler -> printk -> netconsole -> raise softirq -> scheduler (deadlock)

so the softirq may never get serviced.

In netcons we try to avoid touching the network driver if the Tx path
locks are already held. Ideally we'd do something similar with the
scheduler. Try to do bare minimum if we may be in the scheduler.
Failing that - don't poll the driver if we were called with irqs
already disabled.

Or maybe we only poll from console->write_thread ?
So this is not an issue since commit 7eab73b18630e ("netconsole: convert
to NBCON console infrastructure"). Because from here now on writes are
deferred to the nbcon thread. So this purely about -stable in this case.
Does the nbcon thread handle defer even for consoles that support atomic
operations?

netconsole is marked with CON_NBCON_ATOMIC_UNSAFE, which means it rarely
performs inline/direct printk and instead pushes to the thread, which
flushes in a safe context.

For drivers that behave correctly, I'd like to be able to drop
CON_NBCON_ATOMIC_UNSAFE, potentially setting it at runtime based on the
underlying driver capabilities. If netconsole is backed by a well-behaving
network driver, we could eventually remove the flag (!?)

Would that approach cause any issues?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help