[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100902162934.GD1964@amd.com>
Date: Thu, 2 Sep 2010 18:29:34 +0200
From: "Roedel, Joerg" <Joerg.Roedel@....com>
To: Avi Kivity <avi@...hat.com>
CC: Marcelo Tosatti <mtosatti@...hat.com>,
"kvm@...r.kernel.org" <kvm@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"stable@...nel.org" <stable@...nel.org>
Subject: Re: [PATCH 2/3] KVM: SVM: Restore correct registers after sel_cr0
intercept emulation
On Thu, Sep 02, 2010 at 12:02:02PM -0400, Avi Kivity wrote:
> On 09/02/2010 06:29 PM, Joerg Roedel wrote:
> > This patch implements restoring of the correct rip, rsp, and
> > rax after the svm emulation in KVM injected a selective_cr0
> > write intercept into the guest hypervisor. The problem was
> > that the vmexit is emulated in the instruction emulation
> > which later commits the registers right after the write-cr0
> > instruction. So the l1 guest will continue to run with the
> > l2 rip, rsp and rax resulting in unpredictable behavior.
>
> Please post a unit test for this.
Will do. Should be an easy test.
> > This patch is not the final word, it is just an easy patch
> > to fix the issue. The real fix will be done when the
> > instruction emulator is made aware of nested virtualization.
> > Until this is done this patch fixes the issue and provides
> > an easy way to fix this in -stable too.
>
> I agree. We can probably use X86EMUL_PROPAGATE_FAULT to abort
> emulation, but looking at the code, it will take some refactoring.
I thought of an X86EMUL_INTERCEPTED. An architecture specific function
is called after instruction decoding which checks if an intercept is
necessary. If it returns X86EMUL_INTERCEPTED then the instruction
emulation is discarded and kvm goes straight back into the guest.
Joerg
--
AMD Operating System Research Center
Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists