[GIT PULL] First batch of KVM changes for 4.2

From: Paolo Bonzini
Date: Tue Jun 23 2015 - 12:50:31 EST


The following changes since commit c447e76b4cabb49ddae8e49c5758f031f35d55fb:

kvm/fpu: Enable eager restore kvm FPU for MPX (2015-05-20 12:30:26 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

for you to fetch changes up to f2ae45edbca7ba5324eef01719ede0151dc5cead:

KVM: s390: clear floating interrupt bitmap and parameters (2015-06-23 17:02:39 +0200)

The bulk of the changes here is for x86. And for once it's not
for silicon that no one owns: these are really new features for

* ARM: several features are in progress but missed the 4.2 deadline.
So here is just a smattering of bug fixes, plus enabling the VFIO

* s390: Some fixes/refactorings/optimizations, plus support for
2GB pages.

* x86: 1) host and guest support for marking kvmclock as a stable
scheduler clock. 2) support for write combining. 3) support for
system management mode, needed for secure boot in guests. 4) a bunch
of cleanups required for 2+3. 5) support for virtualized performance
counters on AMD; 6) legacy PCI device assignment is deprecated and
defaults to "n" in Kconfig; VFIO replaces it. On top of this there are
also bug fixes and eager FPU context loading for FPU-heavy guests.

* Common code: Support for multiple address spaces; for now it is
used only for x86 SMM but the s390 folks also have plans.

There are some x86 conflicts, one with the rc8 pull request and
the rest with Ingo's FPU rework.

Alex BennÃe (1):
KVM: arm64: fix misleading comments in save/restore

Andre Przywara (1):
KVM: arm64: add active register handling to GICv3 emulation as well

Andrew Morton (1):
arch/x86/kvm/mmu.c: work around gcc-4.4.4 bug

Bandan Das (1):
KVM: nSVM: Check for NRIPS support before updating control field

Christian Borntraeger (5):
KVM: provide irq_unsafe kvm_guest_{enter|exit}
KVM: arm/mips/x86/power use __kvm_guest_{enter|exit}
KVM: s390: optimize round trip time in request handling
KVM: s390: make exit_sie_sync more robust
KVM: s390: provide functions for blocking all CPUs

Christoffer Dall (1):
arm/arm64: KVM: Properly account for guest CPU time

David Hildenbrand (5):
KVM: s390: fix external call injection without sigp interpretation
KVM: s390: factor out and optimize floating irq VCPU kick
KVM: s390: drop handling of interception code 12
KVM: s390: call exit_sie() directly on vcpu block/request
KVM: s390: introduce KMSG_COMPONENT for kvm-s390

Firo Yang (1):
ARM: KVM: Remove pointless void pointer cast

Guenther Hutzl (2):
KVM: s390: make EDAT1 depend on host support
KVM: s390: Enable guest EDAT2 support

Heiko Carstens (1):
KVM: remove pointless cpu hotplug messages

James Sullivan (2):
kvm: x86: Extended struct kvm_lapic_irq with msi_redir_hint for MSI delivery
kvm: x86: Deliver MSI IRQ to only lowest prio cpu if msi_redir_hint is true

Jan Kiszka (2):
KVM: nVMX: Fix host crash when loading MSRs with userspace irqchip
KVM: x86: Allow ARAT CPU feature

Jens Freimann (2):
KVM: s390: optimize interrupt handling round trip time
KVM: s390: clear floating interrupt bitmap and parameters

Joerg Roedel (1):
kvm: irqchip: Break up high order allocations of kvm_irq_routing_table

Julia Lawall (1):
KVM: x86: drop unneeded null test

Kevin Mulvey (2):
KVM: fix checkpatch.pl errors in kvm/async_pf.h
KVM: fix checkpatch.pl errors in kvm/coalesced_mmio.h

Kim Phillips (1):
KVM: arm/arm64: Enable the KVM-VFIO device

Lorenzo Pieralisi (1):
ARM: kvm: psci: fix handling of unimplemented functions

Luiz Capitulino (2):
kvmclock: set scheduler clock stable
x86: kvmclock: set scheduler clock stable

Marc Zyngier (5):
arm: KVM: force execution of HCPTR access on VM exit
KVM: arm: vgic: Drop useless Group0 warning
arm/arm64: KVM: vgic: Do not save GICH_HCR / ICH_HCR_EL2
KVM: arm/arm64: vgic: Avoid injecting reserved IRQ numbers
KVM: arm/arm64: vgic: Remove useless arm-gic.h #include

Marcelo Tosatti (4):
x86: kvmclock: drop rdtsc_barrier()
KVM: x86: add module parameter to disable periodic kvmclock sync
x86: kvmclock: add flag to indicate pvclock counts from zero
KVM: x86: zero kvmclock_offset when vcpu0 initializes kvmclock system MSR

