[GIT PULL] KVM changes for 3.20, except PPC

From: Paolo Bonzini
Date: Thu Feb 12 2015 - 12:15:13 EST


The following changes since commit 056bb5f51c357ee00046fde4929a03468ff45e7a:

arm64: kvm: decode ESR_ELx.EC when reporting exceptions (2015-01-15 12:24:52 +0000)

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 6557bada461afeaa920a189fae2cff7c8fdce39f:

KVM: ia64: drop kvm.h from installed user headers (2015-02-10 09:02:10 +0100)

I placed the correct conflict resolution in branch merge-resolution-3.20
of the KVM repository (based on commit 8cc748aa76c9 from your tree).
In hindsight, I probably should have just delayed the last batch of
ARM/ARM64 patches to the 3.20 merge window.

The KVM/PPC changes will come in through the PPC maintainers, because
I haven't received them yet and I might end up being offline for some
part of next week.

Fairly small update, but there are some interesting new features.

Common: Optional support for adding a small amount of polling on each HLT
instruction executed in the guest (or equivalent for other architectures).
This can improve latency up to 50% on some scenarios (e.g. O_DSYNC writes
or TCP_RR netperf tests). This also has to be enabled manually for now,
but the plan is to auto-tune this in the future.

ARM/ARM64: the highlights are support for GICv3 emulation and dirty page

s390: several optimizations and bugfixes. Also a first: a feature
exposed by KVM (UUID and long guest name in /proc/sysinfo) before
it is available in IBM's hypervisor! :)

MIPS: Bugfixes.

x86: Support for PML (page modification logging, a new feature in
Broadwell Xeons that speeds up dirty page tracking), nested virtualization
improvements (nested APICv---a nice optimization), usual round of emulation
fixes. There is also a new option to reduce latency of the TSC deadline
timer in the guest; this needs to be tuned manually.

Some commits are common between this pull and Catalin's; I see you
have already included his tree.

ARM has other conflicts where functions are added in the same place
by 3.19-rc and 3.20 patches. These are not large though, and entirely
within KVM.

Andre Przywara (21):
ARM: KVM: extend WFI tracepoint to differentiate between wfi and wfe
arm/arm64: KVM: rework MPIDR assignment and add accessors
arm/arm64: KVM: pass down user space provided GIC type into vGIC code
arm/arm64: KVM: refactor vgic_handle_mmio() function
arm/arm64: KVM: wrap 64 bit MMIO accesses with two 32 bit ones
arm/arm64: KVM: introduce per-VM ops
arm/arm64: KVM: move kvm_register_device_ops() into vGIC probing
arm/arm64: KVM: dont rely on a valid GICH base address
arm/arm64: KVM: make the maximum number of vCPUs a per-VM value
arm/arm64: KVM: make the value of ICC_SRE_EL1 a per-VM variable
arm/arm64: KVM: refactor MMIO accessors
arm/arm64: KVM: refactor/wrap vgic_set/get_attr()
arm/arm64: KVM: add vgic.h header file
arm/arm64: KVM: split GICv2 specific emulation code from vgic.c
arm/arm64: KVM: add opaque private pointer to MMIO data
arm/arm64: KVM: add virtual GICv3 distributor emulation
arm64: GICv3: introduce symbolic names for GICv3 ICC_SGI1R_EL1 fields
arm64: KVM: add SGI generation register emulation
arm/arm64: KVM: enable kernel side of GICv3 emulation
arm/arm64: KVM: allow userland to request a virtual GICv3
arm/arm64: KVM: force alignment of VGIC dist/CPU/redist addresses

Borislav Petkov (1):
kvm: Fix CR3_PCID_INVD type on 32-bit

Christian Borntraeger (4):
KVM: s390: make local function static
KVM: s390: no need to hold the kvm->mutex for floating interrupts
KVM: s390: reenable LPP facility
KVM: Disable compat ioctl for s390

Christoffer Dall (2):
arm/arm64: KVM: Fixup incorrect config symbol in comment
KVM: Remove unused config symbol

David Hildenbrand (13):
KVM: s390: prevent sleep duration underflows in handle_wait()
KVM: s390: base hrtimer on a monotonic clock
KVM: s390: forward hrtimer if guest ckc not pending yet
KVM: s390: new parameter for SIGP STOP irqs
KVM: s390: handle stop irqs without action_bits
KVM: s390: a VCPU may only stop when no interrupts are left pending
KVM: s390: SIGP SET PREFIX cleanup
s390/sclp: introduce check for the SIGP Interpretation Facility
KVM: s390: only one external call may be pending at a time
KVM: s390: clear the pfault queue if user space sets the invalid token
KVM: s390: forward most SIGP orders to user space
KVM: s390: avoid memory leaks if __inject_vm() fails
KVM: s390: floating irqs: fix user triggerable endless loop

Dominik Dingel (3):
KVM: remove unneeded return value of vcpu_postcreate
KVM: s390: move vcpu specific initalization to a later point
KVM: s390: Allow userspace to limit guest memory size

Ekaterina Tumanova (1):
s390/kernel: Update /proc/sysinfo file with Extended Name and UUID

Eric Auger (2):
KVM: arm/arm64: vgic: vgic_init returns -ENODEV when no online vcpu
KVM: arm/arm64: vgic: add init entry to VGIC KVM device

Eugene Korenevsky (2):
KVM: nVMX: Improve nested msr switch checking
KVM: nVMX: consult PFEC_MASK and PFEC_MATCH when generating #PF VM-exit

Fengguang Wu (1):
KVM: fix "Should it be static?" warnings from sparse

James Hogan (2):
KVM: MIPS: Disable HTW while in guest
KVM: MIPS: Don't leak FPU/DSP to guest

Jason J. Herne (1):
KVM: s390: Provide guest TOD Clock Get/Set Controls

Jens Freimann (4):
KVM: s390: fix bug in sigp emergency signal injection
KVM: s390: trace correct values for set prefix and machine checks
KVM: s390: fix bug in interrupt parameter check
KVM: s390: remove redundant setting of interrupt type

Joerg Roedel (1):
kvm: iommu: Add cond_resched to legacy device assignment code

Kai Huang (8):
KVM: x86: flush TLB when D bit is manually changed.
Optimize TLB flush in kvm_mmu_slot_remove_write_access.
KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for log dirty
KVM: MMU: Add mmu help functions to support PML
KVM: MMU: Explicitly set D-bit for writable spte.
KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access
KVM: x86: Add new dirty logging kvm_x86_ops for PML
KVM: VMX: Add PML support in VMX

Marcelo Tosatti (6):
KVM: x86: add method to test PIR bitmap vector
KVM: x86: add option to advance tscdeadline hrtimer expiration
KVM: x86: add tracepoint to wait_lapic_expire
KVM: x86: workaround SuSE's 2.6.16 pvclock vs masterclock issue
KVM: x86: fix lapic_timer_int_injected with APIC-v
KVM: x86: revert "add method to test PIR bitmap vector"

Mario Smarduch (9):
KVM: Add architecture-defined TLB flush support
KVM: Add generic support for dirty page logging
KVM: arm: Add ARMv7 API to flush TLBs
KVM: arm: Add initial dirty page locking support
KVM: arm: dirty logging write protect support
KVM: arm: page logging 2nd stage fault handling
KVM: arm64: ARMv8 header changes for page logging
KVM: arm64: Add HYP interface to flush VM Stage 1/2 TLB entries
KVM: arm/arm64: Enable Dirty Page logging for ARMv8

Michael Mueller (2):
KVM: s390: use facilities and cpu_id per KVM
KVM: s390: add cpu model support

Mike Frysinger (1):
KVM: ia64: drop kvm.h from installed user headers

Nadav Amit (15):
KVM: x86: pop sreg accesses only 2 bytes
KVM: x86: fnstcw and fnstsw may cause spurious exception
KVM: x86: JMP/CALL using call- or task-gate causes exception
KVM: x86: em_call_far should return failure result
KVM: x86: POP [ESP] is not emulated correctly
KVM: x86: Do not set access bit on accessed segments
KVM: x86: Access to LDT/GDT that wraparound is incorrect
KVM: x86: #PF error-code on R/W operations is wrong
KVM: x86: Dirty the dest op page on cmpxchg emulation
KVM: x86: Wrong operand size for far ret
KVM: x86: IRET emulation does not clear NMI masking
KVM: x86: ARPL emulation can cause spurious exceptions
KVM: x86: Fix defines in emulator.c
KVM: x86: 32-bit wraparound read/write not emulated correctly
KVM: x86: Emulation of call may use incorrect stack size

