All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Schade <markus.schade@gmail.com>
To: Avi Kivity <avi@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>, kvm@vger.kernel.org
Subject: Re: Restoring saved guest causes guest to reboot
Date: Thu, 26 May 2011 17:20:32 +0200	[thread overview]
Message-ID: <4DDE6FC0.3010801@gmail.com> (raw)
In-Reply-To: <4DDE3975.6020709@gmail.com>

On 05/26/2011 01:28 PM, Markus Schade wrote:
> On 05/26/2011 08:44 AM, Avi Kivity wrote:
>> On 05/25/2011 09:49 AM, Markus Schade wrote:
>>>
>>> Git bisect tells me that this is the first bad commit:
>>> -----------------%<-----------------
>>> aff48baa34c033318ad322ecbf2e4bcd891b29ca is the first bad commit
>>
>> Does your machine have ept?
>>
>> (cat /sys/module/kvm_intel/parameters/ept)
>>
>
> Sure. (Assuming that the Y means yes). I am no C developer, but I was
> wondering, if the issue is related to the difference in
> ept_update_paging_mode_cr0 between original patch in the kvm git and the
> linux-2.6. git tree.

I have re-added the missing 4 lines to ept_update_paging_mode_cr0 in 
vmx.c, which resolves this issue for in Kernel 2.6,37 and 2.6.39.
I haven't tested all guests, but neither Squeeze nor 2008 R2 reboot anymore.

Markus

static void vmx_set_efer(struct kvm_vcpu *vcpu, u64 efer)
@@ -1921,6 +1940,8 @@
                                         unsigned long cr0,
                                         struct kvm_vcpu *vcpu)
  {
+       ulong cr3;
+
         vmx_decache_cr3(vcpu);
         if (!(cr0 & X86_CR0_PG)) {
                 /* From paging/starting to nonpaging */
@@ -1936,8 +1957,11 @@
                              vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) &
                              ~(CPU_BASED_CR3_LOAD_EXITING |
                                CPU_BASED_CR3_STORE_EXITING));
+               /* Must fetch cr3 before updating cr0 */
+               cr3 = kvm_read_cr3(vcpu);
                 vcpu->arch.cr0 = cr0;
                 vmx_set_cr4(vcpu, kvm_read_cr4(vcpu));
+               vmx_set_cr3(vcpu, cr3);




  reply	other threads:[~2011-05-26 15:20 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-24  7:11 Restoring saved guest causes guest to reboot Markus Schade
2011-05-24  9:18 ` Joerg Roedel
2011-05-24  9:35   ` Markus Schade
2011-05-24  9:40     ` Joerg Roedel
2011-05-24 11:42       ` Markus Schade
2011-05-24 13:02         ` Joerg Roedel
2011-05-24 13:20           ` Avi Kivity
2011-05-24 13:37             ` Markus Schade
2011-05-24 13:42               ` Avi Kivity
2011-05-25  6:49                 ` Markus Schade
2011-05-26  6:44                   ` Avi Kivity
2011-05-26 11:28                     ` Markus Schade
2011-05-26 15:20                       ` Markus Schade [this message]
2011-05-26 15:25                         ` Joerg Roedel
2011-05-30 12:16                           ` Markus Schade
2011-05-30 18:02                             ` Marcelo Tosatti
2011-05-31  9:44                               ` Markus Schade
2011-06-06 13:57                               ` Markus Schade

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DDE6FC0.3010801@gmail.com \
    --to=markus.schade@gmail.com \
    --cc=avi@redhat.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.