[GIT PULL] First batch of KVM changes for 4.5 merge window

From: Paolo Bonzini
Date: Tue Jan 12 2016 - 11:05:34 EST


Linus,

The following changes since commit 9f9499ae8e6415cefc4fe0a96ad0e27864353c89:

Linux 4.4-rc5 (2015-12-13 17:42:58 -0800)

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 45bdbcfdf241149642fb6c25ab0c209d59c371b7:

kvm: x86: Fix vmwrite to SECONDARY_VM_EXEC_CONTROL (2016-01-12 11:42:16 +0100)

PPC changes will come next week.
----------------------------------------------------------------
* s390: Support for runtime instrumentation within guests,
support of 248 VCPUs.

* ARM: rewrite of the arm64 world switch in C, support for
16-bit VM identifiers. Performance counter virtualization
missed the boat.

* x86: Support for more Hyper-V features (synthetic interrupt
controller), MMU cleanups

----------------------------------------------------------------
Amit Tomar (1):
KVM: arm/arm64: Count guest exit due to various reasons

Andrey Smetanin (24):
kvm/irqchip: kvm_arch_irq_routing_update renaming split
kvm/x86: split ioapic-handled and EOI exit bitmaps
kvm/x86: per-vcpu apicv deactivation support
kvm/x86: Hyper-V synthetic interrupt controller
kvm/x86: Hyper-V kvm exit
drivers/hv: replace enum hv_message_type by u32
drivers/hv: Move HV_SYNIC_STIMER_COUNT into Hyper-V UAPI x86 header
drivers/hv: Move struct hv_message into UAPI Hyper-V x86 header
drivers/hv: Move struct hv_timer_message_payload into UAPI Hyper-V x86 header
kvm/x86: Rearrange func's declarations inside Hyper-V header
kvm/x86: Added Hyper-V vcpu_to_hv_vcpu()/hv_vcpu_to_vcpu() helpers
kvm/x86: Hyper-V internal helper to read MSR HV_X64_MSR_TIME_REF_COUNT
kvm/x86: Hyper-V SynIC message slot pending clearing at SINT ack
kvm/x86: Hyper-V SynIC timers
kvm/x86: Remove Hyper-V SynIC timer stopping
kvm/x86: Hyper-V timers fix incorrect logical operation
kvm/x86: Drop stimer_stop() function
kvm/x86: Hyper-V unify stimer_start() and stimer_restart()
kvm/x86: Reorg stimer_expiration() to better control timer restart
kvm/x86: Hyper-V fix SynIC timer disabling condition
kvm/x86: Skip SynIC vector check for QEMU side
kvm/x86: Update SynIC timers on guest entry only
kvm/x86: Hyper-V SynIC tracepoints
kvm/x86: Hyper-V SynIC timers tracepoints

Borislav Petkov (1):
kvm: Dump guest rIP when the guest tried something unsupported

Christian Borntraeger (3):
KVM: s390: remove redudant assigment of error code
KVM: s390: use assignment instead of memcpy
KVM: s390: obey kptr_restrict in traces

David Hildenbrand (12):
KVM: Use common function for VCPU lookup by id
KVM: use heuristic for fast VCPU lookup by id
KVM: s390: rewrite vcpu_post_run and drop out early
KVM: s390: fast path for sca_ext_call_pending
KVM: s390: we always have a SCA
KVM: s390: fix SCA related races and double use
KVM: s390: always set/clear the SCA sda field
KVM: s390: cleanup sca_add_vcpu
KVM: s390: don't switch to ESCA for ucontrol
s390/sclp: introduce check for SIE
s390: show virtualization support in /proc/cpuinfo
KVM: s390: don't load kvm without virtualization support

David Matlack (1):
kvm: x86: fix comment about {mmu,nested_mmu}.gva_to_gpa

Dominik Dingel (1):
KVM: s390: fix mismatch between user and in-kernel guest limit

Eugene (jno) Dvurechenski (8):
s390/sclp: introduce checks for ESCA and HVS
KVM: s390: Generalize access to IPTE controls
KVM: s390: Generalize access to SIGP controls
KVM: s390: Provide SCA-aware helpers for VCPU add/del
KVM: s390: Introduce new structures
KVM: s390: Make provisions for ESCA utilization
KVM: s390: Introduce switching code
KVM: s390: Enable up to 248 VCPUs per VM

Fan Zhang (1):
KVM: s390: implement the RI support of guest

Fengguang Wu (1):
MAINTAINERS: add git URL for KVM/ARM

Guenther Hutzl (1):
KVM: s390: consider system MHA for guest storage

Heiko Carstens (1):
KVM: s390: remove pointless test_facility(2) check

Huaitong Han (1):
kvm: x86: Fix vmwrite to SECONDARY_VM_EXEC_CONTROL

Janosch Frank (1):
KVM: Remove unnecessary debugfs dentry references

Jisheng Zhang (1):
KVM: arm/arm64: vgic: make vgic_io_ops static

Li RongQing (1):
KVM: VMX: fix the writing POSTED_INTR_NV

Marc Zyngier (23):
arm64: KVM: Add a HYP-specific header file
arm64: KVM: Implement vgic-v2 save/restore
KVM: arm/arm64: vgic-v3: Make the LR indexing macro public
arm64: KVM: Implement vgic-v3 save/restore
arm64: KVM: Implement timer save/restore
arm64: KVM: Implement system register save/restore
arm64: KVM: Implement 32bit system register save/restore
arm64: KVM: Implement debug save/restore
arm64: KVM: Implement guest entry
arm64: KVM: Add patchable function selector
arm64: KVM: Implement the core world switch
arm64: KVM: Implement fpsimd save/restore
arm64: KVM: Implement TLB handling
arm64: KVM: HYP mode entry points
arm64: KVM: Add panic handling
arm64: KVM: Add compatibility aliases
arm64: KVM: Map the kernel RO section into HYP
arm64: KVM: Move away from the assembly version of the world switch
arm64: KVM: Turn system register numbers to an enum
arm64: KVM: Cleanup asm-offset.c
arm64: KVM: Remove weak attributes
ARM: KVM: Cleanup exception injection
arm64: KVM: debug: Remove spurious inline attributes

Mark Rutland (1):
arm64: Add macros to read/write system registers

Markus Elfring (1):
KVM-async_pf: Delete an unnecessary check before the function call "kmem_cache_destroy"

Michael S. Tsirkin (1):
kvm/s390: drop unpaired smp_mb

Nicholas Krause (1):
kvm: x86: Check kvm_write_guest return value in kvm_write_wall_clock

Paolo Bonzini (15):
KVM: x86: expose MSR_TSC_AUX to userspace
KVM: svm: add support for RDTSCP
KVM: x86: correctly print #AC in traces
KVM: x86: MMU: always set accessed bit in shadow PTEs
Merge tag 'kvm-s390-next-4.5-1' of git://git.kernel.org/.../kvms390/linux into HEAD
Merge tag 'kvm-s390-next-4.5-2' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: VMX: fix read/write sizes of VMCS fields
KVM: VMX: fix read/write sizes of VMCS fields in dump_vmcs
KVM: vmx: detect mismatched size in VMCS read/write
Merge tag 'kvm-arm-for-4.5-1' of git://git.kernel.org/.../kvmarm/kvmarm into kvm-next
Merge tag 'kvm-s390-next-4.5-3' of git://git.kernel.org/.../kvms390/linux into HEAD
KVM: Remove unused KVM_REQ_KICK to save a bit in vcpu->requests
KVM: document which architecture uses each request bit
KVM: renumber vcpu->request bits
KVM: move architecture-dependent requests to arch/

Pavel Fedin (1):
arm/arm64: KVM: Detect vGIC presence at runtime

Takuya Yoshikawa (11):
KVM: x86: MMU: Encapsulate the type of rmap-chain head in a new struct
KVM: x86: MMU: Remove unused parameter of __direct_map()
KVM: x86: MMU: Add helper function to clear a bit in unsync child bitmap
KVM: x86: MMU: Make mmu_set_spte() return emulate value
KVM: x86: MMU: Remove is_rmap_spte() and use is_shadow_present_pte()
KVM: x86: MMU: Consolidate BUG_ON checks for reverse-mapped sptes
KVM: x86: MMU: Move initialization of parent_ptes out from kvm_mmu_alloc_page()
KVM: x86: MMU: Move parent_pte handling from kvm_mmu_get_page() to link_shadow_page()
KVM: x86: MMU: Use for_each_rmap_spte macro instead of pte_list_walk()
KVM: x86: MMU: Remove unused parameter parent_pte from kvm_mmu_get_page()
KVM: x86: MMU: Use clear_page() instead of init_shadow_page_table()

Vladimir Murzin (3):
arm/arm64: KVM: Remove unreferenced S2_PGD_ORDER
arm: KVM: Make kvm_arm.h friendly to assembly code
arm64: KVM: Add support for 16-bit VMID

Yaowei Bai (3):
KVM: kvm_is_visible_gfn can be boolean
KVM: kvm_para_has_feature can be boolean
KVM: powerpc: kvmppc_visible_gpa can be boolean

