|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RESEND v1 6/7] x86: Implement Intel Processor Trace MSRs read/write
>>> On 15.01.18 at 19:12, <luwei.kang@xxxxxxxxx> wrote:
> --- a/xen/arch/x86/cpu/intel_pt.c
> +++ b/xen/arch/x86/cpu/intel_pt.c
> @@ -28,6 +28,107 @@
> bool_t __read_mostly opt_intel_pt = 1;
> boolean_param("intel_pt", opt_intel_pt);
>
> +
> +static void intel_pt_disable_intercept_for_msr(u32 addr_num)
> +{
> + struct vcpu *v = current;
> + int i;
unsigned int
> + vmx_clear_msr_intercept(v, MSR_IA32_RTIT_STATUS, VMX_MSR_RW);
> + vmx_clear_msr_intercept(v, MSR_IA32_RTIT_OUTPUT_BASE, VMX_MSR_RW);
> + vmx_clear_msr_intercept(v, MSR_IA32_RTIT_OUTPUT_MASK, VMX_MSR_RW);
> + vmx_clear_msr_intercept(v, MSR_IA32_RTIT_CR3_MATCH, VMX_MSR_RW);
> + for ( i = 0; i < addr_num; i++ )
> + vmx_clear_msr_intercept(v, MSR_IA32_RTIT_ADDR0_A + i, VMX_MSR_RW);
Are all of these expected to be frequently written? If not, keeping the
intercept
enabled would allow to avoid the MSR reads right after a VM exit.
> +void pt_set_rtit_ctl(struct pt_desc *pt_desc, uint64_t msr_content)
> +{
> + if (msr_content & MSR_IA32_RTIT_CTL_TRACEEN)
Style (missing blanks).
> +int pt_do_rdmsr(unsigned int msr, uint64_t *msr_content)
> +{
> + struct pt_desc *pt_desc = ¤t->arch.hvm_vmx.pt_desc;
> +
> + if ( !opt_intel_pt )
> + return 1;
> +
> + switch ( msr ) {
Style (brace placement).
But on the whole - I'm not sure we want any new MSR handling like this.
Properly integrating this with guest_{rd,wr}msr() would be much preferred.
And then - what about migrating a guest with the feature enabled? Even
if you choose to not support this initially, you'd at least need to fail
migration cleanly when the feature is in use.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |