Hi RongQing, On 2020/6/5 9:44, Li RongQing wrote:
Guest kernel reports a fixed cpu frequency in /proc/cpuinfo, 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
s/None/Note
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.
The flag "KVM_HINTS_REALTIME 0" (in the Documentation/virt/kvm/cpuid.rst) is claimed as "guest checks this feature bit to determine that vCPUs are never preempted for an unlimited time allowing optimizations". I couldn't see its relationship with "1:1 vCPU: pCPU binding". The patch doesn't check this flag as well for your pass-through purpose. Thanks, Like Xu
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(-)