Nadav Amit (6):
KVM: x86: Support for disabling quirks
KVM: x86: INIT and reset sequences are different
KVM: x86: Call-far should not be emulated as stack op
KVM: x86: Fix DR7 mask on task-switch while debugging
KVM: x86: Fix update RCX/RDI/RSI on REP-string
KVM: x86: Fix zero iterations REP-string

Nicholas Krause (1):
kvm: x86: Make functions that have no external callers static

Paolo Bonzini (38):
KVM: booke: use __kvm_guest_exit
KVM: x86: tweak types of fields in kvm_lapic_irq
KVM: x86: dump VMCS on invalid entry
KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages
Merge tag 'kvm-s390-next-20150508' of git://git.kernel.org/.../kvms390/linux into HEAD
Revert "kvmclock: set scheduler clock stable"
KVM: mips: use id_to_memslot correctly
KVM: export __gfn_to_pfn_memslot, drop gfn_to_pfn_async
Merge branch 'kvm-master' into kvm-next
KVM: introduce kvm_alloc/free_memslots
KVM: use kvm_memslots whenever possible
KVM: const-ify uses of struct kvm_userspace_memory_region
KVM: add memslots argument to kvm_arch_memslots_updated
KVM: add "new" argument to kvm_arch_commit_memory_region
KVM: pass kvm_memory_slot to gfn_to_page_many_atomic
KVM: remove __gfn_to_pfn
KVM: x86: pass struct kvm_mmu_page to account/unaccount_shadowed
KVM: remove unused argument from mark_page_dirty_in_slot
Merge tag 'kvm-s390-next-20150602' of git://git.kernel.org/.../kvms390/linux into kvm-next
kvm: x86: default legacy PCI device assignment support to "n"
kvm: x86: fix kvm_apic_has_events to check for NULL pointer
KVM: x86: clear hidden CPU state at reset time
KVM: x86: introduce num_emulated_msrs
KVM: x86: pass host_initiated to functions that read MSRs
KVM: x86: pass the whole hflags field to emulator and back
KVM: x86: API changes for SMM support
KVM: x86: stubs for SMM support
KVM: x86: latch INITs while in system management mode
KVM: x86: save/load state on SMM switch
KVM: add vcpu-specific functions to read/write/translate GFNs
KVM: implement multiple address spaces
KVM: x86: pass struct kvm_mmu_page to gfn_to_rmap
KVM: x86: use vcpu-specific functions to read/write/translate GFNs
KVM: x86: work on all available address spaces
KVM: x86: add SMM to the MMU role, support SMRAM address space
KVM: x86: advertise KVM_CAP_X86_SMM
KVM: x86: mark legacy PCI device assignment as deprecated
Merge tag 'kvm-arm-for-4.2' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD

Radim KrÄmÃÅ (4):
KVM: x86: fix initial PAT value
KVM: reuse memslot in kvm_write_guest_page
KVM: x86: use correct APIC ID on x2APIC transition
KVM: x86: preserve x2APIC LDR on INIT

Rik van Riel (1):
kvm,x86: load guest FPU context more eagerly

Tiejun Chen (1):
kvm: remove one useless check extension

Wei Huang (9):
KVM: x86/vPMU: rename a few PMU functions
KVM: x86/vPMU: introduce pmu.h header
KVM: x86/vPMU: use the new macros to go between PMC, PMU and VCPU
KVM: x86/vPMU: whitespace and stylistic adjustments in PMU code
KVM: x86/vPMU: reorder PMU functions
KVM: x86/vPMU: introduce kvm_pmu_msr_idx_to_pmc
KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch
KVM: x86/vPMU: Implement AMD vPMU code for KVM
KVM: x86/vPMU: Enable PMU handling for AMD PERFCTRn and EVNTSELn MSRs

Xiao Guangrong (26):
KVM: MMU: fix smap permission check
KVM: MMU: fix SMAP virtualization
KVM: MMU: introduce for_each_rmap_spte()
KVM: MMU: introduce for_each_slot_rmap_range
KVM: MMU: introduce slot_handle_level_range() and its helpers
KVM: MMU: use slot_handle_level and its helper to clean up the code
KVM: MMU: introduce kvm_zap_rmapp
KVM: MMU: fix decoding cache type from MTRR
KVM: MMU: fix MTRR update
KVM: x86: do not reset mmu if CR0.CD and CR0.NW are changed
KVM: x86: fix CR0.CD virtualization
KVM: x86: move MTRR related code to a separate file
KVM: MTRR: handle MSR_MTRRcap in kvm_mtrr_get_msr
KVM: MTRR: remove mtrr_state.have_fixed
KVM: MTRR: exactly define the size of variable MTRRs
KVM: MTRR: clean up mtrr default type
KVM: MTRR: do not split 64 bits MSR content
KVM: MTRR: improve kvm_mtrr_get_guest_memory_type
KVM: MTRR: introduce fixed_mtrr_segment table
KVM: MTRR: introduce var_mtrr_range
KVM: MTRR: sort variable MTRRs
KVM: MTRR: introduce fixed_mtrr_addr_* functions
KVM: MTRR: introduce mtrr_for_each_mem_type
KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
KVM: MTRR: do not map huge page for non-consistent range

