From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 0/30] nVMX: Nested VMX, v9 Date: Thu, 12 May 2011 20:00:43 +0300 Message-ID: <4DCC123B.3080006@redhat.com> References: <1304842511-nyh@il.ibm.com> <4DC7CD81.2070305@redhat.com> <20110511082027.GG19019@redhat.com> <20110512154228.GA7943@fermat.math.technion.ac.il> <20110512155727.GA20193@redhat.com> <20110512163115.GA13138@fermat.math.technion.ac.il> <20110512165157.GC20193@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Nadav Har'El" , kvm@vger.kernel.org, abelg@il.ibm.com To: Gleb Natapov Return-path: Received: from mx1.redhat.com ([209.132.183.28]:41337 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758052Ab1ELRAw (ORCPT ); Thu, 12 May 2011 13:00:52 -0400 In-Reply-To: <20110512165157.GC20193@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 05/12/2011 07:51 PM, Gleb Natapov wrote: > > > > But if my interpretation of the code is correct, SVM isn't much closer > > than VMX to the goal of moving this logic to x86.c. When some logic is > > moved there, both SVM and VMX code will need to change - perhaps even > > considerably. So how will it be helpful to make VMX behave exactly like > > SVM does now, when the latter will also need to change considerably? > > > SVM design is much close to the goal of moving the logic into x86.c > because IIRC it does not bypass parsing of IDT vectoring info into arch > independent structure. VMX code uses vmx->idt_vectoring_info directly. > SVM is much close to working migration with nested guests for the same > reason. Ah, yes. For live migration to work, all vmcb state must be accessible via vendor-independent accessors once an exit is completely handled. For example, GPRs are accessible via kvm_register_read(), and without nesting, interrupt state is stowed in the interrupt queue, but if you keep IDT_VECTORING_INFO live between exit and entry, you can lose it if you migrate at this point. -- error compiling committee.c: too many arguments to function