> > +   if (pt_mode == PT_MODE_HOST_GUEST) {
> > +           u32 i, eax, ebx, ecx, edx;
> > +
> > +           cpuid_count(0x14, 1, &eax, &ebx, &ecx, &edx);
> > +           vmx_disable_intercept_for_msr(MSR_IA32_RTIT_STATUS, false);
> > +           vmx_disable_intercept_for_msr(MSR_IA32_RTIT_OUTPUT_BASE, false);
> > +           vmx_disable_intercept_for_msr(MSR_IA32_RTIT_OUTPUT_MASK, false);
> > +           vmx_disable_intercept_for_msr(MSR_IA32_RTIT_CR3_MATCH, false);
> > +           for (i = 0; i < (eax & 0x7); i++)
> > +                   vmx_disable_intercept_for_msr(MSR_IA32_RTIT_ADDR0_A + i,
> > +                                                                   false);
> > +   }
> > +
> 
> As I mentioned earlier, this probably makes vmentry/vmexit too expensive when 
> guests are not using processor tracing.  I would do  it only if guest 
> TRACEEN=1 (since anyway the values have to be correct if guest TRACEEN=1, and 
> a change in TRACEEN always causes a vmexit).
> 

Will change in next version.

Thanks,
Luwei Kang

> 
> >     return alloc_kvm_area();
> >
> >  out:
> >

Reply via email to