Messages in this thread | | | Subject | Re: [PATCH][v6] KVM: X86: support APERF/MPERF registers | From | "Xu, Like" <> | Date | Fri, 5 Jun 2020 10:32:17 +0800 |
| |
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@baidu.com> > Signed-off-by: Chai Wen <chaiwen@baidu.com> > Signed-off-by: Jia Lina <jialina01@baidu.com> > --- > 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(-)
| |