All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro@8bytes.org>
To: Avi Kivity <avi@redhat.com>
Cc: Nadav Har'El <nyh@math.technion.ac.il>,
	Gleb Natapov <gleb@redhat.com>,
	kvm@vger.kernel.org, abelg@il.ibm.com
Subject: Re: [PATCH 0/30] nVMX: Nested VMX, v9
Date: Mon, 23 May 2011 15:40:52 +0200	[thread overview]
Message-ID: <20110523134052.GD23407@8bytes.org> (raw)
In-Reply-To: <4DDA5C30.10107@redhat.com>

On Mon, May 23, 2011 at 04:08:00PM +0300, Avi Kivity wrote:
> On 05/23/2011 04:02 PM, Joerg Roedel wrote:

>> About live-migration with nesting, we had discussed the idea of just
>> doing an VMEXIT(INTR) if the vcpu runs nested and we want to migrate.
>> The problem was that the hypervisor may not expect an INTR intercept.
>>
>> How about doing an implicit VMEXIT in this case and an implicit VMRUN
>> after the vcpu is migrated?
>
> What if there's something in EXIT_INT_INFO?

On real SVM hardware EXIT_INT_INFO should only contain something for
exception and npt intercepts. These are all handled in the kernel and do
not cause an exit to user-space so that no valid EXIT_INT_INFO should be
around when we actually go back to user-space (so that migration can
happen).

The exception might be the #PF/NPT intercept when the guest is doing
very obscure things like putting an exception/interrupt handler on mmio
memory, but that isn't really supported by KVM anyway so I doubt we
should care.

Unless I miss something here we should be safe by just not looking at
EXIT_INT_INFO while migrating.

>>   The nested hypervisor will not see the
>> vmexit and the vcpu will be in a state where it is safe to migrate. This
>> should work for nested-vmx too if the guest-state is written back to
>> guest memory on VMEXIT. Is this the case?
>
> It is the case with the current implementation, and we can/should make  
> it so in future implementations, just before exit to userspace.  Or at  
> least provide an ABI to sync memory.
>
> But I don't see why we shouldn't just migrate all the hidden state (in  
> guest mode flag, svm host paging mode, svm host interrupt state, vmcb  
> address/vmptr, etc.).  It's more state, but no thinking is involved, so  
> it's clearly superior.

An issue is that there is different state to migrate for Intel and AMD
hosts. If we keep all that information in guest memory the kvm kernel
module can handle those details and all KVM needs to migrate is the
in-guest-mode flag and the gpa of the vmcb/vmcs which is currently
executed. This state should be enough for Intel and AMD nesting.

