From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH][SVM] Only save/restore MSRs when needed Date: Sat, 28 Apr 2007 19:37:16 -0500 Message-ID: <4633E8BC.1020407@codemonkey.ws> References: <4632878B.6090606@us.ibm.com> <4632D841.6060202@codemonkey.ws> <4632E780.8060907@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Avi Kivity Return-path: In-Reply-To: <4632E780.8060907-atKUWr5tajBWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Avi Kivity wrote: > Anthony Liguori wrote: > >> Anthony Liguori wrote: >> >>> I've tested this with 32-bit and 64-bit guests on a 64-bit host and >>> with 32-bit guests on a 32-bit host. >>> >>> I *think* it's doing the right thing wrt to DEBUGCTL but an extra set >>> of eyes would be helpful. >>> >> I think the follow patch preserves the current behavior but I'm >> starting to believe that the current behavior is wrong. >> >> The current code assumes that the guest DEBUGCTL gets loaded/saved >> during vmrun/vmexit. By my reading of the spec (I finally printed out >> the new one :-)), DEBUGCTL only gets saved if LBR virtualization is >> enabled. LBR virtualization also triggers the save/restore of the >> other 4 debug registers. The spec seems to suggest that the host >> version is saved before the guest is loaded too. >> >> I think the right behavior is to do nothing if LBR is available and >> enabled; hw will do it all for us. If LBR isn't available, I think we >> should be saving/restoring not just DEBUGCTL but the other 4. We can >> further optimize that path though by doing the same sort of tricks I >> have below. >> >> If that all seems sane, I'll submit another patch to fix that up. >> >> > > Some observations from grepping the sources: > > - The host never uses the DEBUGCTL msr. So we only need to restore it > (to zero) if the guest changes it. > - The guest never uses the DEBUGCTL msr, as kvm doesn't handle wrmsr to > DEBUGCTL. > > So, doing nothing (in hardware and software) would probably work well > and be quite fast. If we ever emulate DEBUGCTL, we can conditionally > enable hardware or software save/restore (this is fairly similar to lazy > fpu). Okay, so I'll resubmit with DEBUGCTL disabled (including lbr_enable = 0). I'll also see if I can find something that uses DEBUGCTL. Regards, Anthony Liguori > If Linux ever gets DEBUGCTL support, we'd just ask for a hook so > we can conditionally save and restore on the host side. > > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/