PV sched supports the vCPU preemption check to enhance lock performance on
overcommitted hosts. Paravirtualized spinlocks allow a pvops backend to
replace the spinlock implementation with something virtualization-friendly.
PV qspinlock has a minimal impact on native kernels and gives a nice
performance benefit on paravirtualized KVM kernels.
Zengruan Ye (9):
KVM: arm64: Document PV-sched interface
KVM: arm64: Implement PV_SCHED_FEATURES call
KVM: arm64: Support pvsched preempted via shared structure
KVM: arm64: Add interface to support vCPU preempted check
KVM: arm64: Support the vCPU preemption check
KVM: arm64: Add SMCCC PV-sched to kick cpu
KVM: arm64: Implement PV_SCHED_KICK_CPU call
KVM: arm64: Enable PV qspinlock
KVM: arm64: Add tracepoints for PV qspinlock
Documentation/virt/kvm/arm/pvsched.rst | 74 ++++++++
arch/arm64/Kconfig | 24 +++
arch/arm64/include/asm/Kbuild | 1 -
arch/arm64/include/asm/kvm_host.h | 38 ++++
arch/arm64/include/asm/paravirt.h | 49 +++++
arch/arm64/include/asm/pvsched-abi.h | 16 ++
arch/arm64/include/asm/qspinlock.h | 48 +++++
arch/arm64/include/asm/qspinlock_paravirt.h | 12 ++
arch/arm64/include/asm/spinlock.h | 11 ++
arch/arm64/kernel/Makefile | 3 +-
arch/arm64/kernel/paravirt-spinlocks.c | 21 +++
arch/arm64/kernel/paravirt.c | 187 ++++++++++++++++++++
arch/arm64/kernel/trace-paravirt.h | 66 +++++++
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/arm.c | 15 +-
arch/arm64/kvm/handle_exit.c | 1 +
arch/arm64/kvm/hypercalls.c | 20 +++
arch/arm64/kvm/pvsched.c | 82 +++++++++
arch/arm64/kvm/trace_arm.h | 18 ++
include/linux/arm-smccc.h | 25 +++
include/linux/cpuhotplug.h | 1 +
21 files changed, 710 insertions(+), 4 deletions(-)
create mode 100644 Documentation/virt/kvm/arm/pvsched.rst
create mode 100644 arch/arm64/include/asm/pvsched-abi.h
create mode 100644 arch/arm64/include/asm/qspinlock.h
create mode 100644 arch/arm64/include/asm/qspinlock_paravirt.h
create mode 100644 arch/arm64/kernel/paravirt-spinlocks.c
create mode 100644 arch/arm64/kernel/trace-paravirt.h
create mode 100644 arch/arm64/kvm/pvsched.c
--
2.33.0