KVM: arm64: Refuse to run VCPU if the PMU doesn't match the physical CPU
authorAlexandru Elisei <alexandru.elisei@arm.com>
Thu, 27 Jan 2022 16:17:59 +0000 (16:17 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 8 Feb 2022 17:51:22 +0000 (17:51 +0000)
commit583cda1b0e7d5d49db5fc15db623166310e36bf6
tree04b01167aa2bb323a3239bee42169206297dd6c5
parent6ee7fca2a4a023b14aa1f1f3c4f6c833116116ef
KVM: arm64: Refuse to run VCPU if the PMU doesn't match the physical CPU

Userspace can assign a PMU to a VCPU with the KVM_ARM_VCPU_PMU_V3_SET_PMU
device ioctl. If the VCPU is scheduled on a physical CPU which has a
different PMU, the perf events needed to emulate a guest PMU won't be
scheduled in and the guest performance counters will stop counting. Treat
it as an userspace error and refuse to run the VCPU in this situation.

Suggested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220127161759.53553-7-alexandru.elisei@arm.com
Documentation/virt/kvm/devices/vcpu.rst
arch/arm64/include/asm/kvm_host.h
arch/arm64/include/uapi/asm/kvm.h
arch/arm64/kvm/arm.c
arch/arm64/kvm/pmu-emul.c