Nicholas Krause (2):
KVM: x86: Remove FIXMEs in emulate.c for the function,task_switch_32
kvm: x86: Remove kvm_make_request from lapic.c

Paolo Bonzini (12):
KVM: x86: mmu: do not use return to tail-call functions that return void
KVM: x86: mmu: remove argument to kvm_init_shadow_mmu and kvm_init_shadow_ept_mmu
KVM: x86: mmu: remove ASSERT(vcpu)
KVM: x86: mmu: replace assertions with MMU_WARN_ON, a conditional WARN_ON
KVM: x86: switch to kvm_get_dirty_log_protect
Merge branch 'arm64/common-esr-macros' of git://git.kernel.org/.../mark/linux into kvm-next
Merge tag 'kvm-arm-for-3.20' of git://git.kernel.org/.../kvmarm/kvmarm into kvm-next
Merge tag 'kvm-s390-next-20150122' of git://git.kernel.org/.../kvms390/linux into kvm-next
kvm: vmx: fix oops with explicit flexpriority=0 option
kvm: add halt_poll_ns module parameter
Merge tag 'kvm-s390-next-20150209' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: x86: emulate: correct page fault error code for NoWrite instructions

Radim KrÄmÃÅ (6):
KVM: x86: allow TSC deadline timer on all hosts
KVM: x86: return bool from kvm_apic_match*()
KVM: x86: cleanup kvm_apic_match_*()
KVM: x86: replace 0 with APIC_DEST_PHYSICAL
KVM: x86: fix x2apic logical address matching
KVM: x86: fix build with !CONFIG_SMP

Rickard Strandqvist (1):
x86: kvm: vmx: Remove some unused functions

Thomas Huth (1):
KVM: s390: Take addressing mode into account for MVPG interception

Tiejun Chen (3):
kvm: x86: vmx: NULL out hwapic_isr_update() in case of !enable_apicv
kvm: update_memslots: clean flags for invalid memslots
kvm: remove KVM_MMIO_SIZE

Tony Krowiak (2):
KVM: s390/cpacf: Enable/disable protected key functions for kvm guest
KVM: s390/CPACF: Choose crypto control block format

Wei Huang (1):
arm/arm64: KVM: add tracing support for arm64 exit handler

Wincy Van (7):
KVM: nVMX: Add nested msr load/restore algorithm
KVM: nVMX: Prepare for using hardware MSR bitmap
KVM: nVMX: Enable nested virtualize x2apic mode
KVM: nVMX: Make nested control MSRs per-cpu
KVM: nVMX: Enable nested apic register virtualization
KVM: nVMX: Enable nested virtual interrupt delivery
KVM: nVMX: Enable nested posted interrupt processing

