On 11/03/2014 11:56 AM, Radim Krčmář wrote: > 2014-10-31 12:05-0400, Wei Huang: >> Currently KVM only supports vPMU for Intel platforms. This patch set >> enable vPMU support for AMD platform by creating a common PMU >> interface for x86. The PMU calls from guest VMs are dispatched >> to corresponding functions defined in arch specific files. > > The functionality looks good, so I just want verify the basic design: > why don't we emulate AMD PMU on Intel, and vice versa? > (Underlying PERF_COUNTs are identical in both.) Thanks. The underlining perf counters can be very different between AMD and Intel. I think we can emulate AMD on Intel, or vice versa, for some common perfmon_events (such as PERF_COUNT_HW_CPU_CYCLES). But as soon as guest VMs access raw counters (see PERF_TYPE_RAW), we can't emulate them anymore. > >> V1: >> * Adopt the file layout suggested by Radim Krčmář > > (I'll still advocate for more separation, sorry.) > >> * Link arch module with its specific PMU file >> >> RFC: >> * Initial version for RFC >> >> Wei Huang (4): >> KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch >> KVM: x86/vPMU: Convert pmu.c code into Intel specific code >> KVM: x86/vPMU: Implement AMD PMU support for KVM >> KVM: x86/vPMU: Enable PMU handling for AMD PERFCTRn and EVNTSELn MSRs >> >> arch/x86/include/asm/kvm_host.h | 52 ++-- >> arch/x86/kvm/Makefile | 6 +- >> arch/x86/kvm/cpuid.c | 2 +- >> arch/x86/kvm/lapic.c | 1 + >> arch/x86/kvm/pmu.c | 576 --------------------------------------- >> arch/x86/kvm/pmu_amd.c | 390 ++++++++++++++++++++++++++ >> arch/x86/kvm/pmu_intel.c | 586 ++++++++++++++++++++++++++++++++++++++++ >> arch/x86/kvm/svm.c | 7 + >> arch/x86/kvm/vmx.c | 7 + >> arch/x86/kvm/x86.c | 74 ++--- >> 10 files changed, 1070 insertions(+), 631 deletions(-) >> delete mode 100644 arch/x86/kvm/pmu.c >> create mode 100644 arch/x86/kvm/pmu_amd.c >> create mode 100644 arch/x86/kvm/pmu_intel.c >> >> -- >> 1.8.3.1 >> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html