On Fri, Oct 18, 2024 at 12:00:34PM -0700, Ankur Arora wrote: > Catalin Marinas <catalin.marinas@xxxxxxx> writes: > > On Thu, Oct 17, 2024 at 03:47:31PM -0700, Ankur Arora wrote: > >> So maybe the right thing to do would be to keep smp_cond_load_timeout() > >> but only allow polling if WFxT or event-stream is enabled. And enhance > >> cpuidle_poll_state_init() to fail if the above condition is not met. > > > > We could do this as well. Maybe hide this behind another function like > > arch_has_efficient_smp_cond_load_timeout() (well, some shorter name), > > checked somewhere in or on the path to cpuidle_poll_state_init(). Well, > > it might be simpler to do this in haltpoll_want(), backed by an > > arch_haltpoll_want() function. > > Yeah, checking in arch_haltpoll_want() would mean that we can leave all > the cpuidle_poll_state_init() call sites unchanged. > > However, I suspect that even acpi-idle on arm64 might end up using > poll_idle() (as this patch tries to do: > https://lore.kernel.org/lkml/f8a1f85b-c4bf-4c38-81bf-728f72a4f2fe@xxxxxxxxxx/). > > So, let me try doing it both ways to see which one is simpler. > Given that the event-stream can be assumed to be always-on it might just > be more straight-forward to fallback to cpu_relax() in that edge case. I agree, let's go with the simplest. If one has some strong case for running with the event stream disabled and idle polling becomes too energy inefficient, we can revisit and add some run-time checks. -- Catalin