NOHZ interaction between IPI-less kick_ilb() and nohz_csd_func().

From: Suleiman Souhlal
Date: Wed Sep 13 2023 - 08:49:21 EST


Hello,

I noticed that on x86 machines that have MWAIT, with NOHZ, when the
kernel decides to kick the idle load balance on another CPU in
kick_ilb(), there's an optimization that makes it avoid using an IPI
and instead exploit the fact that the remote CPU is MWAITing on the
thread_info flags, by just setting TIF_NEED_RESCHED, in
call_function_single_prep_ipi().
However, on the remote CPU, in nohz_csd_func(), we end up not raising
the sched softirq due to NEED_RESCHED being set, so the ILB doesn't
end up getting done.

Is this intended?

Thanks,
-- Suleiman