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

From: Valentin Schneider

Date: Thu May 21 2026 - 06:12:52 EST


On 20/05/26 12:03, Shrikanth Hegde 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 ?
>

So as pointed out further down the thread it may not because of
PREEMPT_NONE.

Also; schedule is entered with preemption disabled and IRQs enabled, which
I think means in a stupidly network-busy scenario and !PREEMPT_RT,
IRQ+invoke_softirq() can significantly slow down the top half of
__schedule() itself.