2008-07-20 11:44:20

by Avi Kivity

[permalink] [raw]
Subject: [GIT PULL] KVM Updates for the 2.6.27 merge window

Linus, please pull from the repo and branch:

git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git kvm-updates-2.6.27

to receive the 2.6.27 merge window kvm updates. Changes include mmio
coalescing, x86 emulator updates, nmi support, mtrr emualtion, and
some kvmtrace work.

Shortlog, diffstat:

Adrian Bunk (1):
x86: KVM guest: make kvm_smp_prepare_boot_cpu() static

Anthony Liguori (1):
KVM: Handle vma regions with no backing page

Aurelien Jarno (1):
KVM: PIT: support mode 3

Avi Kivity (26):
KVM: VMX: Trivial vmcs_write64() code simplification
KVM: MMU: Fix false flooding when a pte points to page table
KVM: Handle virtualization instruction #UD faults during reboot
KVM: VMX: Add list of potentially locally cached vcpus
KVM: Remove decache_vcpus_on_cpu() and related callbacks
KVM: Remove unnecessary ->decache_regs() call
KVM: Order segment register constants in the same way as cpu operand encoding
KVM: MTRR support
KVM: MMU: Optimize prefetch_page()
KVM: x86 emulator: simplify push imm8 emulation
KVM: x86 emulator: implement 'push imm' (opcode 0x68)
KVM: MMU: Move nonpaging_prefetch_page()
KVM: MMU: Avoid page prefetch on SVM
KVM: Use printk_rlimit() instead of reporting emulation failures just once
KVM: x86 emulator: handle undecoded rex.b with r/m = 5 in certain cases
KVM: x86 emulator: simplify sib decoding
KVM: x86 emulator: simplify r/m decoding
KVM: x86 emulator: simplify rip relative decoding
KVM: x86 emulator: avoid segment base adjust for lea
KVM: x86 emulator: lazily evaluate segment registers
KVM: MMU: When debug is enabled, make it a run-time parameter
KVM: MMU: Fix printk format
KVM: Apply the kernel sigmask to vcpus blocked due to being uninitialized
KVM: Prefix some x86 low level function with kvm_, to avoid namespace issues
KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts
KVM: Adjust smp_call_function_mask() callers to new requirements

Ben-Ami Yassour (1):
KVM: check injected pic irq within valid pic irqs

Carsten Otte (2):
KVM: s390: dont allocate dirty bitmap
KVM: Fix memory leak on guest exit

Chris Lalancette (2):
KVM: SVM: Fake MSR_K7 performance counters
KVM: VMX: Fake emulate Intel perfctr MSRs

Christian Borntraeger (3):
KVM: remove long -> void *user -> long cast
KVM: s390: Set guest storage limit and offset to sane values
KVM: s390: rename private structures

Glauber Costa (2):
KVM: Do not calculate linear rip in emulation failure report
KVM: x86 emulator: emulate clflush

Guillaume Thouvenin (6):
KVM: Prefixes segment functions that will be exported with "kvm_"
KVM: x86 emulator: Update c->dst.bytes in decode instruction
KVM: x86 emulator: add support for jmp far 0xea
KVM: x86 emulator: adds support to mov r,imm (opcode 0xb8) instruction
KVM: x86 emulator: Add support for mov seg, r (0x8e) instruction
KVM: x86 emulator: Add support for mov r, sreg (0x8c) instruction

Harvey Harrison (1):
KVM: add statics were possible, function definition in lapic.h

Joerg Roedel (7):
KVM: VMX: move APIC_ACCESS trace entry to generic code
KVM: SVM: implement dedicated NMI exit handler
KVM: SVM: implement dedicated INTR exit handler
KVM: add missing kvmtrace bits
KVM: SVM: add missing kvmtrace markers
KVM: SVM: add tracing support for TDP page faults
KVM: SVM: fix suspend/resume support

Laurent Vivier (5):
KVM: kvm_io_device: extend in_range() to manage len and write attribute
KVM: Add coalesced MMIO support (common part)
KVM: Add coalesced MMIO support (x86 part)
KVM: Add coalesced MMIO support (powerpc part)
KVM: Add coalesced MMIO support (ia64 part)

Marcelo Tosatti (5):
KVM: only abort guest entry if timer count goes from 0->1
KVM: move slots_lock acquision down to vapic_exit
KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held
KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction
KVM: MMU: improve invalid shadow root page handling

Mohammed Gamal (2):
KVM: x86 emulator: emulate nop and xchg reg, acc (opcodes 0x90 - 0x97)
KVM: x86 emulator: Fix HLT instruction

Sheng Yang (4):
KVM: IOAPIC/LAPIC: Enable NMI support
KVM: VMX: Enable NMI with in-kernel irqchip
KVM: VMX: Fix a wrong usage of vmcs_config
KVM: VMX: Add ept_sync_context in flush_tlb

Tan, Li (1):
KVM: Support mixed endian machines