Documentation/virtual/kvm/api.txt | 35 +-
Documentation/virtual/kvm/devices/arm-vgic.txt | 37 +-
Documentation/virtual/kvm/devices/vm.txt | 59 ++
arch/arm/include/asm/kvm_asm.h | 1 +
arch/arm/include/asm/kvm_emulate.h | 5 +-
arch/arm/include/asm/kvm_host.h | 6 +
arch/arm/include/asm/kvm_mmio.h | 1 +
arch/arm/include/asm/kvm_mmu.h | 21 +
arch/arm/include/asm/pgtable-3level.h | 1 +
arch/arm/include/uapi/asm/kvm.h | 2 +
arch/arm/kvm/Kconfig | 2 +
arch/arm/kvm/Makefile | 1 +
arch/arm/kvm/arm.c | 58 +-
arch/arm/kvm/handle_exit.c | 8 +-
arch/arm/kvm/interrupts.S | 11 +
arch/arm/kvm/mmu.c | 271 +++++-
arch/arm/kvm/psci.c | 17 +-
arch/arm/kvm/trace.h | 11 +-
arch/arm64/include/asm/esr.h | 1 +
arch/arm64/include/asm/kvm_asm.h | 1 +
arch/arm64/include/asm/kvm_emulate.h | 10 +-
arch/arm64/include/asm/kvm_host.h | 7 +
arch/arm64/include/asm/kvm_mmio.h | 1 +
arch/arm64/include/asm/kvm_mmu.h | 21 +
arch/arm64/include/asm/pgtable-hwdef.h | 1 +
arch/arm64/include/uapi/asm/kvm.h | 9 +
arch/arm64/kernel/asm-offsets.c | 1 +
arch/arm64/kvm/Kconfig | 2 +
arch/arm64/kvm/Makefile | 2 +
arch/arm64/kvm/handle_exit.c | 13 +-
arch/arm64/kvm/hyp.S | 22 +
arch/arm64/kvm/sys_regs.c | 40 +-
arch/arm64/kvm/trace.h | 55 ++
arch/arm64/kvm/vgic-v3-switch.S | 14 +-
arch/ia64/include/uapi/asm/Kbuild | 1 -
arch/mips/include/asm/kvm_host.h | 1 +
arch/mips/kvm/locore.S | 2 +-
arch/mips/kvm/mips.c | 23 +-
arch/powerpc/include/asm/kvm_host.h | 1 +
arch/powerpc/kvm/book3s.c | 1 +
arch/powerpc/kvm/booke.c | 1 +
arch/powerpc/kvm/powerpc.c | 3 +-
arch/s390/include/asm/kvm_host.h | 56 +-
arch/s390/include/asm/sclp.h | 4 +-
arch/s390/include/asm/sysinfo.h | 10 +-
arch/s390/include/uapi/asm/kvm.h | 37 +
arch/s390/kernel/sysinfo.c | 29 +
arch/s390/kvm/gaccess.c | 4 +-
arch/s390/kvm/intercept.c | 41 +-
arch/s390/kvm/interrupt.c | 191 ++--
arch/s390/kvm/kvm-s390.c | 596 +++++++++++--
arch/s390/kvm/kvm-s390.h | 19 +-
arch/s390/kvm/priv.c | 13 +-
arch/s390/kvm/sigp.c | 160 ++--
arch/s390/kvm/trace-s390.h | 14 +-
arch/x86/include/asm/kvm_emulate.h | 1 +
arch/x86/include/asm/kvm_host.h | 59 +-
arch/x86/include/asm/vmx.h | 4 +
arch/x86/include/uapi/asm/msr-index.h | 3 +
arch/x86/include/uapi/asm/vmx.h | 6 +
arch/x86/kvm/Kconfig | 1 +
arch/x86/kvm/emulate.c | 230 +++--
arch/x86/kvm/ioapic.h | 2 +-
arch/x86/kvm/iommu.c | 4 +-
arch/x86/kvm/lapic.c | 147 ++--
arch/x86/kvm/lapic.h | 6 +-
arch/x86/kvm/mmu.c | 351 ++++++--
arch/x86/kvm/mmu.h | 17 +-
arch/x86/kvm/svm.c | 4 +-
arch/x86/kvm/trace.h | 38 +
arch/x86/kvm/vmx.c | 1086 ++++++++++++++++++++---
arch/x86/kvm/x86.c | 209 +++--
arch/x86/kvm/x86.h | 3 +
drivers/irqchip/irq-gic-v3.c | 14 +-
drivers/s390/char/sclp_early.c | 8 +
include/kvm/arm_vgic.h | 43 +-
include/linux/irqchip/arm-gic-v3.h | 44 +
include/linux/kvm_host.h | 17 +-
include/trace/events/kvm.h | 19 +
include/uapi/linux/kvm.h | 9 +
virt/kvm/Kconfig | 10 +
virt/kvm/arm/vgic-v2-emul.c | 847 ++++++++++++++++++
virt/kvm/arm/vgic-v2.c | 4 +
virt/kvm/arm/vgic-v3-emul.c | 1036 ++++++++++++++++++++++
virt/kvm/arm/vgic-v3.c | 82 +-
virt/kvm/arm/vgic.c | 1127 ++++++------------------
virt/kvm/arm/vgic.h | 123 +++
virt/kvm/kvm_main.c | 144 ++-
88 files changed, 6026 insertions(+), 1626 deletions(-)
create mode 100644 arch/arm64/kvm/trace.h
create mode 100644 virt/kvm/arm/vgic-v2-emul.c
create mode 100644 virt/kvm/arm/vgic-v3-emul.c
create mode 100644 virt/kvm/arm/vgic.h
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/