From: Wen Yang wen.yang@linux.dev
do_softirq_post_smp_call_flush() on PREEMPT_RT kernels carries a WARN_ON_ONCE() for any SOFTIRQ being raised from an SMP-call-function. Since do_softirq_post_smp_call_flush() is called with preempt disabled, raising a SOFTIRQ during flush_smp_call_function_queue() can lead to longer preempt disabled sections.
RPS distributes network processing load across CPUs by enqueuing packets on a remote CPU's backlog and raising NET_RX_SOFTIRQ to process them.
The following patches fixes this issue.
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, 115 insertions(+), 47 deletions(-)