Documentation/virtual/kvm/api.txt | 69 ++-
Documentation/virtual/kvm/mmu.txt | 6 +
arch/arm/kvm/Kconfig | 1 +
arch/arm/kvm/Makefile | 2 +-
arch/arm/kvm/arm.c | 24 +-
arch/arm/kvm/interrupts.S | 10 +-
arch/arm/kvm/interrupts_head.S | 23 +-
arch/arm/kvm/mmu.c | 14 +-
arch/arm/kvm/psci.c | 16 +-
arch/arm64/kvm/Kconfig | 1 +
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/hyp.S | 8 +-
arch/arm64/kvm/vgic-v2-switch.S | 3 -
arch/arm64/kvm/vgic-v3-switch.S | 2 -
arch/mips/include/asm/kvm_host.h | 2 +-
arch/mips/kvm/mips.c | 13 +-
arch/powerpc/include/asm/kvm_book3s_64.h | 2 +-
arch/powerpc/include/asm/kvm_host.h | 2 +-
arch/powerpc/include/asm/kvm_ppc.h | 14 +-
arch/powerpc/kvm/book3s.c | 9 +-
arch/powerpc/kvm/book3s_64_mmu_hv.c | 2 +-
arch/powerpc/kvm/book3s_hv.c | 15 +-
arch/powerpc/kvm/book3s_pr.c | 11 +-
arch/powerpc/kvm/booke.c | 13 +-
arch/powerpc/kvm/powerpc.c | 9 +-
arch/s390/include/asm/kvm_host.h | 6 +-
arch/s390/kernel/entry.S | 2 +-
arch/s390/kvm/intercept.c | 16 -
arch/s390/kvm/interrupt.c | 90 ++--
arch/s390/kvm/kvm-s390.c | 81 ++-
arch/s390/kvm/kvm-s390.h | 25 +-
arch/s390/kvm/priv.c | 8 +-
arch/x86/include/asm/kvm_emulate.h | 9 +-
arch/x86/include/asm/kvm_host.h | 94 ++--
arch/x86/include/asm/pvclock-abi.h | 1 +
arch/x86/include/asm/pvclock.h | 1 -
arch/x86/include/uapi/asm/kvm.h | 14 +-
arch/x86/kernel/kvm.c | 4 +-
arch/x86/kernel/kvmclock.c | 14 +-
arch/x86/kvm/Kconfig | 9 +-
arch/x86/kvm/Makefile | 6 +-
arch/x86/kvm/cpuid.c | 12 +-
arch/x86/kvm/cpuid.h | 8 +
arch/x86/kvm/emulate.c | 303 ++++++++++-
arch/x86/kvm/ioapic.c | 9 +-
arch/x86/kvm/irq_comm.c | 14 +-
arch/x86/kvm/kvm_cache_regs.h | 5 +
arch/x86/kvm/lapic.c | 59 +-
arch/x86/kvm/lapic.h | 15 +-
arch/x86/kvm/mmu.c | 692 ++++++++++++------------
arch/x86/kvm/mmu.h | 2 +
arch/x86/kvm/mmu_audit.c | 20 +-
arch/x86/kvm/mtrr.c | 699 ++++++++++++++++++++++++
arch/x86/kvm/paging_tmpl.h | 18 +-
arch/x86/kvm/pmu.c | 553 +++++--------------
arch/x86/kvm/pmu.h | 118 ++++
arch/x86/kvm/pmu_amd.c | 207 +++++++
arch/x86/kvm/pmu_intel.c | 358 ++++++++++++
arch/x86/kvm/svm.c | 116 ++--
arch/x86/kvm/trace.h | 22 +
arch/x86/kvm/vmx.c | 363 +++++++++----
arch/x86/kvm/x86.c | 898 ++++++++++++++++++++-----------
arch/x86/kvm/x86.h | 8 +
include/linux/kvm_host.h | 96 +++-
include/linux/kvm_types.h | 1 +
include/uapi/linux/kvm.h | 9 +-
virt/kvm/arm/vgic-v3-emul.c | 56 +-
virt/kvm/arm/vgic.c | 7 +-
virt/kvm/async_pf.h | 4 +-
virt/kvm/coalesced_mmio.h | 4 +-
virt/kvm/irqchip.c | 41 +-
virt/kvm/kvm_main.c | 432 ++++++++++-----
72 files changed, 4089 insertions(+), 1713 deletions(-)
create mode 100644 arch/x86/kvm/mtrr.c
create mode 100644 arch/x86/kvm/pmu.h
create mode 100644 arch/x86/kvm/pmu_amd.c
create mode 100644 arch/x86/kvm/pmu_intel.c
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/