[GIT PULL] KVM updates for the 3.6 merge window

Avi Kivity
2012-07-23T09:12:28Z

Linus, please pull from the repo and tag at:

git://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/kvm-3.6-1

to merge the KVM updates for the 3.5 merge window.

Highlights include
- full big real mode emulation on pre-Westmere Intel hosts (can be disabled
with emulate_invalid_guest_state=0)
- relatively small ppc and s390 updates
- PCID/INVPCID support in guests
- EOI avoidance; 3.6 guests should perform better on 3.6 hosts on interrupt
intensive workloads)
- Lockless write faults during live migration
- EPT accessed/dirty bits support for new Intel processors

----------------------------------------------------------------
Avi Kivity (31):
KVM: ia64: Mark ia64 KVM as BROKEN
Merge branch 'for-upstream' of git://github.com/agraf/linux-2.6 into next
KVM: MMU: Force cr3 reload with two dimensional paging on mov cr3 emulation
KVM: VMX: Return correct CPL during transition to protected mode
KVM: Split cpuid register access from computation
KVM: x86 emulator: change ->get_cpuid() accessor to use the x86 semantics
KVM: x86 emulator: emulate cpuid
KVM: x86 emulator: allow loading null SS in long mode
KVM: x86 emulator: fix LIDT/LGDT in long mode
KVM: VMX: Relax check on unusable segment
KVM: VMX: Limit iterations with emulator_invalid_guest_state
KVM: x86 emulator: emulate LEAVE
KVM: x86 emulator: initialize memop
KVM: Fix SS default ESP/EBP based addressing
KVM: x86 emulator: emulate SGDT/SIDT
KVM: VMX: Fix interrupt exit condition during emulation
KVM: VMX: Continue emulating after batch exhausted
KVM: x86 emulator: emulate LAHF
KVM: x86 emulator: fix byte-sized MOVZX/MOVSX
KVM: x86 emulator: split push logic from push opcode emulation
KVM: x86 emulator: implement ENTER
KVM: VMX: Stop invalid guest state emulation on pending event
KVM: VMX: Improve error reporting during invalid guest state emulation
KVM: x86 emulator: emulate BSWAP
KVM: x86 emulator: emulate LLDT
KVM: x86 emulator: make read_segment_descriptor() return the address
KVM: x86 emulator: make loading TR set the busy bit
KVM: x86 emulator: implement LTR
KVM: VMX: Emulate invalid guest state by default
Merge branch 'for-upstream' of git://github.com/agraf/linux-2.6 into next
x86, hyper: fix build with !CONFIG_KVM_GUEST

Bharat Bhushan (5):
KVM: PPC: booke: Added DECAR support
KVM: PPC: Not optimizing MSR_CE and MSR_ME with paravirt.
booke/bookehv: Add host crit-watchdog exception support
booke: Added crit/mc exception handler for e500v2
KVM: PPC: Critical interrupt emulation support

Christian Borntraeger (2):
KVM: s390: Change maintainer
KVM: s390: Set CPU in stopped state on initial cpu reset

Christoffer Dall (2):
KVM: Cleanup the kvm_print functions and introduce pr_XX wrappers
KVM: Introduce __KVM_HAVE_IRQ_LINE

Cornelia Huck (2):
KVM: trace events: update list of exit reasons
KVM: s390: Fix sigp sense handling.

Gleb Natapov (1):
KVM: MMU: do not iterate over all VMs in mmu_shrink()

Guo Chao (1):
KVM: VMX: code clean for vmx_init()

Heiko Carstens (5):
s390/smp: remove redundant check
s390/smp/kvm: unifiy sigp definitions
KVM: s390: fix sigp sense running condition code handling
KVM: s390: fix sigp set prefix status stored cases
KVM: s390: use sigp condition code defines

Heinz Graalfs (1):
KVM: s390: Perform early event mask processing during boot

