Guest kernel reports a fixed cpu frequency in /proc/cpuinfo,s/None/Note
this is confused to user when turbo is enable, and aperf/mperf
can be used to show current cpu frequency after 7d5905dc14a
"(x86 / CPU: Always show current CPU frequency in /proc/cpuinfo)"
so guest should support aperf/mperf capability
This patch implements aperf/mperf by three mode: none, software
emulation, and pass-through
None: default mode, guest does not support aperf/mperf
The flag "KVM_HINTS_REALTIME 0" (in the Documentation/virt/kvm/cpuid.rst)
Software emulation: the period of aperf/mperf in guest mode are
accumulated as emulated value
Pass-though: it is only suitable for KVM_HINTS_REALTIME, Because
that hint guarantees we have a 1:1 vCPU:CPU binding and guaranteed
no over-commit.
And a per-VM capability is added to configure aperfmperf mode
Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx>
Signed-off-by: Chai Wen <chaiwen@xxxxxxxxx>
Signed-off-by: Jia Lina <jialina01@xxxxxxxxx>
---
diff v5:
return error if guest is configured with mperf/aperf, but host cpu has not
diff v4:
fix maybe-uninitialized warning
diff v3:
fix interception of MSR_IA32_MPERF/APERF in svm
diff v2:
support aperfmperf pass though
move common codes to kvm_get_msr_common
diff v1:
1. support AMD, but not test
2. support per-vm capability to enable
Documentation/virt/kvm/api.rst | 10 ++++++++++
arch/x86/include/asm/kvm_host.h | 11 +++++++++++
arch/x86/kvm/cpuid.c | 15 ++++++++++++++-
arch/x86/kvm/svm/svm.c | 8 ++++++++
arch/x86/kvm/vmx/vmx.c | 6 ++++++
arch/x86/kvm/x86.c | 42 +++++++++++++++++++++++++++++++++++++++++
arch/x86/kvm/x86.h | 15 +++++++++++++++
include/uapi/linux/kvm.h | 1 +
8 files changed, 107 insertions(+), 1 deletion(-)