Hello,

On Mon, Mar 16, 2026 at 10:02:48AM +0000, Christian Loehle wrote:
> @@ -5686,11 +5718,20 @@ static void kick_cpus_irq_workfn(struct irq_work 
> *irq_work)
>                * task is picked subsequently. The latter is necessary to break
>                * the wait when $cpu is taken by a higher sched class.
>                */
> -             if (cpu != cpu_of(this_rq))
> +             if (cpu != this_cpu)
>                       smp_cond_load_acquire(wait_kick_sync, VAL != 
> ksyncs[cpu]);

Given that irq_work is executed at the end of IRQ handling, we can just
reschedule the irq work when the condition is not met (or separate that out
into its own irq_work). That way, I think we can avoid the global lock.

Thanks.

-- 
tejun

Reply via email to