From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: RE: svm vmexit action sequence Date: Fri, 11 May 2007 09:42:53 +0200 Message-ID: <46443A9D.76E4.0078.0@novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Mats Petersson Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Sorry, yet another question: both variants adjust rSP around the=20 vmload/vmrun/vmsave block - since these adjustments are already inverting one another on 64-bits (and I'm making them so also on 32-bits), I would think they could equally well both be left off - I think nothing inspects = the host VMCB while the guest is running, and hence nothing can get confused by these pointing to a different stack slot. Finally, is there a win of using an adjustment to rSP through add/sub compared to using a push? I'd like to make the 64-bit save/restore sequences symmetrical in either both skipping the RAX slot or both pushing/popping a value (the pop would obviously go to a different register, as the value must be discarded). I would even consider replacing the whole push/pop sequences by using moves - this ought to be faster, despite creating bigger code (assuming that the throughput of moves is higher than that of back-to-back pushes/pops). Jan >>> "Petersson, Mats" 10.05.07 18:12 >>> > -----Original Message----- > From: xen-devel-bounces@lists.xensource.com=20 > [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of=20 > Jan Beulich > Sent: 10 May 2007 17:02 > To: xen-devel@lists.xensource.com=20 > Subject: [Xen-devel] svm vmexit action sequence >=20 > Is there any particular reason why on 32-bits the order is VMLOAD then > HVM_SAVE_ALL_NOSEGREGS, while on 64-bits its is the other way around? > Trying to put in the saving of EAX, I could save a=20 > GET_CURRENT() on 32-bits > if I could order things the same way as on 64-bits. I don't see any reason why these shouldn't be the same (or at least as similar as possible). >=20 > Also, both versions seem to have a redundant GET_CURRENT() right after > the clgi/sti sequence - again, is there a particular reason for this? No reason as far as I can tell. Assuming rbx (in 64-bit case) isn't clobbered by called functions, that is. I can't remember for 64-bit if rbx is "safe" or not. [It certainly is safe in 32-bit].=20 Thanks for spotting these things. -- Mats >=20 > Thanks, Jan >=20 >=20 >=20 > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com=20 > http://lists.xensource.com/xen-devel=20 >=20 >=20 >=20