[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/3] Nested VMX: Check VMX capability before read VMX related MSRs.
Andrew Cooper wrote on 2013-09-10: > On 10/09/13 07:14, Yang Zhang wrote: >> From: Yang Zhang <yang.z.zhang@xxxxxxxxx> >> >> VMX MSRs only available when the CPU support the VMX feature. In >> addition, >> VMX_TRUE* MSRs only available when bit 55 of VMX_BASIC MSR is set. >> >> Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> >> --- >> xen/arch/x86/hvm/vmx/vvmx.c | 19 +++++++++++++++++++ >> 1 files changed, 19 insertions(+), 0 deletions(-) >> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c >> b/xen/arch/x86/hvm/vmx/vvmx.c index cecc72f..c6c8b88 100644 >> --- a/xen/arch/x86/hvm/vmx/vvmx.c >> +++ b/xen/arch/x86/hvm/vmx/vvmx.c >> @@ -1814,12 +1814,31 @@ int nvmx_handle_invvpid(struct cpu_user_regs >> *regs) int nvmx_msr_read_intercept(unsigned int msr, u64 >> *msr_content) { >> struct vcpu *v = current; + unsigned int eax, ebx, ecx, edx; >> u64 data = 0, host_data = 0; int r = 1; >> >> if ( !nestedhvm_enabled(v->domain) ) >> return 0; >> + /* >> + * VMX capablitys MSRs available only when guest > > sp. capability. > >> + * support VMX. >> + */ >> + hvm_cpuid(0x1, &eax, &ebx, &ecx, &edx); >> + if ( !(ecx & cpufeat_mask(X86_FEATURE_VMXE)) ) >> + return 0; >> + >> + /* >> + * Those MSRs available only when bit 55 of >> + * MSR_IA32_VMX_BASIC is set. > > Given pedantry about spelling, > > "Those MSRs are" > > Furthermore, do those comments really not fit on a single line? The first one is ok in a single line, but the second one will exceed the 80 characters. > > ~Andrew > >> + */ >> + rdmsrl(MSR_IA32_VMX_BASIC, data); >> + if ( msr >= MSR_IA32_VMX_TRUE_PINBASED_CTLS && >> + msr <= MSR_IA32_VMX_TRUE_ENTRY_CTLS && >> + !(data & VMX_BASIC_DEFAULT1_ZERO) ) >> + return 0; >> + >> rdmsrl(msr, host_data); >> >> /* Best regards, Yang _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |