This patchset enables the usage of haltpoll governer on arm64. This is specifically interesting for KVM guests by reducing the IPC latencies. Here are some benchmarks without/with haltpoll for a KVM guest: a) without haltpoll: perf bench sched pipe # Running 'sched/pipe' benchmark: # Executed 1000000 pipe operations between two processes Total time: 8.138 [sec] 8.138094 usecs/op 122878 ops/sec b) with haltpoll: perf bench sched pipe # Running 'sched/pipe' benchmark: # Executed 1000000 pipe operations between two processes Total time: 5.003 [sec] 5.003085 usecs/op 199876 ops/sec v2 changes from v1: - added patch 7 where we change cpu_relax with smp_cond_load_relaxed per PeterZ (this improves by 50% at least the CPU cycles consumed in the tests above: 10,716,881,137 now vs 14,503,014,257 before) - removed the ifdef from patch 1 per RafaelW Joao Martins (6): x86: Move ARCH_HAS_CPU_RELAX to arch x86/kvm: Move haltpoll_want() to be arch defined governors/haltpoll: Drop kvm_para_available() check arm64: Select ARCH_HAS_CPU_RELAX arm64: Define TIF_POLLING_NRFLAG cpuidle-haltpoll: ARM64 support Mihai Carabas (1): cpuidle/poll_state: replace cpu_relax with smp_cond_load_relaxed arch/Kconfig | 3 +++ arch/arm64/Kconfig | 1 + arch/arm64/include/asm/thread_info.h | 6 ++++++ arch/x86/Kconfig | 1 + arch/x86/include/asm/cpuidle_haltpoll.h | 1 + arch/x86/kernel/kvm.c | 10 ++++++++++ drivers/cpuidle/Kconfig | 4 ++-- drivers/cpuidle/cpuidle-haltpoll.c | 8 ++------ drivers/cpuidle/governors/haltpoll.c | 5 +---- drivers/cpuidle/poll_state.c | 14 +++++++++----- include/linux/cpuidle_haltpoll.h | 5 +++++ 11 files changed, 41 insertions(+), 17 deletions(-) -- 1.8.3.1