Messages in this thread | | | Subject | Re: [PATCH] KVM: VMX: Disable Intel PT before VM-entry | From | Paolo Bonzini <> | Date | Thu, 16 Apr 2020 16:14:04 +0200 |
| |
On 31/03/20 05:29, Kang, Luwei wrote: >> Ah, right. What about enhancing intel_pt_handle_vmx() and 'struct >> pt' to replace vmx_on with a field that incorporates the KVM mode? > > Some history is the host perf didn't fully agree with introducing > HOST_GUEST mode for PT in KVM.
I don't think this is accurate. IIRC the maintainers wanted packets in the host-side trace to signal where the trace was interrupted. In the end we solved the issue by 1) dropping host-only mode since it can be achieved in userspace 2) making host-guest an opt in feature.
I think it would make sense to rename vmx_on into vmx_state and make it an
enum pt_vmx_state { PT_VMX_OFF, PT_VMX_ON_DISABLED, PT_VMX_ON_SYSTEM, PT_VMX_ON_HOST_GUEST };
KVM would pass the enum to intel_pt_handle_vmx (one of PT_VMX_OFF, PT_VMX_ON_SYSTEM, PT_VMX_ON_HOST_GUEST). Inside intel_pt_handle_vmx you can do
if (pt_pmu.vmx) { WRITE_ONCE(pt->vmx_state, state); return; }
local_irq_save(flags); WRITE_ONCE(pt->vmx_state, state == PT_VMX_OFF ? PT_VMX_OFF : PT_VMX_ON_DISABLED); ...
and in pt_config_start:
... vmx = READ_ONCE(pt->vmx_start); if (vmx == PT_VMX_ON_DISABLED) perf_aux_output_flag(&pt->handle, PERF_AUX_FLAG_PARTIAL); else if (vmx == PT_VMX_ON_SYSTEM || !(current->flags & PF_VCPU)) wrmsrl(MSR_IA32_RTIT_CTL, ctl); ...
Thanks,
Paolo
| |