There is one bug in KVM that can hit vm-entry failure 100% on platform supporting PT_MODE_HOST_GUEST mode following below steps: 1. #modprobe -r kvm_intel 2. #modprobe kvm_intel pt_mode=1 3. start a VM with QEMU 4. on host: #perf record -e intel_pt// The vm-entry failure happens because it violates the requirement stated in Intel SDM 26.2.1.1 VM-Execution Control Fields If the logical processor is operating with Intel PT enabled (if IA32_RTIT_CTL.TraceEn = 1) at the time of VM entry, the "load IA32_RTIT_CTL" VM-entry control must be 0. On PT_MODE_HOST_GUEST node, PT_MODE_HOST_GUEST is always set. Thus KVM needs to ensure IA32_RTIT_CTL.TraceEn is 0 before VM-entry. Currently KVM manually WRMSR(IA32_RTIT_CTL) to clear TraceEn bit. However, it doesn't work everytime since there is a posibility that IA32_RTIT_CTL.TraceEn is re-enabled in PT PMI handler before vm-entry. This series tries to fix the issue by exposing two interfaces from Intel PT driver for the purose to stop and resume Intel PT on host. It prevents PT PMI handler from re-enabling PT. By the way, it also fixes another issue that PT PMI touches PT MSRs whihc leads to what KVM stores for host bemomes stale. Xiaoyao Li (2): perf/x86/intel/pt: Introduce intel_pt_{stop,resume}() KVM: VMX: Stop/resume host PT before/after VM entry when PT_MODE_HOST_GUEST arch/x86/events/intel/pt.c | 11 ++++++++++- arch/x86/include/asm/intel_pt.h | 6 ++++-- arch/x86/kernel/crash.c | 4 ++-- arch/x86/kvm/vmx/vmx.c | 11 ++++++++++- 4 files changed, 26 insertions(+), 6 deletions(-) -- 2.27.0