[PATCH 6.1 0/3] net: Backlog NAPI threading for PREEMPT_RT

wen.yang@linux.dev posted 3 patches 2 weeks, 5 days ago
net/core/dev.c | 162 +++++++++++++++++++++++++++++++++++--------------
1 file changed, 118 insertions(+), 44 deletions(-)
[PATCH 6.1 0/3] net: Backlog NAPI threading for PREEMPT_RT
Posted by wen.yang@linux.dev 2 weeks, 5 days ago
From: Wen Yang <wen.yang@linux.dev>

Backport three upstream commits to fix a warning on PREEMPT_RT kernels
where raising SOFTIRQ from smp_call_functio triggers WARN_ON_ONCE()
in do_softirq_post_smp_call_flush().

The issue occurs when RPS sends IPIs for backlog NAPI, causing softirqs
from irq context on PREEMPT_RT. The solution implements backlog
NAPI threads to avoid IPI-triggered softirqs, which is required for
PREEMPT_RT kernels.

commit 8fcb76b934da ("net: napi_schedule_rps() cleanup") and 
commit 56364c910691 ("net: Remove conditional threaded-NAPI wakeup based on task state.")
are prerequisites.

The remaining dependencies have not been backported, as they modify
structure definitions in header files and represent optimizations
rather than bug fixes, including:
c59647c0dc67 net: add softnet_data.in_net_rx_action
a1aaee7f8f79 net: make napi_threaded_poll() aware of sd->defer_list
87eff2ec57b6 net: optimize napi_threaded_poll() vs RPS/RFS
2b0cfa6e4956 net: add generic percpu page_pool allocator
...

Eric Dumazet (1):
  net: napi_schedule_rps() cleanup

Sebastian Andrzej Siewior (2):
  net: Remove conditional threaded-NAPI wakeup based on task state.
  net: Allow to use SMP threads for backlog NAPI.

 net/core/dev.c | 162 +++++++++++++++++++++++++++++++++++--------------
 1 file changed, 118 insertions(+), 44 deletions(-)

-- 
2.25.1
Re: [PATCH 6.1 0/3] net: Backlog NAPI threading for PREEMPT_RT
Posted by Greg Kroah-Hartman 3 days, 23 hours ago
On Mon, Jan 19, 2026 at 12:40:30AM +0800, wen.yang@linux.dev wrote:
> From: Wen Yang <wen.yang@linux.dev>
> 
> Backport three upstream commits to fix a warning on PREEMPT_RT kernels
> where raising SOFTIRQ from smp_call_functio triggers WARN_ON_ONCE()
> in do_softirq_post_smp_call_flush().

But PREEMPT_RT showed up for real in 6.12.y, NOT 6.1.y. We are reverting
PREEMPT_RT-only patches from the latest 6.6.y tree at the moment, why
are these needed here for 6.1.y at all?

confused,

greg k-h