Re: [PATCH][v6] KVM: X86: support APERF/MPERF registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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(-)




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux