From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qing He Subject: Re: [PATCH 08/17] vmx: nest: L1 <-> L2 context switch Date: Fri, 21 May 2010 18:31:54 +0800 Message-ID: <20100521103154.GC21018@qhe2-db> References: <1271929289-18572-1-git-send-email-qing.he@intel.com> <1271929289-18572-9-git-send-email-qing.he@intel.com> <20100520111101.GO4164@whitby.uk.xensource.com> <20100520134951.GC21374@qhe2-db> <20100521091952.GW4164@whitby.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20100521091952.GW4164@whitby.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Tim Deegan Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Fri, 2010-05-21 at 17:19 +0800, Tim Deegan wrote: > At 14:49 +0100 on 20 May (1274366991), Qing He wrote: > > I mean, the code doesn't seem to organize well, partly because there > > are many different states to cover, and some tricks are used to > > work with the current code, vmx_set_host_env would be a good example > > of such kind of tricks. Do you have any suggestions on a better code > > orgnization? > > TBH I expect that any implementation of this is going to be messy. It's > a big interface and there are too many special cases. > > The only thing that strikes me is that you seem to do a full translation > of the vvmcs on every vmentry. Would it be possible (since we already > have to intercept every vmread/vmwrite) to keep the svmcs in sync all > the time? I don't think it's a good idea to change svmcs at the vmread/vmwrite time, because 1. that means 2 addtional vmclears and 2 additional vmptrld for every vmread/vmwrite 2. it makes things like pv vmcs impossible 3. vmread/vmwrite is supposed to be simple access, changing svmcs at these points doesn't look right I did consider a bitmap based solution, to only update fields that have been written. However, it needs to define a new encoding and is purely optimization, so I'd like to just put it as a TODO at the moment. Thanks, Qing