22 May, 2011
16 commits
-
Function ioapic_debug() in the ioapic_deliver() misnames
one filed by reference. This patch correct it.Signed-off-by: Liu Yuan
Signed-off-by: Avi Kivity -
This patch makes the cmpxchg_gpte() function aware of the
difference between l1-gfns and l2-gfns when nested
virtualization is in use. This fixes a potential
data-corruption problem in the l1-guest and makes the code
work correct (at least as correct as the hardware which is
emulated in this code) again.Cc: stable@kernel.org
Signed-off-by: Joerg Roedel
Signed-off-by: Avi Kivity -
No longer used.
Signed-off-by: Avi Kivity
-
We can use container_of() instead.
Signed-off-by: Avi Kivity
-
Instead of calling kvm_emulate_wbinvd() directly.
Signed-off-by: Avi Kivity
-
Artificial, but needed to remove direct calls to KVM.
Signed-off-by: Avi Kivity
-
Instead of reaching into vcpu internals.
Signed-off-by: Avi Kivity
-
Removing direct calls to KVM.
Signed-off-by: Avi Kivity
-
Avoid using ctxt->vcpu; we can do everything with ->get_cr() and ->set_cr().
A side effect is that we no longer activate the fpu on emulated CLTS; but that
should be very rare.Signed-off-by: Avi Kivity
-
Avoid use of ctxt->vcpu.
Signed-off-by: Avi Kivity
-
Requires ctxt->vcpu, which is to be abolished. Replace with open calls
to get_msr().Signed-off-by: Avi Kivity
-
Replacing direct calls to realmode_lgdt(), realmode_lidt().
Signed-off-by: Avi Kivity
-
Unneeded for register access.
Signed-off-by: Avi Kivity
-
Making the emulator caller agnostic.
Signed-off-by: Avi Kivity
-
Making the emulator caller agnostic.
Signed-off-by: Avi Kivity
-
Making the emulator caller agnostic.
[Takuya Yoshikawa: fix typo leading to LDT failures]
Signed-off-by: Takuya Yoshikawa
Signed-off-by: Avi Kivity
11 May, 2011
24 commits
-
Making the emulator caller agnostic.
Signed-off-by: Avi Kivity
-
Making the emulator caller agnostic.
Signed-off-by: Avi Kivity
-
Clean up lines longer than 80 columns. No code changes.
Signed-off-by: Avi Kivity
-
Since segments need to be handled slightly differently when fetching
instructions, we add a __linearize helper that accepts a new 'fetch' boolean.[avi: fix oops caused by wrong segmented_address initialization order]
Signed-off-by: Nelson Elhage
Signed-off-by: Avi Kivity -
The last_guest_tsc is used in vcpu_load to adjust the
tsc_offset since tsc-scaling is merged. So the
last_guest_tsc needs to be updated in vcpu_put instead of
the the last_host_tsc. This is fixed with this patch.Reported-by: Jan Kiszka
Tested-by: Jan Kiszka
Signed-off-by: Joerg Roedel
Signed-off-by: Avi Kivity -
This patch fixes a bug in the nested-svm path when
decode-assists is available on the machine. After a
selective-cr0 intercept is detected the rip is advanced
unconditionally. This causes the l1-guest to continue
running with an l2-rip.
This bug was with the sel_cr0 unit-test on decode-assists
capable hardware.Signed-off-by: Joerg Roedel
Signed-off-by: Avi Kivity -
Currently, setting a large (i.e. negative) base address for %cs does not work on
a 64-bit host. The "JOS" teaching operating system, used by MIT and other
universities, relies on such segments while bootstrapping its way to full
virtual memory management.Signed-off-by: Nelson Elhage
Signed-off-by: Avi Kivity -
Just remove useless function define kvm_inject_pit_timer_irqs() from
file arch/x86/kvm/i8254.hSigned-off-by:Duan Jiong
Signed-off-by: Avi Kivity
-
Just remove useless function define kvm_pic_clear_isr_ack() and
pit_has_pending_timer()Signed-off-by: Duan Jiong
Signed-off-by: Avi Kivity -
This patch avoids gcc issuing the following warning when KVM_MAX_VCPUS=1:
warning: array subscript is above array boundskvm_for_each_vcpu currently checks to see if the index for the vcpu is
valid /after/ loading it. We don't run into problems because the address
is still inside the enclosing struct kvm and we never deference or write
to it, so this isn't a security issue.The warning occurs when KVM_MAX_VCPUS=1 because the increment portion of
the loop will *always* cause the loop to load an invalid location since
++idx will always be > 0.This patch moves the load so that the check occurs before the load and
we don't run into the compiler warning.Signed-off-by: Neil Brown
Signed-off-by: Jeff Mahoney
Signed-off-by: Avi Kivity -
When doing a soft int, we need to bump eip before pushing it to
the stack. Otherwise we'll do the int a second time.[apw@canonical.com: merged eip update as per Jan's recommendation.]
Signed-off-by: Serge E. Hallyn
Signed-off-by: Andy Whitcroft
Signed-off-by: Avi Kivity -
em_push() is a simple wrapper of emulate_push(). So this patch replaces
emulate_push() with em_push() and removes the unnecessary former.In addition, the unused ops arguments are removed from emulate_pusha()
and emulate_grp45().Signed-off-by: Takuya Yoshikawa
Signed-off-by: Avi Kivity -
PUSH emulation stores the value by calling writeback() after setting
the dst operand appropriately in emulate_push().This writeback() using dst is not needed at all because we know the
target is the stack. So this patch makes emulate_push() call, newly
introduced, segmented_write() directly.By this, many inlined writeback()'s are removed.
Signed-off-by: Takuya Yoshikawa
Signed-off-by: Avi Kivity -
This stops "CMP r/m, reg" to write back the data into memory.
Pointed out by Avi.The writeback suppression now covers CMP, CMPS, SCAS.
Signed-off-by: Takuya Yoshikawa
Signed-off-by: Avi Kivity -
In case certain allocations fail, vmx_create_vcpu may return 0 as error
instead of a negative value encoded via ERR_PTR. This causes a NULL
pointer dereferencing later on in kvm_vm_ioctl_vcpu_create.Reported-by: Sasha Levin
Signed-off-by: Jan Kiszka
Signed-off-by: Marcelo Tosatti -
Currently we sync registers back and forth before/after exiting
to userspace for IO, but during IO device model shouldn't need to
read/write the registers, so we can as well skip those sync points. The
only exaception is broken vmware backdor interface. The new code sync
registers content during IO only if registers are read from/written to
by userspace in the middle of the IO operation and this almost never
happens in practise.Signed-off-by: Gleb Natapov
Signed-off-by: Marcelo Tosatti -
Signed-off-by: Avi Kivity
-
For reuse later.
Signed-off-by: Avi Kivity
-
So it can call emulate_gp() without forward declarations.
Signed-off-by: Avi Kivity
-
Needed for segment read/write checks.
Signed-off-by: Avi Kivity
-
Preparing to add segment checks.
Signed-off-by: Avi Kivity
-
It's going to get more complicated soon.
Signed-off-by: Avi Kivity
-
Will help later adding proper segment checks.
Signed-off-by: Avi Kivity
-
When the emulation of vmload or vmsave fails because the
guest passed an unsupported physical address it gets an #GP
with rip pointing to the instruction after vmsave/vmload.
This is a bug and fixed by this patch.Signed-off-by: Joerg Roedel
Signed-off-by: Avi Kivity