The next benefit is that it works seemlessly even if the state that
needs to be transfered is extended (e.g. by emulating a new
virtualization hardware feature). This support can be implemented in the
kernel module and no changes to qemu are required.


	Joerg


  reply	other threads:[~2011-05-23 13:40 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-08  8:15 [PATCH 0/30] nVMX: Nested VMX, v9 Nadav Har'El
2011-05-08  8:15 ` [PATCH 01/30] nVMX: Add "nested" module option to kvm_intel Nadav Har'El
2011-05-08  8:16 ` [PATCH 02/30] nVMX: Implement VMXON and VMXOFF Nadav Har'El
2011-05-08  8:16 ` [PATCH 03/30] nVMX: Allow setting the VMXE bit in CR4 Nadav Har'El
2011-05-08  8:17 ` [PATCH 04/30] nVMX: Introduce vmcs12: a VMCS structure for L1 Nadav Har'El
2011-05-08  8:17 ` [PATCH 05/30] nVMX: Implement reading and writing of VMX MSRs Nadav Har'El
2011-05-08  8:18 ` [PATCH 06/30] nVMX: Decoding memory operands of VMX instructions Nadav Har'El
2011-05-09  9:47   ` Avi Kivity
2011-05-08  8:18 ` [PATCH 07/30] nVMX: Introduce vmcs02: VMCS used to run L2 Nadav Har'El
2011-05-16 15:30   ` Marcelo Tosatti
2011-05-16 18:32     ` Nadav Har'El
2011-05-17 13:20       ` Marcelo Tosatti
2011-05-08  8:19 ` [PATCH 08/30] nVMX: Fix local_vcpus_link handling Nadav Har'El
2011-05-08  8:19 ` [PATCH 09/30] nVMX: Add VMCS fields to the vmcs12 Nadav Har'El
2011-05-08  8:20 ` [PATCH 10/30] nVMX: Success/failure of VMX instructions Nadav Har'El
2011-05-08  8:20 ` [PATCH 11/30] nVMX: Implement VMCLEAR Nadav Har'El
2011-05-08  8:21 ` [PATCH 12/30] nVMX: Implement VMPTRLD Nadav Har'El
2011-05-16 14:34   ` Marcelo Tosatti
2011-05-16 18:58     ` Nadav Har'El
2011-05-16 19:09       ` Nadav Har'El
2011-05-08  8:21 ` [PATCH 13/30] nVMX: Implement VMPTRST Nadav Har'El
2011-05-08  8:22 ` [PATCH 14/30] nVMX: Implement VMREAD and VMWRITE Nadav Har'El
2011-05-08  8:22 ` [PATCH 15/30] nVMX: Move host-state field setup to a function Nadav Har'El
2011-05-09  9:56   ` Avi Kivity
2011-05-09 10:40     ` Nadav Har'El
2011-05-08  8:23 ` [PATCH 16/30] nVMX: Move control field setup to functions Nadav Har'El
2011-05-08  8:23 ` [PATCH 17/30] nVMX: Prepare vmcs02 from vmcs01 and vmcs12 Nadav Har'El
2011-05-09 10:12   ` Avi Kivity
2011-05-09 10:27     ` Nadav Har'El
2011-05-09 10:45       ` Avi Kivity
2011-05-08  8:24 ` [PATCH 18/30] nVMX: Implement VMLAUNCH and VMRESUME Nadav Har'El
2011-05-08  8:24 ` [PATCH 19/30] nVMX: No need for handle_vmx_insn function any more Nadav Har'El
2011-05-08  8:25 ` [PATCH 20/30] nVMX: Exiting from L2 to L1 Nadav Har'El
2011-05-09 10:45   ` Avi Kivity
2011-05-08  8:25 ` [PATCH 21/30] nVMX: Deciding if L0 or L1 should handle an L2 exit Nadav Har'El
2011-05-08  8:26 ` [PATCH 22/30] nVMX: Correct handling of interrupt injection Nadav Har'El
2011-05-09 10:57   ` Avi Kivity
2011-05-08  8:27 ` [PATCH 23/30] nVMX: Correct handling of exception injection Nadav Har'El
2011-05-08  8:27 ` [PATCH 24/30] nVMX: Correct handling of idt vectoring info Nadav Har'El
2011-05-09 11:04   ` Avi Kivity
2011-05-08  8:28 ` [PATCH 25/30] nVMX: Handling of CR0 and CR4 modifying instructions Nadav Har'El
2011-05-08  8:28 ` [PATCH 26/30] nVMX: Further fixes for lazy FPU loading Nadav Har'El
2011-05-08  8:29 ` [PATCH 27/30] nVMX: Additional TSC-offset handling Nadav Har'El
2011-05-09 17:27   ` Zachary Amsden
2011-05-08  8:29 ` [PATCH 28/30] nVMX: Add VMX to list of supported cpuid features Nadav Har'El
2011-05-08  8:30 ` [PATCH 29/30] nVMX: Miscellenous small corrections Nadav Har'El
2011-05-08  8:30 ` [PATCH 30/30] nVMX: Documentation Nadav Har'El
2011-05-09 11:18 ` [PATCH 0/30] nVMX: Nested VMX, v9 Avi Kivity
2011-05-09 11:37   ` Nadav Har'El
2011-05-11  8:20   ` Gleb Natapov
2011-05-12 15:42     ` Nadav Har'El
2011-05-12 15:57       ` Gleb Natapov
2011-05-12 16:08         ` Avi Kivity
2011-05-12 16:14           ` Gleb Natapov
2011-05-12 16:31         ` Nadav Har'El
2011-05-12 16:51           ` Gleb Natapov
2011-05-12 17:00             ` Avi Kivity
2011-05-15 23:11               ` Nadav Har'El
2011-05-16  6:38                 ` Gleb Natapov
2011-05-16  7:44                   ` Nadav Har'El
2011-05-16  7:57                     ` Gleb Natapov
2011-05-16  9:50                 ` Avi Kivity
2011-05-16 10:20                   ` Avi Kivity
2011-05-22 19:32             ` Nadav Har'El
2011-05-23  9:37               ` Joerg Roedel
2011-05-23  9:52               ` Avi Kivity
2011-05-23 13:02                 ` Joerg Roedel
2011-05-23 13:08                   ` Avi Kivity
2011-05-23 13:40                     ` Joerg Roedel [this message]
2011-05-23 13:52                       ` Avi Kivity
2011-05-23 14:10                         ` Nadav Har'El
2011-05-23 14:32                           ` Avi Kivity
2011-05-23 14:44                             ` Nadav Har'El
2011-05-23 15:23                               ` Avi Kivity
2011-05-23 18:06                                 ` Alexander Graf
2011-05-24 11:09                                   ` Avi Kivity
2011-05-24 13:07                                     ` Joerg Roedel
2011-05-23 14:28                         ` Joerg Roedel
2011-05-23 14:34                           ` Avi Kivity
2011-05-23 14:58                             ` Joerg Roedel
2011-05-23 15:19                               ` Avi Kivity
2011-05-23 13:18                   ` Nadav Har'El
2011-05-12 16:18       ` Avi Kivity

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=20110523134052.GD23407@8bytes.org \
    --to=joro@8bytes.org \
    --cc=abelg@il.ibm.com \
    --cc=avi@redhat.com \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=nyh@math.technion.ac.il \
    /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.