Liu Yu-B13201 (1):
KVM: PPC: Factor out guest epapr initialization

Mao, Junjie (1):
KVM: VMX: Implement PCID/INVPCID for guests with EPT

Marc Zyngier (2):
KVM: use KVM_CAP_IRQ_ROUTING to protect the routing related code
KVM: Guard mmu_notifier specific code with CONFIG_MMU_NOTIFIER

Michael S. Tsirkin (14):
KVM: disable uninitialized var warning
KVM: document lapic regs field
KVM: optimize ISR lookups
KVM guest: guest side for eoi avoidance
x86, bitops: note on __test_and_clear_bit atomicity
KVM: eoi msi documentation
KVM: only sync when attention bits set
KVM: rearrange injection cancelling code
KVM: host side for eoi optimization
apic: fix kvm build on UP without IOAPIC
apic: add apic_set_eoi_write for PV use
KVM guest: switch to apic_set_eoi_write, apic_write
Revert "apic: fix kvm build on UP without IOAPIC"
KVM: fix race with level interrupts

Mihai Caraman (3):
KVM: PPC: bookehv: Add ESR flag to Data Storage Interrupt
KVM: PPC64: booke: Set interrupt computation mode for 64-bit host
KVM: PPC: e500mc: Fix tlbilx emulation for 64-bit guests

Orit Wasserman (1):
KVM: VMX: Fix KVM_SET_SREGS with big real mode segments

Paul Mackerras (1):
KVM: PPC: Book3S HV: Make the guest hash table size configurable

Prarit Bhargava (1):
KVM: Add x86_hyper_kvm to complete detect_hypervisor_platform check

Rik van Riel (1):
KVM: handle last_boosted_vcpu = 0 case

Takuya Yoshikawa (4):
KVM: Separate out dirty_bitmap allocation code as kvm_kvzalloc()
KVM: Avoid wasting pages for small lpage_info arrays
KVM: MMU: Remove unused parameter from mmu_memory_cache_alloc()
KVM: Use kvm_kvfree() to free memory allocated by kvm_kvzalloc()

Varun Sethi (1):
KVM: PPC: bookehv64: Add support for std/ld emulation.

Xiao Guangrong (10):
KVM: MMU: return bool in __rmap_write_protect
KVM: MMU: abstract spte write-protect
KVM: MMU: cleanup spte_write_protect
KVM: VMX: export PFEC.P bit on ept
KVM: MMU: fold tlb flush judgement into mmu_spte_update
KVM: MMU: introduce SPTE_MMU_WRITEABLE bit
KVM: MMU: fast path of handling guest page fault
KVM: MMU: trace fast page fault
KVM: MMU: fix kvm_mmu_pagetable_walk tracepoint
KVM: MMU: document mmu-lock and fast page fault

Xudong Hao (5):
KVM: VMX: Add EPT A/D bits definitions
KVM: VMX: Add parameter to control A/D bits support, default is on
KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit in EPTP
KVM: VMX: Use EPT Access bit in response to memory notifiers
KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT Dirty bit

Documentation/virtual/kvm/api.txt | 36 ++++
Documentation/virtual/kvm/locking.txt | 130 ++++++++++-
Documentation/virtual/kvm/msr.txt | 33 +++
Documentation/virtual/kvm/ppc-pv.txt | 2 -
MAINTAINERS | 2 +-
arch/ia64/include/asm/kvm.h | 1 +
arch/ia64/kvm/Kconfig | 1 +
arch/powerpc/include/asm/epapr_hcalls.h | 2 +
arch/powerpc/include/asm/hw_irq.h | 2 +
arch/powerpc/include/asm/kvm_book3s_64.h | 7 +-
arch/powerpc/include/asm/kvm_host.h | 6 +
arch/powerpc/include/asm/kvm_ppc.h | 3 +-
arch/powerpc/kernel/Makefile | 1 +
arch/powerpc/kernel/epapr_hcalls.S | 25 +++
arch/powerpc/kernel/epapr_paravirt.c | 52 +++++
arch/powerpc/kernel/kvm.c | 28 +--
arch/powerpc/kernel/kvm_emul.S | 12 +-
arch/powerpc/kvm/book3s_64_mmu_hv.c | 123 ++++++++---
arch/powerpc/kvm/book3s_hv.c | 40 ++--
arch/powerpc/kvm/book3s_hv_builtin.c | 5 +-
arch/powerpc/kvm/book3s_hv_rm_mmu.c | 15 +-
arch/powerpc/kvm/booke.c | 26 +++
arch/powerpc/kvm/booke_emulate.c | 28 +++
arch/powerpc/kvm/booke_interrupts.S | 55 +++--
arch/powerpc/kvm/bookehv_interrupts.S | 2 +-
arch/powerpc/kvm/e500_emulate.c | 3 +
arch/powerpc/kvm/e500mc.c | 8 +-
arch/powerpc/kvm/emulate.c | 16 ++
arch/powerpc/kvm/powerpc.c | 18 ++
arch/powerpc/platforms/Kconfig | 9 +
arch/s390/include/asm/sclp.h | 2 +
arch/s390/include/asm/sigp.h | 32 +++
arch/s390/kernel/setup.c | 12 +-
arch/s390/kernel/smp.c | 76 +++----
arch/s390/kvm/kvm-s390.c | 1 +
arch/s390/kvm/sigp.c | 117 +++++-----
arch/x86/include/asm/apic.h | 3 +
arch/x86/include/asm/bitops.h | 7 +
arch/x86/include/asm/hypervisor.h | 1 +
arch/x86/include/asm/kvm.h | 1 +
arch/x86/include/asm/kvm_emulate.h | 6 +-
arch/x86/include/asm/kvm_host.h | 31 ++-
arch/x86/include/asm/kvm_para.h | 7 +
arch/x86/include/asm/processor-flags.h | 2 +
arch/x86/include/asm/vmx.h | 6 +
arch/x86/kernel/apic/apic.c | 17 ++
arch/x86/kernel/cpu/hypervisor.c | 3 +
arch/x86/kernel/kvm.c | 64 +++++-
arch/x86/kvm/cpuid.c | 46 ++--
arch/x86/kvm/cpuid.h | 9 +
arch/x86/kvm/emulate.c | 273 ++++++++++++++++++-----
arch/x86/kvm/i8259.c | 17 +-
arch/x86/kvm/lapic.c | 194 ++++++++++++++++-
arch/x86/kvm/lapic.h | 11 +
arch/x86/kvm/mmu.c | 359 ++++++++++++++++++++++---------
arch/x86/kvm/mmutrace.h | 45 +++-
arch/x86/kvm/paging_tmpl.h | 3 +-
arch/x86/kvm/svm.c | 12 +-
arch/x86/kvm/trace.h | 34 +++
arch/x86/kvm/vmx.c | 189 ++++++++++++----
arch/x86/kvm/x86.c | 123 ++++++-----
drivers/s390/char/sclp.c | 10 -
drivers/s390/char/sclp.h | 10 +
drivers/s390/char/sclp_cmd.c | 38 ++++
drivers/s390/kvm/kvm_virtio.c | 3 +-
include/linux/kvm.h | 3 +
include/linux/kvm_host.h | 27 ++-
include/trace/events/kvm.h | 7 +-
virt/kvm/ioapic.c | 19 +-
virt/kvm/ioapic.h | 4 +-
virt/kvm/irq_comm.c | 31 +--
virt/kvm/kvm_main.c | 36 ++--
72 files changed, 1979 insertions(+), 603 deletions(-)
create mode 100644 arch/powerpc/kernel/epapr_hcalls.S
create mode 100644 arch/powerpc/kernel/epapr_paravirt.c
create mode 100644 arch/s390/include/asm/sigp.h

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