This patch changes the PIC interrupts delivery. Now it is only deliverd
to vcpu0 when either condition is met (on vcpu0):
1. local APIC is hardware disabled
2. LVT0 is unmasked and configured to delivery mode ExtInt
It fixes the 2x faster wall clock on x86_64 and SMP i386 Linux guests
Signed
He, Qing wrote:
> This patch changes the PIC interrupts delivery. Now it is only deliverd
> to vcpu0 when either condition is met (on vcpu0):
> 1. local APIC is hardware disabled
> 2. LVT0 is unmasked and configured to delivery mode ExtInt
>
> It fixes the 2x faster wall clock on x86_64 and SMP
From: Qing He <[EMAIL PROTECTED]>
This patch adds a `vcpu_id' field in `struct vcpu', so we can
differentiate BSP and APs without pointer comparison or arithmetic.
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |1 +
driver
From: Nguyen Anh Quynh <[EMAIL PROTECTED]>
*nopage() in kvm_main.c should only store the type of mmap() fault if
the pointers are not NULL. This patch fixes the problem.
Signed-off-by: Nguyen Anh Quynh <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |
Note that as the size of struct kvm_run is not part of the ABI, we can add
things at the end.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
include/linux/kvm.h |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index e6edca8..b9
From: Eddie Dong <[EMAIL PROTECTED]>
Add string pio write support to support some version of Windows.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c | 48 +---
1 files ch
The following represents the patch queue for the 2.6.24, posted here for
review. Most of the patches have already been on kvm-devel (and all of
them on kvm-commits), but some folding has occured to merge fixes
and to make the whole series bisect-friendly.
A few patches are likely to change in the
From: Rusty Russell <[EMAIL PROTECTED]>
Don't pre-declare hardware_disable: shuffle the reboot hook down.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c | 40 +++-
1 files changed, 19
From: Rusty Russell <[EMAIL PROTECTED]>
I have shied away from touching x86_emulate.c (it could definitely use
some love, but it is forked from the Xen code, and it would be more
productive to cross-merge fixes).
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL P
From: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.h |2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/kvm/x86_emulate.h b/drivers/kvm/x86_emulate.h
inde
From: Jeff Dike <[EMAIL PROTECTED]>
Signed-off-by: Jeff Dike <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |2 +-
drivers/kvm/svm.c |1 -
drivers/kvm/vmx.c |1 -
3 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/dri
From: Rusty Russell <[EMAIL PROTECTED]>
Creating one's own BITMAP macro seems suboptimal: if we use manual
arithmetic in the one place exposed to userspace, we can use standard
macros elsewhere.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
dr
From: Rusty Russell <[EMAIL PROTECTED]>
The kernel now has asm/cpu-features.h: use those macros instead of inventing
our own.
Also spell out definition of CR3_RESEVED_BITS, fix spelling and
tighten it for the non-PAE case.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivit
From: Rusty Russell <[EMAIL PROTECTED]>
KVM interface is no longer experimental.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
include/linux/kvm.h |3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/include/linux/kvm.h b
The writeback fixes (02c03a326a5df825cc01de426f72e160db2b9538) broke
cmov emulation. Fix.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 22 +++---
1 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/driver
From: Rusty Russell <[EMAIL PROTECTED]>
Speling error in comment.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/dri
From: Shaohua Li <[EMAIL PROTECTED]>
vmx_cpu_run doesn't handle error correctly and kvm_mmu_reload might
sleep with mutex changes, so I move it above.
Signed-off-by: Shaohua Li <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |8
1 files change
From: Rusty Russell <[EMAIL PROTECTED]>
Intel manual (and KVM definition) say the TPR is 4 bits wide. Also fix
CR8_RESEVED_BITS typo.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Acked-by: H. Peter Anvin <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_m
From: Rusty Russell <[EMAIL PROTECTED]>
On this machine (Intel), writing to the CR4 bits 0x0800 and
0x1000 cause a GPF. The Intel manual is a little unclear, but
AFIACT they're reserved, too.
Also fix spelling of CR4_RESEVED_BITS.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-
From: Rusty Russell <[EMAIL PROTECTED]>
The kernel now has asm/cpu-features.h: use those macros instead of
inventing our own.
Also spell out definition of CR0_RESEVED_BITS (no code change) and fix typo.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]
From: Rusty Russell <[EMAIL PROTECTED]>
Changes some svm.c internal function names:
1) io_adress -> io_address (de-germanify the spelling)
2) kvm_reput_irq -> reput_irq (it's not a generic kvm function)
3) kvm_do_inject_irq -> (it's not a generic kvm function)
Signed-off-by: Rusty Russell <[EMA
From: Aurelien Jarno <[EMAIL PROTECTED]>
The writeback fixes (02c03a326a5df825cc01de426f72e160db2b9538) let
some dead code in the cmpxchg instruction emulation. Remove it.
Signed-off-by: Aurelien Jarno <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.
From: Laurent Vivier <[EMAIL PROTECTED]>
... instead of a x86_emulate_ctxt, so that other callers can use it easily.
Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c| 25 +++--
drivers/kvm/x86_emu
From: Rusty Russell <[EMAIL PROTECTED]>
Avi wants the allocations of vcpus centralized again. The easiest way
is to add a "size" arg to kvm_init_arch, and expose the thus-prepared
cache to the modules.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
From: Yang, Sheng <[EMAIL PROTECTED]>
Put cpu feature detecting part in hardware_setup, and stored the vmcs
condition in global variable for further check.
[glommer: fix for some i386-only machines not supporting CR8 load/store
exiting]
Signed-off-by: Sheng Yang <[EMAIL PROTECTED]>
Signed-off-b
From: Rusty Russell <[EMAIL PROTECTED]>
kvm_vm_ioctl_get_dirty_log scans bitmap to see it it's all zero, but
doesn't use that information.
Avi says:
Looks like it was used to guard kvm_mmu_slot_remove_write_access();
optimizing the case where the guest just leaves the screen alone
From: Rusty Russell <[EMAIL PROTECTED]>
load_pdptrs can be handed an invalid cr3, and it should not oops.
This can happen because we injected #gp in set_cr3() after we set
vcpu->cr3 to the invalid value, or from kvm_vcpu_ioctl_set_sregs(), or
memory configuration changes after the guest did set_cr
From: Jeff Dike <[EMAIL PROTECTED]>
Add the hypercall number to kvm_run and initialize it. This changes the ABI,
but as this particular ABI was unusable before this no users are affected.
Signed-off-by: Jeff Dike <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/
From: Rusty Russell <[EMAIL PROTECTED]>
Don't fall through and turn on PAE in this case.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/kvm/
From: Laurent Vivier <[EMAIL PROTECTED]>
... in favor of the more general emulator_{read,write}_*.
Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h | 17 +--
drivers/kvm/kvm_main.c | 74 ++--
From: Rusty Russell <[EMAIL PROTECTED]>
Now we use a kmem cache for allocating vcpus, we can get the 16-byte
alignment required by fxsave & fxrstor instructions, and avoid
manually aligning the buffer.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
From: Rusty Russell <[EMAIL PROTECTED]>
container_of is wonderful, but not casting at all is better. This
patch changes vmx.c's internal functions to pass "struct vcpu_vmx"
instead of "struct kvm_vcpu" and using container_of.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Ki
From: Shaohua Li <[EMAIL PROTECTED]>
gfn_to_page might sleep with swap support. Move it out of the kmap calls.
Signed-off-by: Shaohua Li <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |2 +-
drivers/kvm/kvm_main.c|7 ++--
drivers/kvm/m
From: Yang, Sheng <[EMAIL PROTECTED]>
All the physical CPUs on the board should support the same VMX feature
set. Add check_processor_compatibility to kvm_arch_ops for the consistency
check.
Signed-off-by: Sheng Yang <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/
Right now, the bug is harmless as we never emulate one-byte 0xb6 or 0xb7.
But things may change.
Noted by the mysterious Gabriel C.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/x8
From: Rusty Russell <[EMAIL PROTECTED]>
alloc_vmcs_cpu is already declared (static) above, no need to
redeclare.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff
From: Rusty Russell <[EMAIL PROTECTED]>
sSigned-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 2be
From: Rusty Russell <[EMAIL PROTECTED]>
set_msr_interception() is used by svm to set up which MSRs should be
intercepted. It can only fail if someone has changed the code to try
to intercept an MSR without updating the array of ranges.
The return value is ignored anyway: it should just BUG() if
From: Rusty Russell <[EMAIL PROTECTED]>
For some reason, mark_page_dirty open-codes __gfn_to_memslot().
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c | 24 +++-
1 files changed, 7 insertions(+), 17
From: Rusty Russell <[EMAIL PROTECTED]>
We use kfree in svm.c and vmx.c, and this works, but it could break at
any time. kfree() is supposed to match up with kmalloc().
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/svm.c |4 ++
From: Rusty Russell <[EMAIL PROTECTED]>
This patch converts the vcpus array in "struct kvm" to a pointer
array, and changes the "vcpu_create" and "vcpu_setup" hooks into one
"vcpu_create" call which does the allocation and initialization of the
vcpu (calling back into the kvm_vcpu_init core helper
From: Rusty Russell <[EMAIL PROTECTED]>
Now that kvm generally runs with preemption enabled, we need to protect
the fpu intialization sequence.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |3 +++
1 files changed, 3
From: Gabriel C <[EMAIL PROTECTED]>
move_msr_up() is used only on X86_64 and generates a warning on !X86_64
Signed-off-by: Gabriel Craciunescu <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff
From: Li, Xin B <[EMAIL PROTECTED]>
Remove a duplicated ia32e mode VM Entry control definition and use the
proper one.
Signed-off-by: Xin Li <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |8
drivers/kvm/vmx.h |3 ---
2 files changed, 4 i
Current kvm disables preemption while the new virtualization registers are
in use. This of course is not very good for latency sensitive workloads (one
use of virtualization is to offload user interface and other latency
insensitive stuff to a container, so that it is easier to analyze the
remaini
From: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 16 ++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x
From: Rusty Russell <[EMAIL PROTECTED]>
container_of is wonderful, but not casting at all is better. This
patch changes svm.c's internal functions to pass "struct vcpu_svm"
instead of "struct kvm_vcpu" and using container_of.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Ki
From: Yang, Sheng <[EMAIL PROTECTED]>
This allows running 64-bit Windows.
Signed-off-by: Sheng Yang <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |3 ++-
include/linux/kvm.h |1 +
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/d
From: Rusty Russell <[EMAIL PROTECTED]>
We shouldn't define stat_set on the debug attributes, since that will
cause silent failure on writing: without a set argument, userspace
will get -EACCESS.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
d
From: Eddie Dong <[EMAIL PROTECTED]>
This patch is to wrap APIC base register and CR8 operation which can
provide a unique API for user level irqchip and kernel irqchip.
This is a preparation of merging lapic/ioapic patch.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi K
From: Laurent Vivier <[EMAIL PROTECTED]>
Split kvm_setup_pio() into two functions, one to setup in/out pio
(kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).
Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm
From: Rusty Russell <[EMAIL PROTECTED]>
Devices don't need open or release functions.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c | 12
1 files changed, 0 insertions(+), 12 deletions(-)
diff --git a/dri
From: Laurent Vivier <[EMAIL PROTECTED]>
Both vmx and svm decode the I/O instructions, and both botch the job,
requiring the instruction prefixes to be fetched in order to completely
decode the instruction.
So, if we see a string I/O instruction, use the x86 emulator to decode it,
as it already h
From: Rusty Russell <[EMAIL PROTECTED]>
There are several places where hardcoded numbers are used in place of
the easily-available constant, which is poor form.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |2 +-
dr
From: Izik Eidus <[EMAIL PROTECTED]>
Signed-off-by: Izik Eidus <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index cd999c0..b400668 100644
---
From: Laurent Vivier <[EMAIL PROTECTED]>
Line 1809 of kvm_main.c is useless, value is overwritten in line 1815:
1809 now = min(count, PAGE_SIZE / size);
1810
1811 if (!down)
1812 in_page = PAGE_SIZE - offset_in_page(address);
1813 else
1814
From: Eddie Dong <[EMAIL PROTECTED]>
pio operation and IRQ_LINE kvm_vm_ioctl is not kvm->lock
protected. Add lock to same with IOAPIC MMIO operations.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |6 ++
1
From: Nitin A Kamble <[EMAIL PROTECTED]>
Implement emulation of instruction
and al imm8 (opcode 0x24)
and ax/eax imm16/imm32 (opcode 0x25)
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 21
From: He, Qing <[EMAIL PROTECTED]>
vcpu->irq_pending is saved in get/set_sreg IOCTL, but when in-kernel
local APIC is used, doing this may occasionally overwrite vcpu->apic to
an invalid value, as in the vm restore path.
Signed-off-by: Qing He <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c | 2
From: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 16 +++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x
From: Izik Eidus <[EMAIL PROTECTED]>
Needed for mapping memory at 4GB.
Signed-off-by: Izik Eidus <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
Pointed out by Rusty Russell.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index cf895aa..7439b34 100644
--- a/drivers/kvm/x86_emulate.c
++
From: Eddie Dong <[EMAIL PROTECTED]>
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/Makefile |2 +-
drivers/kvm/i8259.c| 442
drivers/kvm/irq.c | 61 +++
dri
From: Rusty Russell <[EMAIL PROTECTED]>
All guest-invokable printks should be ratelimited to prevent malicious
guests from flooding logs. This is a start.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |8
d
From: He, Qing <[EMAIL PROTECTED]>
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |1 +
drivers/kvm/lapic.c | 33 -
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/drivers/kvm/k
From: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
i
From: Eddie Dong <[EMAIL PROTECTED]>
This reduces overhead by accessing cachelines from the wrong node, as well
as simplifying locking.
[Qing: fix for inactive or expired one-shot timer]
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-b
From: Qing He <[EMAIL PROTECTED]>
This patch changes the PIC interrupts delivery. Now it is only delivered
to vcpu0 when either condition is met (on vcpu0):
1. local APIC is hardware disabled
2. LVT0 is unmasked and configured to delivery mode ExtInt
It fixes the 2x faster wall clock on x86_6
From: Eddie Dong <[EMAIL PROTECTED]>
Add in kernel irqchip save/restore support for pending vectors.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |2 ++
drivers/kvm/kv
From: Eddie Dong <[EMAIL PROTECTED]>
APIC timer IRQ is set every time when a certain period
expires at host time, but the guest may be descheduled
at that time and thus the irq be overwritten by later fire.
This patch keep track of firing irq numbers and decrease
only when the IRQ is injected to g
From: Laurent Vivier <[EMAIL PROTECTED]>
vmx_load_host_state() bundles fs, gs, ldt, and tss reloading into
one in the hope that it is infrequent. With smp guests, fs reloading is
frequent due to fs being used by threads.
Unbundle the reloads so reduce expensive gs reloads.
Signed-off-by: Laurent
From: Rusty Russell <[EMAIL PROTECTED]>
SVM gets the DB and L bits for the cs by decoding the segment. This
is in fact the completely generic code, so hoist it for kvm-lite to use.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm
From: He, Qing <[EMAIL PROTECTED]>
This patch adds two new ioctls to dump and write kernel irqchips for
save/restore and live migration. PIC s/r and l/m is implemented in this
patch.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Av
From: Rusty Russell <[EMAIL PROTECTED]>
invlpg shouldn't fetch the "src" address, since it may not be valid,
however SVM's "solution" which neuters emulation of all group 7
instruction is horrible and breaks kvm-lite. The simplest fix is to
put a special check in for invlpg.
Signed-off-by: Rusty
From: Amit Shah <[EMAIL PROTECTED]>
This was missed when moving stuff around in fbc4f2e
Fixes Solaris guests and bug #1773613
Signed-off-by: Amit Shah <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |1 +
1 files changed, 1 insertions(+), 0 delet
From: He, Qing <[EMAIL PROTECTED]>
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index f4cbd4f..a25dfc9
From: Rusty Russell <[EMAIL PROTECTED]>
We don't update the vcpu control registers in various places. We
should do so.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm_main.c |8
1 files changed, 4 insertions(+), 4 d
From: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |1 -
drivers/kvm/svm.c |6 --
2 files changed, 0 insertions(+), 7 deletions(-)
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kv
From: Gregory Haskins <[EMAIL PROTECTED]>
struct kvm_vcpu has vmx-specific members; remove them to a private structure.
Signed-off-by: Gregory Haskins <[EMAIL PROTECTED]>
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |
From: Eddie Dong <[EMAIL PROTECTED]>
This patch adds a new vcpu-based IOCTL to save and restore the local
apic registers for a single vcpu. The kernel only copies the apic page as
a whole, extraction of registers is left to userspace side. On restore, the
APIC timer is restarted from the initial c
From: Yang, Sheng <[EMAIL PROTECTED]>
This patch enables TPR shadow of VMX on CR8 access. 64bit Windows using
CR8 access TPR frequently. The TPR shadow can improve the performance of
access TPR by not causing vmexit.
Signed-off-by: Sheng Yang <[EMAIL PROTECTED]>
Signed-off-by: Yaozu (Eddie) Dong
From: He, Qing <[EMAIL PROTECTED]>
This patch adds support for in-kernel ioapic save and restore (to
and from userspace). It uses the same get/set_irqchip ioctl as
in-kernel PIC.
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Ki
From: Christian Ehrhardt <[EMAIL PROTECTED]>
This patch just renames the current (misnamed) _arch namings to _x86 to
ensure better readability when a real arch layer takes place.
Signed-off-by: Christian Ehrhardt <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/k
From: Yang, Sheng <[EMAIL PROTECTED]>
This patch mainly imports some constants and rename two exist constants
of vmcs according to IA32 SDM.
It also adds two constants to indicate Lock bit and Enable bit in
MSR_IA32_FEATURE_CONTROL, and replace the hardcode _5_ with these two
bits.
Signed-off-by
From: He, Qing <[EMAIL PROTECTED]>
According to Intel Software Developer's Manual, Vol. 3B, Appendix H.4.2,
exit qualification should be of natural width. However, current code
uses u64 as the data type for this register, which occasionally
introduces invalid value to VMExit handling logics. This
From: Nitin A Kamble <[EMAIL PROTECTED]>
Implement emulation of instruction:
popf
opcode: 0x9d
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |5 -
1 files changed, 4 insertions(+), 1 deletions(-)
di
From: Nitin A Kamble <[EMAIL PROTECTED]>
Implement the instruction
push imm8
opcode: 0x6a
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 17 ++---
1 files changed, 14 insertions(+), 3
From: Nitin A Kamble <[EMAIL PROTECTED]>
Some operand fetches are less than the machine word size and can result in
stale bits if used together with operands of different sizes.
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_em
From: Eddie Dong <[EMAIL PROTECTED]>
Because lightweight exits (exits which don't involve userspace) are many
times faster than heavyweight exits, it makes sense to emulate high usage
devices in the kernel. The local APIC is one such device, especially for
Windows and for SMP, so we add an APIC m
From: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 99 ++---
1 files changed, 49 insertions(+), 50 deletions(-)
diff --git a/drivers/kvm
Report failed opcodes from all locations.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |1 +
drivers/kvm/kvm_main.c | 16
drivers/kvm/svm.c |2 +-
drivers/kvm/vmx.c |2 +-
4 files changed, 11 insertions(+), 10 deletions(-)
diff
From: Eddie Dong <[EMAIL PROTECTED]>
This allows in-kernel host-side device drivers to raise guest interrupts
without going to userspace.
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/Makefile |2 +-
drivers/kvm/ioapic.c
From: Eddie Dong <[EMAIL PROTECTED]>
By sleeping in the kernel when hlt is executed, we simplify the in-kernel
guest interrupt path considerably.
Signed-off-by: Gregory Haskins <[EMAIL PROTECTED]>
Signed-off-by: Yaozu (Eddie) Dong <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
From: Nitin A Kamble <[EMAIL PROTECTED]>
Implement emulation of instruction
lea r16/r32, m
opcode: 0x8d:
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c |5 -
1 files changed, 4 insertions(+), 1 deleti
From: Nitin A Kamble <[EMAIL PROTECTED]>
Implement emulation of instruction
pushf
opcode: 0x9c
Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/x86_emulate.c | 11 +--
1 files changed, 9 insertions(+), 2 del
From: He, Qing <[EMAIL PROTECTED]>
This patch enables INIT/SIPI handling using in-kernel APIC by
introducing a ->mp_state field to emulate the SMP state transition.
[avi: remove smp_processor_id() warning]
Signed-off-by: Qing He <[EMAIL PROTECTED]>
Signed-off-by: Xin Li <[EMAIL PROTECTED]>
Signe
From: Laurent Vivier <[EMAIL PROTECTED]>
The mutex->splinlock convertion alllows us to make some code simplifications.
As we can keep the lock longer, we don't have to release it and then
have to check if the environment has not been modified before re-taking it. We
can remove kvm->busy and kvm->m
This will help moving the main loop to subarch independent code.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/vmx.c | 19 ++-
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index 57a6055..713f78a 100644
---
This simplifies adding new code as well as reducing overall code size.
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
drivers/kvm/kvm.h |9 +++-
drivers/kvm/kvm_main.c | 124 +-
drivers/kvm/svm.c | 142 +---
Before preempt notifiers, kvm needed to allocate memory with GFP_NOWAIT so
as not to have to enable preemption and take a heavyweight exit. On oom, we'd
fall back to a GFP_KERNEL allocation.
With preemption notifiers, we can do a GFP_KERNEL allocation, and perform
the heavyweight exit only if the
1 - 100 of 151 matches
Mail list logo