On 2024-01-17 18:04:47 [-0800], Jakub Kicinski wrote: > Oh, and I'm bringing it up here, because CONFIG_RT can throw > in "need_resched()" into the napi_rx_has_budget(), obviously. need_resched() does not work on PREEMPT_RT the way you think. This context (the NAPI poll callback) is preemptible and (by default) runs at SCHED_FIFO 50 (within a threaded IRQ) so a context switch can happen at any time by a task with higher priority. If threadA gets preempted and owns a lock that threadB, with higher priority, wants then threadA will get back on CPU, inherit the priority of the threadB and continue to run until it releases the lock. If this is the per-CPU BH lock (which I want to remove) then it will continue until all softirqs complete. Sebastian