[GIT PULL] First batch of KVM changes for 4.4

From: Paolo Bonzini
Date: Thu Nov 05 2015 - 10:10:55 EST


The following changes since commit 0d997491f814c87310a6ad7be30a9049c7150489:

arm/arm64: KVM: Fix disabled distributor operation (2015-10-20 18:09:13 +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 a3eaa8649e4c6a6afdafaa04b9114fb230617bb1:

KVM: VMX: Fix commit which broke PML (2015-11-05 11:34:11 +0100)

s390: A bunch of fixes and optimizations for interrupt and time

PPC: Mostly bug fixes.

ARM: No big features, but many small fixes and prerequisites including:
- a number of fixes for the arch-timer
- introducing proper level-triggered semantics for the arch-timers
- a series of patches to synchronously halt a guest (prerequisite for
IRQ forwarding)
- some tracepoint improvements
- a tweak for the EL2 panic handlers
- some more VGIC cleanups getting rid of redundant state

x86: quite a few changes:

- support for VT-d posted interrupts (i.e. PCI devices can inject
interrupts directly into vCPUs). This introduces a new component (in
virt/lib/) that connects VFIO and KVM together. The same infrastructure
will be used for ARM interrupt forwarding as well.

- more Hyper-V features, though the main one Hyper-V synthetic interrupt
controller will have to wait for 4.5. These will let KVM expose Hyper-V

- nested virtualization now supports VPID (same as PCID but for vCPUs)
which makes it quite a bit faster

- for future hardware that supports NVDIMM, there is support for clflushopt,
clwb, pcommit

- support for "split irqchip", i.e. LAPIC in kernel + IOAPIC/PIC/PIT in
userspace, which reduces the attack surface of the hypervisor

- obligatory smattering of SMM fixes

- on the guest side, stable scheduler clock support was rewritten to not
require help from the hypervisor.

Alex Williamson (1):
virt: IRQ bypass manager

Andrey Smetanin (8):
kvm/x86: Hyper-V HV_X64_MSR_RESET msr
kvm/x86: Hyper-V HV_X64_MSR_VP_INDEX export for QEMU.
kvm/x86: Hyper-V HV_X64_MSR_VP_RUNTIME support
kvm/eventfd: avoid loop inside irqfd_update()
kvm/eventfd: factor out kvm_notify_acked_gsi()
kvm/eventfd: add arch-specific set_irq
kvm/irqchip: allow only multiple irqchip routes per GSI
drivers/hv: share Hyper-V SynIC constants with userspace

Andrzej Hajda (1):
KVM: PPC: e500: fix handling local_sid_lookup result

Christian Borntraeger (3):
KVM: s390: remove unused variable in __inject_vm
KVM: s390: drop useless newline in debugging data
KVM: s390: use simple switch statement as multiplexer

Christoffer Dall (10):
KVM: Add kvm_arch_vcpu_{un}blocking callbacks
arm/arm64: KVM: arch_timer: Only schedule soft timer on vcpu_block
arm/arm64: KVM: vgic: Factor out level irq processing on guest exit
arm/arm64: KVM: Implement GICD_ICFGR as RO for PPIs
arm/arm64: KVM: Use appropriate define in VGIC reset code
arm/arm64: KVM: Add forwarded physical interrupts documentation
arm/arm64: KVM: Rework the arch timer to use level-triggered semantics
arm/arm64: KVM: Support edge-triggered forwarded interrupts
arm/arm64: KVM: Improve kvm_exit tracepoint
arm/arm64: KVM: Add tracepoints for vgic and timer

David Hildenbrand (10):
KVM: s390: disabled wait cares about machine checks, not PER
KVM: s390: set interception requests for all floating irqs
KVM: s390: kvm_arch_vcpu_runnable already cares about timer interrupts
KVM: s390: drop out early in kvm_s390_has_irq()
KVM: s390: simplify in-kernel program irq injection
KVM: s390: correctly handle injection of pgm irqs and per events
KVM: s390: switch to get_tod_clock() and fix STP sync races
KVM: s390: factor out and fix setting of guest TOD clock
KVM: s390: factor out reading of the guest TOD clock
KVM: s390: SCA must not cross page boundaries

Eric Auger (7):
KVM: create kvm_irqfd.h
KVM: introduce kvm_arch functions for IRQ bypass
KVM: eventfd: add irq bypass consumer management
KVM: arm/arm64: rename pause into power_off
KVM: arm/arm64: check power_off in kvm_arch_vcpu_runnable
KVM: arm/arm64: check power_off in critical section before VCPU run
KVM: arm/arm64: implement kvm_arm_[halt,resume]_guest

Feng Wu (12):
virt: Add virt directory to the top Makefile
KVM: Add an arch specific hooks in 'struct kvm_kernel_irqfd'
KVM: Extend struct pi_desc for VT-d Posted-Interrupts
KVM: Add some helper functions for Posted-Interrupts
KVM: Define a new interface kvm_intr_is_single_vcpu()
KVM: make kvm_set_msi_irq() public
vfio: Register/unregister irq_bypass_producer
KVM: x86: Update IRTE for posted-interrupts
KVM: Update Posted-Interrupts Descriptor when vCPU is preempted
KVM: Update Posted-Interrupts Descriptor when vCPU is blocked
iommu/vt-d: Add a command line parameter for VT-d posted-interrupts

Gautham R. Shenoy (1):
KVM: PPC: Book3S HV: Handle H_DOORBELL on the guest exit path

Jan Beulich (1):
KVM: don't pointlessly leave KVM_COMPAT=y in non-KVM configs

Jason Wang (3):
kvm: use kmalloc() instead of kzalloc() during iodev register/unregister
kvm: add tracepoint for fast mmio
kvm: add capability for any-length ioeventfds

Joerg Roedel (1):
kvm: svm: Only propagate next_rip when guest supports it

Kai Huang (1):
KVM: VMX: Fix commit which broke PML

Kosuke Tatsukawa (1):
kvm: fix waitqueue_active without memory barrier in virt/kvm/async_pf.c

Laszlo Ersek (1):
KVM: x86: obey KVM_X86_QUIRK_CD_NW_CLEARED in kvm_set_cr0()

Mahesh Salgaonkar (1):
KVM: PPC: Book3S HV: Deliver machine check with MSR(RI=0) to guest as MCE

Marcelo Tosatti (1):
KVM: x86: move steal time initialization to vcpu entry time

Mark Rutland (1):
arm64: kvm: restore EL1N SP for panic

Michal Marek (1):
KVM: arm: Do not indent the arguments of DECLARE_BITMAP

Nikunj A Dadhania (1):
KVM: PPC: Implement extension to report number of memslots

Paolo Bonzini (22):
Merge branch 'x86/for-kvm' of git://git.kernel.org/.../tip/tip into HEAD
tools lib traceevent: update KVM plugin
KVM: x86: set TMR when the interrupt is accepted
KVM: x86: store IOAPIC-handled vectors in each VCPU
KVM: x86: replace vm_has_apicv hook with cpu_uses_apicv
KVM: x86: introduce lapic_in_kernel
KVM: x86: unify handling of interrupt window
KVM: vmx: disable posted interrupts if no local APIC
KVM: VMX: align vmx->nested.nested_vmx_secondary_ctls_high to vmx->rdtscp_enabled
irq_remapping: move structs outside #ifdef
Merge tag 'kvm-s390-next-20151013' of git://git.kernel.org/.../kvms390/linux into HEAD
Merge branch 'kvm-master' into HEAD
Merge branch 'kvm-master' into HEAD
KVM: x86: manually unroll bad_mt_xwr loop
kvm: x86: zero EFER on INIT
Merge tag 'kvm-s390-next-20151028' of git://git.kernel.org/.../kvms390/linux into HEAD
Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD
Merge tag 'kvm-arm-for-4.4' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD
KVM: x86: merge kvm_arch_set_irq with kvm_set_msi_inatomic
KVM: device assignment: remove pointless #ifdefs
KVM: x86: move kvm_set_irq_inatomic to legacy device assignment
KVM: x86: allow RSM from 64-bit mode

Paul Mackerras (2):
KVM: PPC: Book3S HV: Don't fall back to smaller HPT size in allocation ioctl
KVM: PPC: Book3S HV: Make H_REMOVE return correct HPTE value for absent HPTEs

Pavel Fedin (4):
KVM: arm/arm64: Fix vGIC documentation
KVM: arm/arm64: Optimize away redundant LR tracking
KVM: arm/arm64: Clean up vgic_retire_lr() and surroundings
KVM: arm/arm64: Merge vgic_set_lr() and vgic_sync_lr_elrsr()

Radim KrÄmÃÅ (8):
x86: kvmclock: abolish PVCLOCK_COUNTS_FROM_ZERO
kvm: x86: set KVM_REQ_EVENT when updating IRR
KVM: x86: fix edge EOI and IOAPIC reconfig race
KVM: x86: don't notify userspace IOAPIC on edge EOI
KVM: x86: add read_phys to x86_emulate_ops
KVM: x86: handle SMBASE as physical address in RSM
KVM: x86: zero apic_arb_prio on reset
KVM: VMX: fix SMEP and SMAP without EPT

Saurabh Sengar (1):
KVM: x86: removing unused variable

Steve Rutherford (4):
KVM: x86: Split the APIC from the rest of IRQCHIP.
KVM: x86: Add KVM exit for IOAPIC EOIs
KVM: x86: Add EOI exit bitmap inference
KVM: x86: Add support for local interrupt requests from userspace

Takuya Yoshikawa (6):
KVM: x86: MMU: Make force_pt_level bool
KVM: x86: MMU: Simplify force_pt_level calculation code in FNAME(page_fault)()
KVM: x86: MMU: Move mapping_level_dirty_bitmap() call in mapping_level()
KVM: x86: MMU: Remove mapping_level_dirty_bitmap()
KVM: x86: MMU: Eliminate an extra memory slot search in mapping_level()
KVM: x86: MMU: Initialize force_pt_level before calling mapping_level()

Tudor Laurentiu (3):
powerpc/e6500: add TMCFG0 register definition
KVM: PPC: e500: Emulate TMCFG0 TMRN register
KVM: PPC: e500: fix couple of shift operations on 64 bits

Wanpeng Li (5):
KVM: VMX: adjust interface to allocate/free_vpid
KVM: VMX: introduce __vmx_flush_tlb to handle specific vpid
KVM: nVMX: emulate the INVVPID instruction
KVM: nVMX: nested VPID emulation
KVM: nVMX: expose VPID capability to L1

Wei Huang (1):
arm/arm64: KVM : Enable vhost device selection under KVM config menu

Xiao Guangrong (8):
KVM: x86: allow guest to use cflushopt and clwb
KVM: x86: add pcommit support
KVM: VMX: drop rdtscp_enabled check in prepare_vmcs02()
KVM: VMX: simplify rdtscp handling in vmx_cpuid_update()
KVM: VMX: simplify invpcid handling in vmx_cpuid_update()
KVM: VMX: clean up bit operation on SECONDARY_VM_EXEC_CONTROL
KVM: VMX: drop rdtscp_enabled field

Documentation/kernel-parameters.txt | 1 +
Documentation/virtual/kvm/api.txt | 52 +-
Documentation/virtual/kvm/arm/vgic-mapped-irqs.txt | 187 +++++
Documentation/virtual/kvm/devices/arm-vgic.txt | 18 +-
Documentation/virtual/kvm/locking.txt | 12 +
Makefile | 10 +-
arch/arm/include/asm/kvm_arm.h | 20 +
arch/arm/include/asm/kvm_host.h | 5 +-
arch/arm/kvm/Kconfig | 2 +
arch/arm/kvm/arm.c | 76 ++-
arch/arm/kvm/psci.c | 10 +-
arch/arm/kvm/trace.h | 10 +-
arch/arm64/include/asm/kvm_arm.h | 16 +
arch/arm64/include/asm/kvm_host.h | 5 +-
arch/arm64/kvm/Kconfig | 2 +
arch/arm64/kvm/hyp.S | 8 +
arch/mips/include/asm/kvm_host.h | 2 +
arch/powerpc/include/asm/disassemble.h | 5 +
arch/powerpc/include/asm/kvm_host.h | 2 +
arch/powerpc/include/asm/reg_booke.h | 6 +
arch/powerpc/kvm/book3s_64_mmu_hv.c | 3 +-
arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 29 +-
arch/powerpc/kvm/e500.c | 3 +-
arch/powerpc/kvm/e500_emulate.c | 19 +
arch/powerpc/kvm/e500_mmu_host.c | 4 +-
arch/powerpc/kvm/powerpc.c | 3 +
arch/s390/include/asm/kvm_host.h | 2 +
arch/s390/kvm/intercept.c | 42 +-
arch/s390/kvm/interrupt.c | 116 ++--
arch/s390/kvm/kvm-s390.c | 58 +-
arch/s390/kvm/kvm-s390.h | 35 +-
arch/s390/kvm/priv.c | 19 +-
arch/x86/include/asm/irq_remapping.h | 10 +-
arch/x86/include/asm/kvm_emulate.h | 10 +
arch/x86/include/asm/kvm_host.h | 38 +-
arch/x86/include/asm/vmx.h | 3 +-
arch/x86/include/uapi/asm/hyperv.h | 18 +
arch/x86/include/uapi/asm/vmx.h | 4 +-
arch/x86/kernel/kvmclock.c | 46 +-
arch/x86/kvm/Kconfig | 2 +
arch/x86/kvm/assigned-dev.c | 62 +-
arch/x86/kvm/cpuid.c | 2 +-
arch/x86/kvm/cpuid.h | 37 +
arch/x86/kvm/emulate.c | 35 +-
arch/x86/kvm/hyperv.c | 31 +-
arch/x86/kvm/i8254.c | 4 +-
arch/x86/kvm/ioapic.c | 29 +-
arch/x86/kvm/ioapic.h | 15 +-
arch/x86/kvm/irq.c | 40 +-
arch/x86/kvm/irq.h | 27 +-
arch/x86/kvm/irq_comm.c | 129 ++--
arch/x86/kvm/lapic.c | 127 +++-
arch/x86/kvm/lapic.h | 7 +-
arch/x86/kvm/mmu.c | 91 +--
arch/x86/kvm/paging_tmpl.h | 19 +-
arch/x86/kvm/svm.c | 43 +-
arch/x86/kvm/trace.h | 51 ++
arch/x86/kvm/vmx.c | 750 +++++++++++++++++----
arch/x86/kvm/x86.c | 256 +++++--
drivers/hv/hyperv_vmbus.h | 5 -
drivers/iommu/irq_remapping.c | 12 +-
drivers/vfio/Kconfig | 1 +
drivers/vfio/pci/Kconfig | 1 +
drivers/vfio/pci/vfio_pci_intrs.c | 9 +
drivers/vfio/pci/vfio_pci_private.h | 2 +
include/kvm/arm_arch_timer.h | 4 +-
include/kvm/arm_vgic.h | 16 +-
include/linux/hyperv.h | 1 +
include/linux/irqbypass.h | 90 +++
include/linux/kvm_host.h | 42 +-
include/linux/kvm_irqfd.h | 71 ++
include/uapi/linux/kvm.h | 7 +
kernel/sched/cputime.c | 2 +
virt/Makefile | 1 +
virt/kvm/Kconfig | 5 +-
virt/kvm/arm/arch_timer.c | 173 +++--
virt/kvm/arm/trace.h | 63 ++
virt/kvm/arm/vgic-v2.c | 6 +-
virt/kvm/arm/vgic-v3.c | 6 +-
virt/kvm/arm/vgic.c | 308 ++++-----
virt/kvm/async_pf.c | 4 +
virt/kvm/eventfd.c | 190 +++---
virt/kvm/irqchip.c | 18 +-
virt/kvm/kvm_main.c | 11 +-
virt/lib/Kconfig | 2 +
virt/lib/Makefile | 1 +
virt/lib/irqbypass.c | 257 +++++++
89 files changed, 2956 insertions(+), 1029 deletions(-)
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/