From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] KVM: nVMX: Fix content of MSR_IA32_VMX_ENTRY/EXIT_CTLS Date: Mon, 04 Mar 2013 14:24:53 +0100 Message-ID: <5134A0A5.9000206@redhat.com> References: <51333C50.1080906@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Gleb Natapov , Marcelo Tosatti , kvm , Nadav Har'El , "Nakajima, Jun" To: Jan Kiszka Return-path: Received: from mail-qa0-f54.google.com ([209.85.216.54]:40281 "EHLO mail-qa0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757477Ab3CDNZA (ORCPT ); Mon, 4 Mar 2013 08:25:00 -0500 Received: by mail-qa0-f54.google.com with SMTP id hg5so1125680qab.6 for ; Mon, 04 Mar 2013 05:25:00 -0800 (PST) In-Reply-To: <51333C50.1080906@web.de> Sender: kvm-owner@vger.kernel.org List-ID: Il 03/03/2013 13:04, Jan Kiszka ha scritto: > From: Jan Kiszka > > Properly set those bits to 1 that the spec demands in case bit 55 of > VMX_BASIC is 0 - like in our case. > > Signed-off-by: Jan Kiszka > --- > arch/x86/kvm/vmx.c | 13 ++++++++++--- > 1 files changed, 10 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 631cdb3..c204f0d 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -2050,21 +2050,28 @@ static __init void nested_vmx_setup_ctls_msrs(void) > PIN_BASED_EXT_INTR_MASK | PIN_BASED_NMI_EXITING | > PIN_BASED_VIRTUAL_NMIS; > > - /* exit controls */ > - nested_vmx_exit_ctls_low = 0; > + /* > + * Exit controls > + * If bit 55 of VMX_BASIC is off, bits 0-8 and 10, 11, 13, 14, 16 and > + * 17 must be 1. > + */ > + nested_vmx_exit_ctls_low = 0x36dff; > /* Note that guest use of VM_EXIT_ACK_INTR_ON_EXIT is not supported. */ > #ifdef CONFIG_X86_64 > nested_vmx_exit_ctls_high = VM_EXIT_HOST_ADDR_SPACE_SIZE; > #else > nested_vmx_exit_ctls_high = 0; > #endif > + nested_vmx_exit_ctls_high |= 0x36dff; Can you use nested_vmx_exit_ctls_low on the RHS, or define a constant? > /* entry controls */ > rdmsr(MSR_IA32_VMX_ENTRY_CTLS, > nested_vmx_entry_ctls_low, nested_vmx_entry_ctls_high); > - nested_vmx_entry_ctls_low = 0; > + /* If bit 55 of VMX_BASIC is off, bits 0-8 and 12 must be 1. */ > + nested_vmx_entry_ctls_low = 0x11ff; > nested_vmx_entry_ctls_high &= > VM_ENTRY_LOAD_IA32_PAT | VM_ENTRY_IA32E_MODE; > + nested_vmx_entry_ctls_high |= 0x11ff; Same here. Paolo > /* cpu-based controls */ > rdmsr(MSR_IA32_VMX_PROCBASED_CTLS, >