Re: [PATCH v2] sched/rt: Have RT_PUSH_IPI be default off for non PREEMPT_RT

From: Steven Rostedt

Date: Wed May 20 2026 - 15:58:26 EST


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


>
> > // 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?
> >