diff options
author | Alexandru Elisei <alexandru.elisei@arm.com> | 2022-01-27 19:17:59 +0300 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-02-08 20:51:22 +0300 |
commit | 583cda1b0e7d5d49db5fc15db623166310e36bf6 (patch) | |
tree | 04b01167aa2bb323a3239bee42169206297dd6c5 /Documentation | |
parent | 6ee7fca2a4a023b14aa1f1f3c4f6c833116116ef (diff) | |
download | linux-583cda1b0e7d5d49db5fc15db623166310e36bf6.tar.xz |
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
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/virt/kvm/devices/vcpu.rst | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Documentation/virt/kvm/devices/vcpu.rst b/Documentation/virt/kvm/devices/vcpu.rst index e8c5770590a2..260db203a1e2 100644 --- a/Documentation/virt/kvm/devices/vcpu.rst +++ b/Documentation/virt/kvm/devices/vcpu.rst @@ -131,7 +131,11 @@ if a PMU event filter is already present. Note that KVM will not make any attempts to run the VCPU on the physical CPUs associated with the PMU specified by this attribute. This is entirely left to -userspace. +userspace. However, attempting to run the VCPU on a physical CPU not supported +by the PMU will fail and KVM_RUN will return with +exit_reason = KVM_EXIT_FAIL_ENTRY and populate the fail_entry struct by setting +hardare_entry_failure_reason field to KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED and +the cpu field to the processor id. 2. GROUP: KVM_ARM_VCPU_TIMER_CTRL ================================= |