Intel new hardware introduces some Precise Event-Based Sampling(PEBS) extensions that output the PEBS record to Intel PT stream instead of DS area. The PEBS record will be packaged in a specific format when outputting to Intel PT. This patch set will enable PEBS functionality in KVM Guest by PEBS output to Intel PT. The patch 1 introduce a MSRs "base" parameter that use for get the kvm_pmc structure by New MSR_RELOAD_FIXED_CTRx like get_gp_pmc() function. The patch 2 implement the PEBS MSRs read/write emulation. Patch 5/6/7 expose some capabilities(CPUID, MSRs) to KVM guest which relate with PEBS feature. Patch 3 introduces "pebs" parameter to allocate a perf event counter from host perf event framework. The counter using for PEBS event should be disabled before VM-entry in the previous platform, patch 4 skip this operation when PEBS is enabled in KVM guest. Patch 8 has some code changes in native that to make the aux_event only be needed for a non-kernel event(the couner allocate by KVM is kernel event). Luwei Kang (8): KVM: x86: Add base address parameter for get_fixed_pmc function KVM: x86: PEBS output to Intel PT MSRs emulation KVM: x86: Allocate performance counter for PEBS event KVM: x86: Aviod clear the PEBS counter when PEBS enabled in guest KVM: X86: Expose PDCM cpuid to guest KVM: X86: MSR_IA32_PERF_CAPABILITIES MSR emulation KVM: x86: Expose PEBS feature to guest perf/x86: Add event owner check when PEBS output to Intel PT arch/x86/events/core.c | 3 +- arch/x86/events/intel/core.c | 19 ++++++---- arch/x86/events/perf_event.h | 2 +- arch/x86/include/asm/kvm_host.h | 7 ++++ arch/x86/include/asm/msr-index.h | 9 +++++ arch/x86/include/asm/perf_event.h | 5 ++- arch/x86/kvm/cpuid.c | 3 +- arch/x86/kvm/pmu.c | 23 ++++++++---- arch/x86/kvm/pmu.h | 10 ++--- arch/x86/kvm/pmu_amd.c | 2 +- arch/x86/kvm/svm.c | 12 ++++++ arch/x86/kvm/vmx/capabilities.h | 25 +++++++++++++ arch/x86/kvm/vmx/pmu_intel.c | 79 +++++++++++++++++++++++++++++++++++---- arch/x86/kvm/vmx/vmx.c | 19 +++++++++- arch/x86/kvm/x86.c | 22 ++++++++--- include/linux/perf_event.h | 1 + kernel/events/core.c | 2 +- 17 files changed, 201 insertions(+), 42 deletions(-) -- 1.8.3.1