Documentation/virtual/kvm/api.txt | 41 ++
Documentation/virtual/kvm/devices/vm.txt | 3 +-
Documentation/virtual/kvm/mmu.txt | 4 +-
MAINTAINERS | 1 +
arch/arm/include/asm/kvm_arm.h | 34 +-
arch/arm/include/asm/kvm_host.h | 6 +
arch/arm/include/asm/kvm_mmu.h | 5 +
arch/arm/kvm/arm.c | 40 +-
arch/arm/kvm/emulate.c | 74 +-
arch/arm/kvm/guest.c | 6 +
arch/arm/kvm/handle_exit.c | 3 +
arch/arm/kvm/mmio.c | 3 +
arch/arm/kvm/mmu.c | 6 +-
arch/arm64/include/asm/kvm_arm.h | 3 +-
arch/arm64/include/asm/kvm_asm.h | 76 ---
arch/arm64/include/asm/kvm_emulate.h | 1 -
arch/arm64/include/asm/kvm_host.h | 87 ++-
arch/arm64/include/asm/kvm_mmio.h | 1 -
arch/arm64/include/asm/kvm_mmu.h | 9 +-
arch/arm64/include/asm/sysreg.h | 21 +
arch/arm64/kernel/asm-offsets.c | 40 +-
arch/arm64/kvm/Makefile | 3 +-
arch/arm64/kvm/guest.c | 10 +-
arch/arm64/kvm/handle_exit.c | 4 +
arch/arm64/kvm/hyp-init.S | 9 +
arch/arm64/kvm/hyp.S | 1081 +-----------------------------
arch/arm64/kvm/hyp/Makefile | 14 +
arch/arm64/kvm/hyp/debug-sr.c | 140 ++++
arch/arm64/kvm/hyp/entry.S | 160 +++++
arch/arm64/kvm/hyp/fpsimd.S | 33 +
arch/arm64/kvm/hyp/hyp-entry.S | 212 ++++++
arch/arm64/kvm/hyp/hyp.h | 90 +++
arch/arm64/kvm/hyp/switch.c | 175 +++++
arch/arm64/kvm/hyp/sysreg-sr.c | 138 ++++
arch/arm64/kvm/hyp/timer-sr.c | 71 ++
arch/arm64/kvm/hyp/tlb.c | 80 +++
arch/arm64/kvm/hyp/vgic-v2-sr.c | 84 +++
arch/arm64/kvm/hyp/vgic-v3-sr.c | 228 +++++++
arch/arm64/kvm/sys_regs.c | 59 +-
arch/arm64/kvm/vgic-v2-switch.S | 134 ----
arch/arm64/kvm/vgic-v3-switch.S | 269 --------
arch/powerpc/include/asm/kvm_host.h | 4 +
arch/powerpc/kvm/book3s_hv.c | 10 +-
arch/powerpc/kvm/book3s_pr.c | 4 +-
arch/s390/include/asm/elf.h | 7 +
arch/s390/include/asm/kvm_host.h | 57 +-
arch/s390/include/asm/sclp.h | 8 +-
arch/s390/include/uapi/asm/kvm.h | 5 +
arch/s390/kernel/processor.c | 6 +
arch/s390/kernel/setup.c | 9 +
arch/s390/kvm/diag.c | 11 +-
arch/s390/kvm/gaccess.c | 38 +-
arch/s390/kvm/intercept.c | 7 +-
arch/s390/kvm/interrupt.c | 133 +++-
arch/s390/kvm/kvm-s390.c | 300 ++++++---
arch/s390/kvm/kvm-s390.h | 7 +
arch/s390/kvm/trace-s390.h | 6 +-
arch/s390/mm/pgtable.c | 4 +-
arch/x86/include/asm/kvm_host.h | 75 ++-
arch/x86/include/uapi/asm/hyperv.h | 92 +++
arch/x86/kvm/hyperv.c | 708 ++++++++++++++++++-
arch/x86/kvm/hyperv.h | 55 ++
arch/x86/kvm/ioapic.c | 4 +-
arch/x86/kvm/ioapic.h | 7 +-
arch/x86/kvm/irq.c | 2 +-
arch/x86/kvm/irq_comm.c | 41 +-
arch/x86/kvm/lapic.c | 40 +-
arch/x86/kvm/lapic.h | 9 +-
arch/x86/kvm/mmu.c | 397 +++++------
arch/x86/kvm/mmu_audit.c | 15 +-
arch/x86/kvm/paging_tmpl.h | 20 +-
arch/x86/kvm/svm.c | 37 +-
arch/x86/kvm/trace.h | 265 +++++++-
arch/x86/kvm/vmx.c | 202 ++++--
arch/x86/kvm/x86.c | 110 ++-
drivers/hv/hyperv_vmbus.h | 88 +--
drivers/s390/char/sclp_early.c | 16 +-
include/clocksource/arm_arch_timer.h | 6 +
include/kvm/arm_vgic.h | 6 +
include/linux/kvm_host.h | 66 +-
include/linux/kvm_para.h | 6 +-
include/uapi/linux/kvm.h | 26 +
virt/kvm/arm/vgic-v3.c | 11 +-
virt/kvm/arm/vgic.c | 2 +-
virt/kvm/async_pf.c | 3 +-
virt/kvm/irqchip.c | 7 +-
virt/kvm/kvm_main.c | 46 +-
87 files changed, 4043 insertions(+), 2393 deletions(-)
create mode 100644 arch/arm64/kvm/hyp/Makefile
create mode 100644 arch/arm64/kvm/hyp/debug-sr.c
create mode 100644 arch/arm64/kvm/hyp/entry.S
create mode 100644 arch/arm64/kvm/hyp/fpsimd.S
create mode 100644 arch/arm64/kvm/hyp/hyp-entry.S
create mode 100644 arch/arm64/kvm/hyp/hyp.h
create mode 100644 arch/arm64/kvm/hyp/switch.c
create mode 100644 arch/arm64/kvm/hyp/sysreg-sr.c
create mode 100644 arch/arm64/kvm/hyp/timer-sr.c
create mode 100644 arch/arm64/kvm/hyp/tlb.c
create mode 100644 arch/arm64/kvm/hyp/vgic-v2-sr.c
create mode 100644 arch/arm64/kvm/hyp/vgic-v3-sr.c
delete mode 100644 arch/arm64/kvm/vgic-v2-switch.S
delete mode 100644 arch/arm64/kvm/vgic-v3-switch.S