Re: [PATCH v2] sched/rt: Have RT_PUSH_IPI be default off for non PREEMPT_RT
From: Shrikanth Hegde
Date: Wed May 20 2026 - 13:54:15 EST
On 5/20/26 10:22 PM, Steven Rostedt wrote:
On Wed, 20 May 2026 12:03:37 +0530
Shrikanth Hegde <sshegde@xxxxxxxxxxxxx> wrote:
On 5/18/26 2:17 PM, Valentin Schneider wrote:
On 15/05/26 10:37, Steven Rostedt wrote:
I got a bit confused here, please correct me if I didn't get this right:
Per handle_softirqs(), we can't restart the softirq handling loop if
need_resched() is true (which would be the case here, per what we'd have
done it push_rt_task(@pull=true)).
I thought this meant softirqs couldn't be the issue, however this is only
valid within the scope of a single handle_softirqs() invocation.
AIUI here we're being hammered by IRQs, thus under this sort of pattern:
<IRQ>
__irq_exit_rcu()
invoke_softirq()
handle_softirqs()
// handle NET_RX_SOFTIRQ
// need_resched() is true so don't loop
</IRQ>
Wouldn't IRQ exit call schedule if need_resched is set? via irqentry_exit_cond_resched ?
I haven't looked at the networking code, but does NAPI just continue
looping while there are packets to process? Or is there a check if
need_resched() is set, that it will exit out early?
Yeah, I'm still wondering why this causes a live lock.
-- Steve
By any chance it is running with preempt=none/voluntary?
If so it might never call schedule until it goes back to user space.
// Barely any progress made here towards actually executing __schedule()
<IRQ>
__irq_exit_rcu()
invoke_softirq()
handle_softirqs()
// handle NET_RX_SOFTIRQ and wake up some tasks
// need_resched() is true so don't loop
</IRQ>
& repeat ad nauseam. Did I get this right?