[PATCH net 2/3] net: ethernet: ti: icssg_common: set irq_disabled after disabling TX IRQ
Jakub Kicinski
kuba at kernel.org
Wed Feb 25 16:09:58 PST 2026
On Wed, 25 Feb 2026 17:01:31 +0530 Siddharth Vadapalli wrote:
> net_rx_action
> __napi_poll
> NAPI TX Handler
>
> It does seem strange that the 'net_rx_action' leads to the NAPI TX Handler.
For historic reason rx_action runs all NAPI, it's fine.
> However, it is exactly this path that causes the warning, and it is due to
> this that we could end up in the following situation:
>
> CPU0 CPU1
> ----------------------------- -----------------------------
> 1. TX HARD IRQ Handler entered NAPI TX Handler is running
> 2. irq_disabled is set to true Sees irq_disabled being true
> 3. Calls disable_irq_nosync() Calls enable_irq()
> 4. Enters disable_irq_nosync() [WARNING: Unbalanced enable for IRQ]
Right, but for Tx NAPI is only scheduled from the IRQ so this is not
possible. For Rx yes, AFAICT there are paths in the driver which
schedule the Rx NAPI (AF_XDP?). But Tx NAPI seemed to have only
been scheduled by IRQ. And if that's the case the NAPI can't run
until CPU0's IRQ handler calls napi_schedule().
More information about the linux-arm-kernel
mailing list