On Wed, May 25, 2011 at 11:05:04AM +0930, Rusty Russell wrote:
On Mon, 23 May 2011 14:19:00 +0300, Michael S. Tsirkin m...@redhat.com
wrote:
I do understand how it seems a waste to leave direct space
in the ring while we might in practice have space
due to indirect. Didn't come up with a
On 05/24/2011 03:42 PM, Avi Kivity wrote:
On 05/24/2011 04:37 PM, Markus Schade wrote:
On Tue, 24 May 2011, Avi Kivity wrote:
Hmm, only 19 patches between .37 and .38 touch vmx.c. Avi, any idea
which
of those patches could cause this?
Might be several.
Markus, can you try a bisect?
The
From: Nadav Har'El [mailto:n...@math.technion.ac.il]
Sent: Wednesday, May 25, 2011 1:38 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 21/31] nVMX:
vmcs12 checks on nested entry:
+ if (vmcs12-launch_state == launch) {
+ nested_vmx_failValid(vcpu,
+
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 3:55 AM
This patch contains the logic of whether an L2 exit should be handled by L0
and then L2 should be resumed, or whether L1 should be run to handle this
exit (using the nested_vmx_vmexit() function of the previous patch).
The basic idea
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 3:53 AM
Implement the VMLAUNCH and VMRESUME instructions, allowing a guest
hypervisor to run its own guests.
This patch does not include some of the necessary validity checks on
vmcs12 fields before the entry. These will appear in a separate
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 20/31] nVMX: Exiting
from L2 to L1:
IOW, I disagree that if L0/L1 set same bit in cr0_guest_host_mask, then
the bit is identical in vmcs02.guest_cr0 and vmcs12.guest_cr0 because L1
has no permission to set its bit effectively in this
On 05/24/2011 09:40 PM, Ingo Molnar wrote:
Ah, forgot about this. Given_why_ this happens (for static libraries, the
linker omits object modules that are not required to fulfill undefined
references in previous objects), I'd be surprised if explicit section tricks
do not have the same
From: Nadav Har'El [mailto:n...@math.technion.ac.il]
Sent: Wednesday, May 25, 2011 4:06 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 20/31] nVMX:
Exiting from L2 to L1:
IOW, I disagree that if L0/L1 set same bit in cr0_guest_host_mask, then
the bit is identical in
* Paolo Bonzini pbonz...@redhat.com wrote:
In that sense ((section)) is way more robust: there's not really that many
ways to screw that up. Fiddling with the ((constructor)) environment on
the
other hand ...
Sorry, this is textbook FUD.
I specifically cited the problem of
* Paolo Bonzini pbonz...@redhat.com wrote:
((constructor)) has showstopper properties:
- We don't have access to the program arguments
- stdio is probably not set up yet (this is undefined AFAICS)
As I said, you can do this even better by doing only minimal work in
the constructor.
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 3:56 AM
The code in this patch correctly emulates external-interrupt injection
while a nested guest L2 is running.
Because of this code's relative un-obviousness, I include here a longer-than-
usual justification for what it does - much
From: Tian, Kevin
Sent: Wednesday, May 25, 2011 4:40 PM
If L1 turns on VM_EXIT_ACK_INTR_ON_EXIT (again, no hypervisor that I know
does), things look very different from the description above: L1 expects
Type-1 bare metal hypervisor may enable this bit, such as Xen. This bit is
really
On 05/25/2011 10:32 AM, Ingo Molnar wrote:
* Paolo Bonzinipbonz...@redhat.com wrote:
In that sense ((section)) is way more robust: there's not really that many
ways to screw that up. Fiddling with the ((constructor)) environment on the
other hand ...
Sorry, this is textbook FUD.
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 3:56 AM
The code in this patch correctly emulates external-interrupt injection
while a nested guest L2 is running.
Because of this code's relative un-obviousness, I include here a longer-than-
usual justification for what it does - much
From: Feng Yang fy...@redhat.com
This case test multi disk suport in kvm guest os. It can work on Linux and
Windows guest.
Signed-off-by: Feng Yang fy...@redhat.com
---
client/tests/kvm/tests/multi_disk.py | 127 ++
1 files changed, 127 insertions(+), 0
From: Feng Yang fy...@redhat.com
Test this configure with nic_mode = tap
Signed-off-by: Feng Yang fy...@redhat.com
---
client/tests/kvm/tests_base.cfg.sample | 91 +++-
1 files changed, 89 insertions(+), 2 deletions(-)
diff --git
* Paolo Bonzini pbonz...@redhat.com wrote:
So you claim that ((section)) is 'not portable' but concede that
it does in fact not port to one of the most widely used
compilers.
Can you please avoid trimming messages? I said the differences
between MSVC and GCC can easily be
* Paolo Bonzini pbonz...@redhat.com wrote:
On 05/25/2011 10:32 AM, Ingo Molnar wrote:
* Paolo Bonzinipbonz...@redhat.com wrote:
In that sense ((section)) is way more robust: there's not really that
many
ways to screw that up. Fiddling with the ((constructor)) environment on
On 05/25/2011 11:36 AM, Ingo Molnar wrote:
So can other portability problems be solved, such as linker scripts
can be written for non-ELF targets (should that ever become
necessary)
I know that's not going to be the case, and I mentioned that in my first
message---portability is not relevant
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 3:57 AM
This patch adds correct handling of IDT_VECTORING_INFO_FIELD for the
nested
case.
When a guest exits while delivering an interrupt or exception, we get this
information in IDT_VECTORING_INFO_FIELD in the VMCS. When L2 exits to L1,
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 25/31] nVMX: Correct
handling of idt vectoring info:
Here got one question. How about L2 has interrupt exiting disabled? That way
You are right, this is a bug in my code. It's a known bug - listed on my
private bugzilla - but I didn't get
Hi,
restoring a memory dump created with an old version qemu-kvm 0.12.5 to
new 0.14.0 or 0.14.1
does not work for me
looking at the code this is supposed to work vmstate_load() runs through
the various sections
without errors and the vm is up and running but the guest seems to be
crashed
* Paolo Bonzini pbonz...@redhat.com wrote:
so what's your point?
Using this kind of trick makes it harder to share code with other
libraries that may require a higher standard of portability (not
better or worse, just higher). [...]
That's an complication but should be fixable, should
From: Nadav Har'El
Sent: Wednesday, May 25, 2011 6:14 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 25/31] nVMX:
Correct handling of idt vectoring info:
Here got one question. How about L2 has interrupt exiting disabled? That
way
You are right, this is a bug in my code.
From: Nadav Har'El
Sent: Tuesday, May 17, 2011 4:00 AM
This patch includes a brief introduction to the nested vmx feature in the
Documentation/kvm directory. The document also includes a copy of the
vmcs12 structure, as requested by Avi Kivity.
Signed-off-by: Nadav Har'El n...@il.ibm.com
From: Avi Kivity
Sent: Tuesday, May 24, 2011 9:57 PM
On 05/24/2011 04:14 PM, Avi Kivity wrote:
On 05/24/2011 03:26 PM, Nadav Har'El wrote:
Hi Avi, here is a updated version of the loaded_vmcs patch which you
asked me
to send before the rest of the nvmx patches.
Please let me know
On 05/25/2011 12:17 PM, Ingo Molnar wrote:
Also it's not clear why ((constructor)) was written in the way it
was: why apparently no access is given to the array of init functions
It is accessible---glibc uses it.
and why it's not possible to turn the auto-execution off but still
have the
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 23/31] nVMX: Correct
handling of interrupt injection:
If L1 turns on VM_EXIT_ACK_INTR_ON_EXIT (again, no hypervisor that I know
does), things look very different from the description above: L1 expects
Type-1 bare metal hypervisor may
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 31/31] nVMX:
Documentation:
+On Intel processors, KVM uses Intel's VMX (Virtual-Machine eXtensions)
+to easily and efficiently run guest operating systems. Normally, these
guests
+*cannot* themselves be hypervisors running their
From: Nadav Har'El
Sent: Wednesday, May 25, 2011 7:55 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 31/31] nVMX:
Documentation:
+On Intel processors, KVM uses Intel's VMX (Virtual-Machine eXtensions)
+to easily and efficiently run guest operating systems. Normally, these
On Wed, May 25, 2011 at 06:33:30PM +0800, Tian, Kevin wrote:
+Known limitations
+-
+
+The current code supports running Linux guests under KVM guests.
+Only 64-bit guest hypervisors are supported.
+
+Additional patches for running Windows under guest KVM, and Linux
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 23/31] nVMX: Correct
handling of interrupt injection:
static void enable_irq_window(struct kvm_vcpu *vcpu)
{
u32 cpu_based_vm_exec_control;
+ if (is_guest_mode(vcpu) nested_exit_on_intr(vcpu))
+ /* We can get
* Paolo Bonzini pbonz...@redhat.com wrote:
On 05/25/2011 12:17 PM, Ingo Molnar wrote:
Also it's not clear why ((constructor)) was written in the way it
was: why apparently no access is given to the array of init
functions
It is accessible---glibc uses it.
and why it's not
From: Nadav Har'El [mailto:n...@math.technion.ac.il]
Sent: Wednesday, May 25, 2011 8:34 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 23/31] nVMX:
Correct handling of interrupt injection:
static void enable_irq_window(struct kvm_vcpu *vcpu)
{
u32
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 20/31] nVMX: Exiting
from L2 to L1:
How about SYSENTER and PERF_GLOBAL_CTRL MSRs? At least a TODO comment
here make the whole load process complete. :-)
Also isn't it more sane to update vmcs01's guest segment info based on
vmcs12's
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 18/31] nVMX:
Implement VMLAUNCH and VMRESUME:
+ if (!saved_vmcs02)
+ return -ENOMEM;
+
we shouldn't return error after the guest mode is updated. Or else move
enter_guest_mode to a later place...
I moved things
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 22/31] nVMX: Deciding
if L0 or L1 should handle an L2 exit:
+static inline bool nested_cpu_has_virtual_nmis(struct kvm_vcpu *vcpu)
+{
+ return is_guest_mode(vcpu)
+ (get_vmcs12(vcpu)-pin_based_vm_exec_control
+
Allow specifying an optional parameter when registering an
ioport range. The callback functions provided by the registering
module will be called with the same parameter.
This may be used to keep context during callbacks on IO operations.
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
Add a very simple allocation of ioports.
This prevents the need to coordinate ioports between different
modules.
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/include/kvm/ioport.h |5 +
tools/kvm/ioport.c |7 +++
2 files changed, 12 insertions(+),
Since ioports now has the ability to pass context to its
callbacks, we can implement multiple blk devices more efficiently.
We can get a ptr to the 'current' blk dev on each ioport call, which
means that we don't need to keep track of the blk device allocation
and ioport distribution within the
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/virtio/9p.c | 12
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/kvm/virtio/9p.c b/tools/kvm/virtio/9p.c
index e307592..f8cb96d 100644
--- a/tools/kvm/virtio/9p.c
+++ b/tools/kvm/virtio/9p.c
@@
Since multiple hardware rng devices of the same type are currently
unsupported by the kernel, this serves more as an example of a basic
virtio driver under kvm tools and can be used to debug the PCI layer.
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/include/kvm/ioport.h
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/virtio/console.c | 12
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/kvm/virtio/console.c b/tools/kvm/virtio/console.c
index a0b..eeb5dc9 100644
--- a/tools/kvm/virtio/console.c
+++
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/virtio/net.c | 13 +
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/tools/kvm/virtio/net.c b/tools/kvm/virtio/net.c
index 649bc0f..765ae56d 100644
--- a/tools/kvm/virtio/net.c
+++
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/include/kvm/ioport.h |9 -
1 files changed, 0 insertions(+), 9 deletions(-)
diff --git a/tools/kvm/include/kvm/ioport.h b/tools/kvm/include/kvm/ioport.h
index 709e18e..cc57cdd 100644
--- a/tools/kvm/include/kvm/ioport.h
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/hw/vesa.c |7 ---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/kvm/hw/vesa.c b/tools/kvm/hw/vesa.c
index 6ab07ee..eb3ee65 100644
--- a/tools/kvm/hw/vesa.c
+++ b/tools/kvm/hw/vesa.c
@@ -49,7 +49,6 @@
* Sasha Levin levinsasha...@gmail.com wrote:
+u16 ioport__find_free_range(void)
+{
+ static u16 cur_loc;
Please don't put statics inside function bodies! (even if they are
only used within a single function)
I had to look three times to discover that it's really a global
variable.
* Sasha Levin levinsasha...@gmail.com wrote:
void virtio_console__init(struct kvm *kvm)
{
u8 dev, line, pin;
+ u16 console_base_addr;
if (irq__register_device(VIRTIO_ID_CONSOLE, dev, pin, line) 0)
return;
virtio_console_pci_device.irq_pin
* Sasha Levin levinsasha...@gmail.com wrote:
Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
tools/kvm/include/kvm/ioport.h |9 -
1 files changed, 0 insertions(+), 9 deletions(-)
diff --git a/tools/kvm/include/kvm/ioport.h b/tools/kvm/include/kvm/ioport.h
index
On Wed, 2011-05-25 at 16:42 +0200, Ingo Molnar wrote:
* Sasha Levin levinsasha...@gmail.com wrote:
void virtio_console__init(struct kvm *kvm)
{
u8 dev, line, pin;
+ u16 console_base_addr;
if (irq__register_device(VIRTIO_ID_CONSOLE, dev, pin, line) 0)
On 05/25/2011 02:53 PM, Ingo Molnar wrote:
Obviously the compiler did not provide this feature into a vacuum, it
expected the C library to execute constructors, right?
So the above dodges my question of why there is no method (in glibc)
to turn auto-execution off and let the app do it.
Well,
Remove the now unnecessary asmlinkage attribute from the various
printk prototypes and uses.
Signed-off-by: Joe Perches j...@perches.com
---
arch/arm/kernel/early_printk.c |2 +-
arch/ia64/kvm/vmm.c|2 +-
arch/x86/kernel/early_printk.c |2 +-
include/linux/printk.h
printk.h is a subfile of kernel.h, do not allow it to
be included directly.
Joe Perches (4):
treewide: Remove direct includes of printk.h
staging: Remove direct includes of printk.h
printk: Don't allow direct inclusion
treewide: Remove asmlinkage from printk
Commit fa4491a6b667304 moved the permission check for io instructions
to the -check_perm callback. It failed to copy the port value from RDX
register for string and in,out ax,dx instructions.
Fix it by reading RDX register at decode stage when appropriate.
Fixes FC8.32 installation.
Apart from two cosmetic issues (see below), I think this patch is
ready to replace the old rbd driver. You can add:
Reviewed-by: Christian Brunner c...@muc.de
Regards
Christian
2011/5/24 Josh Durgin josh.dur...@dreamhost.com:
librbd stacks on top of librados to provide access
to rbd images.
Looks good to me:
Reviewed-by: Christian Brunner c...@muc.de
2011/5/24 Josh Durgin josh.dur...@dreamhost.com:
The new format is
rbd:pool/image[@snapshot][:option1=value1[:option2=value2...]]
Each option is used to configure rados, and may be any Ceph option, or conf.
The conf option
We should not leave this out:
Reviewed-by: Christian Brunner c...@muc.de
2011/5/24 Josh Durgin josh.dur...@dreamhost.com:
If scheduling fails, the number of outstanding I/Os must be correct,
or there will be a hang when waiting for everything to be flushed.
Reported-by: Stefan Hajnoczi
Looks good to me:
Reviewed-by: Christian Brunner c...@muc.de
2011/5/24 Josh Durgin josh.dur...@dreamhost.com:
Signed-off-by: Josh Durgin josh.dur...@dreamhost.com
---
block/rbd.c | 15 +++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/block/rbd.c
Hi,
This is the eleventh iteration of the nested VMX patch set, and hopefully the
last in this format.
Improvements in this version over the previous one include:
* Overhauled vmcs, cpu, and launched handling (new loaded_vmcs structure and
per-cpu linked-list replacing old vcpu
In VMX, before we bring down a CPU we must VMCLEAR all VMCSs loaded on it
because (at least in theory) the processor might not have written all of its
content back to memory. Since a patch from June 26, 2008, this is done using
a per-cpu vcpus_on_cpu linked list of vcpus loaded on each CPU.
The
This patch adds to kvm_intel a module option nested. This option controls
whether the guest can use VMX instructions, i.e., whether we allow nested
virtualization. A similar, but separate, option already exists for the
SVM module.
This option currently defaults to 0, meaning that nested VMX must
This patch allows a guest to use the VMXON and VMXOFF instructions, and
emulates them accordingly. Basically this amounts to checking some
prerequisites, and then remembering whether the guest has enabled or disabled
VMX operation.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
This patch allows the guest to enable the VMXE bit in CR4, which is a
prerequisite to running VMXON.
Whether to allow setting the VMXE bit now depends on the architecture (svm
or vmx), so its checking has moved to kvm_x86_ops-set_cr4(). This function
now returns an int: If kvm_x86_ops-set_cr4()
An implementation of VMX needs to define a VMCS structure. This structure
is kept in guest memory, but is opaque to the guest (who can only read or
write it with VMX instructions).
This patch starts to define the VMCS structure which our nested VMX
implementation will present to L1. We call it
When the guest can use VMX instructions (when the nested module option is
on), it should also be able to read and write VMX MSRs, e.g., to query about
VMX capabilities. This patch adds this support.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/include/asm/msr-index.h | 12 +
We saw in a previous patch that L1 controls its L2 guest with a vcms12.
L0 needs to create a real VMCS for running L2. We call that vmcs02.
A later patch will contain the code, prepare_vmcs02(), for filling the vmcs02
fields. This patch only contains code for allocating vmcs02.
In this version,
This patch includes a utility function for decoding pointer operands of VMX
instructions issued by L1 (a guest hypervisor)
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 53 +++
arch/x86/kvm/x86.c |3 +-
arch/x86/kvm/x86.h |
In this patch we add to vmcs12 (the VMCS that L1 keeps for L2) all the
standard VMCS fields.
Later patches will enable L1 to read and write these fields using VMREAD/
VMWRITE, and they will be used during a VMLAUNCH/VMRESUME in preparing vmcs02,
a hardware VMCS for running L2.
Signed-off-by:
VMX instructions specify success or failure by setting certain RFLAGS bits.
This patch contains common functions to do this, and they will be used in
the following patches which emulate the various VMX instructions.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/include/asm/vmx.h |
This patch implements the VMCLEAR instruction.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 65 ++-
arch/x86/kvm/x86.c |1
2 files changed, 65 insertions(+), 1 deletion(-)
--- .before/arch/x86/kvm/x86.c 2011-05-25
This patch implements the VMPTRLD instruction.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 62 ++-
1 file changed, 61 insertions(+), 1 deletion(-)
--- .before/arch/x86/kvm/vmx.c 2011-05-25 22:40:57.0 +0300
+++
On Tue, May 24, 2011 at 11:24 PM, Amos Kong ak...@redhat.com wrote:
Appended kernel cmdline should be involved by quotation marks.
-append 'root=/dev/vda ro ..'
Applied, thanks!
Reported-by: Cong Wang amw...@redhat.com
Signed-off-by: Amos Kong ak...@redhat.com
---
client/virt/kvm_vm.py |
This patch implements the VMPTRST instruction.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 28 +++-
arch/x86/kvm/x86.c |3 ++-
arch/x86/kvm/x86.h |4
3 files changed, 33 insertions(+), 2 deletions(-)
--- .before/arch/x86/kvm/x86.c
Implement the VMREAD and VMWRITE instructions. With these instructions, L1
can read and write to the VMCS it is holding. The values are read or written
to the fields of the vmcs12 structure introduced in a previous patch.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 193
Move the setting of constant host-state fields (fields that do not change
throughout the life of the guest) from vmx_vcpu_setup to a new common function
vmx_set_constant_host_state(). This function will also be used to set the
host state when running L2 guests.
Signed-off-by: Nadav Har'El
Move some of the control field setup to common functions. These functions will
also be needed for running L2 guests - L0's desires (expressed in these
functions) will be appropriately merged with L1's desires.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 80
This patch contains code to prepare the VMCS which can be used to actually
run the L2 guest, vmcs02. prepare_vmcs02 appropriately merges the information
in vmcs12 (the vmcs that L1 built for L2) and in vmcs01 (our desires for our
own guests).
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
Implement the VMLAUNCH and VMRESUME instructions, allowing a guest
hypervisor to run its own guests.
This patch does not include some of the necessary validity checks on
vmcs12 fields before the entry. These will appear in a separate patch
below.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
Before nested VMX support, the exit handler for a guest executing a VMX
instruction (vmclear, vmlaunch, vmptrld, vmptrst, vmread, vmread, vmresume,
vmwrite, vmon, vmoff), was handle_vmx_insn(). This handler simply threw a #UD
exception. Now that all these exit reasons are properly handled (and
This patch implements nested_vmx_vmexit(), called when the nested L2 guest
exits and we want to run its L1 parent and let it handle this exit.
Note that this will not necessarily be called on every L2 exit. L0 may decide
to handle a particular exit on its own, without L1's involvement; In that
This patch adds a bunch of tests of the validity of the vmcs12 fields,
according to what the VMX spec and our implementation allows. If fields
we cannot (or don't want to) honor are discovered, an entry failure is
emulated.
According to the spec, there are two types of entry failures: If the
This patch contains the logic of whether an L2 exit should be handled by L0
and then L2 should be resumed, or whether L1 should be run to handle this
exit (using the nested_vmx_vmexit() function of the previous patch).
The basic idea is to let L1 handle the exit only if it actually asked to
trap
The code in this patch correctly emulates external-interrupt injection
while a nested guest L2 is running.
Because of this code's relative un-obviousness, I include here a longer-than-
usual justification for what it does - much longer than the code itself ;-)
To understand how to correctly
Similar to the previous patch, but concerning injection of exceptions rather
than external interrupts.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c | 26 ++
1 file changed, 26 insertions(+)
--- .before/arch/x86/kvm/vmx.c 2011-05-25
This patch adds correct handling of IDT_VECTORING_INFO_FIELD for the nested
case.
When a guest exits while delivering an interrupt or exception, we get this
information in IDT_VECTORING_INFO_FIELD in the VMCS. When L2 exits to L1,
there's nothing we need to do, because L1 will see this field in
When L2 tries to modify CR0 or CR4 (with mov or clts), and modifies a bit
which L1 asked to shadow (via CR[04]_GUEST_HOST_MASK), we already do the right
thing: we let L1 handle the trap (see nested_vmx_exit_handled_cr() in a
previous patch).
When L2 modifies bits that L1 doesn't care about, we let
KVM's Lazy FPU loading means that sometimes L0 needs to set CR0.TS, even
if a guest didn't set it. Moreover, L0 must also trap CR0.TS changes and
NM exceptions, even if we have a guest hypervisor (L1) who didn't want these
traps. And of course, conversely: If L1 wanted to trap these events, we
In the unlikely case that L1 does not capture MSR_IA32_TSC, L0 needs to
emulate this MSR write by L2 by modifying vmcs02.tsc_offset. We also need to
set vmcs12.tsc_offset, for this change to survive the next nested entry (see
prepare_vmcs02()).
Additionally, we also need to modify
If the nested module option is enabled, add the VMX CPU feature to the
list of CPU features KVM advertises with the KVM_GET_SUPPORTED_CPUID ioctl.
Qemu uses this ioctl, and intersects KVM's list with its own list of desired
cpu features (depending on the -cpu option given to qemu) to determine
Small corrections of KVM (spelling, etc.) not directly related to nested VMX.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
arch/x86/kvm/vmx.c |2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- .before/arch/x86/kvm/vmx.c 2011-05-25 22:41:14.0 +0300
+++
This patch includes a brief introduction to the nested vmx feature in the
Documentation/kvm directory. The document also includes a copy of the
vmcs12 structure, as requested by Avi Kivity.
Signed-off-by: Nadav Har'El n...@il.ibm.com
---
Documentation/kvm/nested-vmx.txt | 251
This patchset moves the complexity of the rbd format into librbd and
adds truncation support.
Changes since v4:
* fixed cosmetic issues pointed out by Christian Brunner
Changes since v3:
* trivially rebased
* updated copyright header
Changes since v2:
* return values are checked in
librbd stacks on top of librados to provide access
to rbd images.
Using librbd simplifies the qemu code, and allows
qemu to use new versions of the rbd format
with few (if any) changes.
Signed-off-by: Josh Durgin josh.dur...@dreamhost.com
Signed-off-by: Yehuda Sadeh yeh...@hq.newdream.net
---
If scheduling fails, the number of outstanding I/Os must be correct,
or there will be a hang when waiting for everything to be flushed.
Reported-by: Stefan Hajnoczi stefa...@gmail.com
Signed-off-by: Josh Durgin josh.dur...@dreamhost.com
---
block/rbd.c | 24
1 files
The new format is rbd:pool/image[@snapshot][:option1=value1[:option2=value2...]]
Each option is used to configure rados, and may be any Ceph option, or conf.
The conf option specifies a Ceph configuration file to read.
This allows rbd volumes from more than one Ceph cluster to be used by
Signed-off-by: Josh Durgin josh.dur...@dreamhost.com
---
block/rbd.c | 15 +++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/block/rbd.c b/block/rbd.c
index a44d160..b95b1eb 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -688,6 +688,20 @@ static int64_t
On 05/25/2011 12:18 PM, Christian Brunner wrote:
Apart from two cosmetic issues (see below), I think this patch is
ready to replace the old rbd driver. You can add:
Reviewed-by: Christian Brunnerc...@muc.de
Regards
Christian
Thanks, I fixed these in v5.
Josh
2011/5/24 Josh
Problem solved by upgrading to 2.6.39 kernel from 2.6.38, at another
server I use 2.6.38 kernel, but there is no such problem
Seems some problem between newer versions of qemu-kvm and kvm kernel
version and also result of fixing KVM: fix kvmclock regression due to
missing clock update
On 24 May
On Fri, 2011-05-20 at 02:41 +0300, Michael S. Tsirkin wrote:
So the requirements are
- data must be released in a timely fashion (e.g. unlike virtio-net
tun or bridge)
The current patch doesn't enable tun zero-copy. tun will copy data It's
not an issue now. We can disallow macvtap attach to
From: Nadav Har'El
Sent: Wednesday, May 25, 2011 9:21 PM
On Wed, May 25, 2011, Tian, Kevin wrote about RE: [PATCH 20/31] nVMX:
Exiting from L2 to L1:
How about SYSENTER and PERF_GLOBAL_CTRL MSRs? At least a TODO
comment
here make the whole load process complete. :-)
Also isn't it
1 - 100 of 102 matches
Mail list logo