Re: "Dead loop on virtual device" error without softirq-BKL on PREEMPT_RT

From: Sebastian Andrzej Siewior

Date: Tue Feb 17 2026 - 04:58:12 EST


On 2026-02-17 09:56:48 [+0100], Bert Karwatzki wrote:
> Am Dienstag, dem 17.02.2026 um 08:19 +0100 schrieb Sebastian Andrzej Siewior:
> > On 2026-02-17 00:48:25 [+0100], Bert Karwatzki wrote:
> > > The problem seems to be that different preemtible threads try to send skbs.
> >
> > This does not matter because the counter is per-thread not per-CPU.
>
> The "Dead loop on virtual device" messages is not printed because dev_xmit_recursion()
> returns true, but because READ_ONCE(txq->xmit_lock_owner) == cpu.

Ach, so it is not the recursion, it is the assigned CPU.
This is assigned via __netif_tx_lock(). Here we somehow lack the
expected synchronisation. So the queue should be locked but not by the
caller.

> Here's the backtrace:

thanks.

> Bert Karwatzki

Sebastian