[PATCH v2] Enable haltpoll for arm64

Mihai Carabas mihai.carabas at oracle.com
Thu Jan 25 06:39:17 PST 2024


Hello,

How can we move this patchset forward?

Thank you,
Mihai

La 20.11.2023 16:01, Mihai Carabas a scris:
> 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(-)
>




More information about the linux-arm-kernel mailing list