Add architectural support for the cpuidle-haltpoll driver by defining
arch_haltpoll_*(). Also define ARCH_CPUIDLE_HALTPOLL to allow
cpuidle-haltpoll to be selected.
Haltpoll uses poll_idle() to do the actual polling. This in turn
uses smp_cond_load*() to wait until there's a specific store to
a cacheline.
In the edge case -- no stores to the cacheline and no interrupt --
the event-stream provides the terminating condition ensuring we
don't wait forever. But because the event-stream runs at a fixed
frequency (configured at 10kHz) haltpoll might spend more time in
the polling stage than specified by cpuidle_poll_time().
This would only happen in the last iteration, since overshooting the
poll_limit means the governor will move out of the polling stage.
Tested-by: Haris Okanovic <harisokn@amazon.com> Tested-by: Misono Tomohiro <misono.tomohiro@fujitsu.com> Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com> Reviewed-by: Haris Okanovic <harisokn@amazon.com>