From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH 3/3] KVM: nVMX: check for null vmcs12 when L1 does invept Date: Thu, 20 Mar 2014 10:34:28 +0100 Message-ID: <532AB624.4020400@siemens.com> References: <1395286089-5406-1-git-send-email-bsd@redhat.com> <1395286089-5406-4-git-send-email-bsd@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: Paolo Bonzini , Gleb Natapov To: Bandan Das , kvm@vger.kernel.org Return-path: Received: from goliath.siemens.de ([192.35.17.28]:45032 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750917AbaCTJgJ (ORCPT ); Thu, 20 Mar 2014 05:36:09 -0400 In-Reply-To: <1395286089-5406-4-git-send-email-bsd@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 2014-03-20 04:28, Bandan Das wrote: > Some L1 hypervisors such as Xen seem to be calling invept after > vmclear or before vmptrld on L2. In this case, proceed with > falling through and syncing roots as a case where > context wide invalidation can't be supported Can we also base this behaviour on a statement in the SDM? But on first glance, I do not find anything like this over there. Jan > > Signed-off-by: Bandan Das > --- > arch/x86/kvm/vmx.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index c707389..b407b3a 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -6435,8 +6435,9 @@ static int handle_invept(struct kvm_vcpu *vcpu) > > switch (type) { > case VMX_EPT_EXTENT_CONTEXT: > - if ((operand.eptp & eptp_mask) != > - (nested_ept_get_cr3(vcpu) & eptp_mask)) > + if (get_vmcs12(vcpu) && > + ((operand.eptp & eptp_mask) != (nested_ept_get_cr3(vcpu) & > + eptp_mask))) > break; > case VMX_EPT_EXTENT_GLOBAL: > kvm_mmu_sync_roots(vcpu); > -- Siemens AG, Corporate Technology, CT RTC ITP SES-DE Corporate Competence Center Embedded Linux