arch/ia64/kvm/Makefile | 3 +-
arch/ia64/kvm/kvm-ia64.c | 20 +--
arch/powerpc/kvm/Makefile | 2 +-
arch/powerpc/kvm/powerpc.c | 11 +-
arch/s390/kvm/interrupt.c | 32 ++--
arch/s390/kvm/kvm-s390.c | 21 ++-
arch/s390/kvm/priv.c | 2 +-
arch/s390/kvm/sigp.c | 20 ++--
arch/x86/kernel/kvmclock.c | 2 +-
arch/x86/kvm/Makefile | 3 +-
arch/x86/kvm/i8254.c | 24 ++--
arch/x86/kvm/i8259.c | 9 +-
arch/x86/kvm/irq.h | 2 +
arch/x86/kvm/lapic.c | 14 ++-
arch/x86/kvm/lapic.h | 1 +
arch/x86/kvm/mmu.c | 62 ++++++---
arch/x86/kvm/mmu.h | 3 +-
arch/x86/kvm/paging_tmpl.h | 28 ++--
arch/x86/kvm/svm.c | 131 +++++++++++-----
arch/x86/kvm/vmx.c | 230 +++++++++++++++++++++-------
arch/x86/kvm/vmx.h | 12 ++-
arch/x86/kvm/x86.c | 299 ++++++++++++++++++++-----------------
arch/x86/kvm/x86_emulate.c | 257 ++++++++++++++++++++------------
include/asm-ia64/kvm_host.h | 3 +
include/asm-powerpc/kvm_host.h | 2 +
include/asm-s390/kvm_host.h | 36 +++---
include/asm-x86/kvm.h | 1 +
include/asm-x86/kvm_host.h | 69 +++++++--
include/asm-x86/kvm_x86_emulate.h | 11 +-
include/linux/kvm.h | 33 ++++-
include/linux/kvm_host.h | 11 +-
virt/kvm/coalesced_mmio.c | 156 +++++++++++++++++++
virt/kvm/coalesced_mmio.h | 23 +++
virt/kvm/ioapic.c | 23 +++-
virt/kvm/iodev.h | 8 +-
virt/kvm/kvm_main.c | 153 ++++++++++++++++---
virt/kvm/kvm_trace.c | 18 ++-
37 files changed, 1215 insertions(+), 520 deletions(-)
create mode 100644 virt/kvm/coalesced_mmio.c
create mode 100644 virt/kvm/coalesced_mmio.h


2008-07-21 09:10:21

by Ingo Molnar

[permalink] [raw]
Subject: [patch] KVM: fix exception entry / build bug, on 64-bit


hi Avi,

* Avi Kivity <[email protected]> wrote:

> KVM: Handle virtualization instruction #UD faults during reboot

-tip testing found a build failure on 64-bit x86, caused by this commit.
Find the fix below.

Thanks,

Ingo

-------------------->
commit 33a37eb411d193851c334060780ab834ba534292
Author: Ingo Molnar <[email protected]>
Date: Mon Jul 21 10:57:15 2008 +0200

KVM: fix exception entry / build bug, on 64-bit

-tip testing found this build bug:

arch/x86/kvm/built-in.o:(.text.fixup+0x1): relocation truncated to fit: R_X86_64_32 against `.text'
arch/x86/kvm/built-in.o:(.text.fixup+0xb): relocation truncated to fit: R_X86_64_32 against `.text'
arch/x86/kvm/built-in.o:(.text.fixup+0x15): relocation truncated to fit: R_X86_64_32 against `.text'
arch/x86/kvm/built-in.o:(.text.fixup+0x1f): relocation truncated to fit: R_X86_64_32 against `.text'
arch/x86/kvm/built-in.o:(.text.fixup+0x29): relocation truncated to fit: R_X86_64_32 against `.text'

Introduced by commit 4ecac3fd. The problem is that 'push' will default
to 32-bit, which is not wide enough as a fixup address. (and which would
crash on any real fixup event even if it was wide enough)

Introduce KVM_EX_PUSH to get the proper address push width on 64-bit too.

Signed-off-by: Ingo Molnar <[email protected]>
---
include/asm-x86/kvm_host.h | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
index f995783..fdde0be 100644
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -703,9 +703,11 @@ enum {
vcpu, 0, 0, 0, 0, 0, 0)

#ifdef CONFIG_64BIT
-#define KVM_EX_ENTRY ".quad"
+# define KVM_EX_ENTRY ".quad"
+# define KVM_EX_PUSH "pushq"
#else
-#define KVM_EX_ENTRY ".long"
+# define KVM_EX_ENTRY ".long"
+# define KVM_EX_PUSH "pushl"
#endif

/*
@@ -719,7 +721,7 @@ asmlinkage void kvm_handle_fault_on_reboot(void);
"666: " insn "\n\t" \
".pushsection .text.fixup, \"ax\" \n" \
"667: \n\t" \
- "push $666b \n\t" \
+ KVM_EX_PUSH " $666b \n\t" \
"jmp kvm_handle_fault_on_reboot \n\t" \
".popsection \n\t" \
".pushsection __ex_table, \"a\" \n\t" \

2008-07-21 09:36:32

by Avi Kivity

[permalink] [raw]
Subject: Re: [patch] KVM: fix exception entry / build bug, on 64-bit

Ingo Molnar wrote:
> hi Avi,
>
> * Avi Kivity <[email protected]> wrote:
>
>
>> KVM: Handle virtualization instruction #UD faults during reboot
>>
>
> -tip testing found a build failure on 64-bit x86, caused by this commit.
> Find the fix below.
>
>

Thanks. Applied this and will push to Linus later on.

--
error compiling committee.c: too many arguments to function