kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: "Nadav Har'El" <nyh@math.technion.ac.il>
Cc: Avi Kivity <avi@redhat.com>, kvm@vger.kernel.org, abelg@il.ibm.com
Subject: Re: [PATCH 0/30] nVMX: Nested VMX, v9
Date: Thu, 12 May 2011 19:51:57 +0300	[thread overview]
Message-ID: <20110512165157.GC20193@redhat.com> (raw)
In-Reply-To: <20110512163115.GA13138@fermat.math.technion.ac.il>

On Thu, May 12, 2011 at 07:31:15PM +0300, Nadav Har'El wrote:
> Hi,
> 
> On Thu, May 12, 2011, Gleb Natapov wrote about "Re: [PATCH 0/30] nVMX: Nested VMX, v9":
> > That is exactly what should be done and what I have in mind when I am
> > asking to change VMX code to be SVM like. To achieve what you outlined
> > above gradually we need to move common VMX and SVM logic into x86.c
> > and then change the logic to be more nested friendly.  If VMX will have
> > different interrupt handling logic we will have to have additional step:
> > making SVM and VMX code similar (so it will be possible to move it
> > into x86.c).
> 
> But if my interpretation of the code is correct, SVM isn't much closer
> than VMX to the goal of moving this logic to x86.c. When some logic is
> moved there, both SVM and VMX code will need to change - perhaps even
> considerably. So how will it be helpful to make VMX behave exactly like
> SVM does now, when the latter will also need to change considerably?
> 
SVM design is much close to the goal of moving the logic into x86.c
because IIRC it does not bypass parsing of IDT vectoring info into arch
independent structure. VMX code uses vmx->idt_vectoring_info directly.
SVM is much close to working migration with nested guests for the same
reason.

> It sounds to me that working to move some nested-interrupt-injection related
> logic to x86.c is a worthy effort (and I'd be happy to start some discussion
> on how to best design it), but working to duplicate the exact idiosyncrasies
> of the current SVM implementation in the VMX code is not as productive.
> But as usual, I'm open to arguments (or dictums ;-)) that I'm wrong here.
> 
> By the way, I hope that I'm being fair to the nested SVM implementation when
> I call some of the code there, after only a short review, idiosyncrasies.
> Basically I am working under the assumption that some of the modifications
> there (I gave examples in my previous post) were done in the way they were
> just to fit the mold of x86.c, and that it would have been possible to alter
> x86.c in a way that could make the nested SVM code simpler - and quite
> different (in the area of interrupt injection).
I think (haven't looked at the code for a long time) it can benefit
from additional x86 ops callbacks, but it would be silly to add one set
of callbacks to support SVM way of doing things and another set for VMX,
not because archs are so different that unification is impossible (they
are not, they are very close in this area in fact), but because two
implementations are different.

> 
> > All I am asking is to make this step now, before merge,
> > while the code is still actively developed.
> 
> The code will continue to be actively developed even after the merge :-)
> 
Amen! :)

--
			Gleb.

  reply	other threads:[~2011-05-12 16:52 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 [this message]
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
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=20110512165157.GC20193@redhat.com \
    --to=gleb@redhat.com \
    --cc=abelg@il.ibm.com \
    --cc=avi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).