Re: [PATCH] kvm: x86: limit the maximum number of vPMU fixed counters to 3

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

 



Kindly ping.

I think we may need this patch, as we limit the maximum vPMU version to 2:
    eax.split.version_id = min(cap.version, 2);

Thanks,
Like Xu

On 2020/6/24 9:59, Like Xu wrote:
Some new Intel platforms (such as TGL) already have the
fourth fixed counter TOPDOWN.SLOTS, but it has not been
fully enabled on KVM and the host.

Therefore, we limit edx.split.num_counters_fixed to 3,
so that it does not break the kvm-unit-tests PMU test
case and bad-handled userspace.

Signed-off-by: Like Xu <like.xu@xxxxxxxxxxxxxxx>
---
  arch/x86/kvm/cpuid.c | 2 +-
  arch/x86/kvm/pmu.h   | 2 ++
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 8a294f9747aa..0a2c6d2b4650 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -604,7 +604,7 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
  		eax.split.bit_width = cap.bit_width_gp;
  		eax.split.mask_length = cap.events_mask_len;
- edx.split.num_counters_fixed = cap.num_counters_fixed;
+		edx.split.num_counters_fixed = min(cap.num_counters_fixed, MAX_FIXED_COUNTERS);
  		edx.split.bit_width_fixed = cap.bit_width_fixed;
  		edx.split.reserved = 0;
diff --git a/arch/x86/kvm/pmu.h b/arch/x86/kvm/pmu.h
index ab85eed8a6cc..067fef51760c 100644
--- a/arch/x86/kvm/pmu.h
+++ b/arch/x86/kvm/pmu.h
@@ -15,6 +15,8 @@
  #define VMWARE_BACKDOOR_PMC_REAL_TIME		0x10001
  #define VMWARE_BACKDOOR_PMC_APPARENT_TIME	0x10002
+#define MAX_FIXED_COUNTERS 3
+
  struct kvm_event_hw_type_mapping {
  	u8 eventsel;
  	u8 unit_mask;




[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