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?