Linus, The following changes since commit 7170bdc777556dad87f92e6a73a6cc557bf3290e: MIPS: Add return errors to protected cache ops (2017-02-03 15:19:02 +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 dd0fd8bca1850ddadf5d33a9ed28f3707cd98ac7: x86/kvm: Provide optimized version of vcpu_is_preempted() for x86-64 (2017-02-21 12:48:35 +0100) ---------------------------------------------------------------- 4.11 is going to be a relatively large release for KVM, with a little over 200 commits and noteworthy changes for most architectures. * ARM: - GICv3 save/restore - cache flushing fixes - working MSI injection for GICv3 ITS - physical timer emulation * MIPS: - various improvements under the hood - support for SMP guests - a large rewrite of MMU emulation. KVM MIPS can now use MMU notifiers to support copy-on-write, KSM, idle page tracking, swapping, ballooning and everything else. KVM_CAP_READONLY_MEM is also supported, so that writes to some memory regions can be treated as MMIO. The new MMU also paves the way for hardware virtualization support. * PPC: - support for POWER9 using the radix-tree MMU for host and guest - resizable hashed page table - bugfixes. * s390: expose more features to the guest - more SIMD extensions - instruction execution protection - ESOP2 * x86: - improved hashing in the MMU - faster PageLRU tracking for Intel CPUs without EPT A/D bits - some refactoring of nested VMX entry/exit code, preparing for live migration support of nested hypervisors - expose yet another AVX512 CPUID bit - host-to-guest PTP support - refactoring of interrupt injection, with some optimizations thrown in and some duct tape removed. - remove lazy FPU handling - optimizations of user-mode exits - optimizations of vcpu_is_preempted() for KVM guests * generic: - alternative signaling mechanism that doesn't pound on tsk->sighand->siglock ---------------------------------------------------------------- Andy Lutomirski (6): x86/asm: Define the kernel TSS limit in a macro x86/kvm/vmx: Don't fetch the TSS base from the GDT x86/kvm/vmx: Get rid of segment_base() on 64-bit kernels x86/kvm/vmx: Simplify segment_base() x86/asm/64: Drop __cacheline_aligned from struct x86_hw_tss x86/kvm/vmx: Defer TR reload after VM exit Arnd Bergmann (1): KVM: x86: hide KVM_HC_CLOCK_PAIRING on 32 bit Benjamin Herrenschmidt (1): powerpc/powernv: Remove separate entry for OPAL real mode calls Cao, Lei (1): KVM: Support vCPU-based gfn->hva cache Chao Peng (1): KVM: VMX: use correct vmcs_read/write for guest segment selector/base Christian Borntraeger (5): KVM: s390: gaccess: add ESOP2 handling KVM: s390: Get rid of ar_t Merge tag 'kvm-s390-master-4.10-1' of git://git.kernel.org/.../kvms390/linux into kernelorgnext KVM: s390: Add debug logging to basic cpu model interface KVM: s390: detect some program check loops Christoffer Dall (3): KVM: arm/arm64: Remove struct vgic_irq pending field KVM: arm/arm64: vgic: Add debugfs vgic-state file KVM: arm/arm64: Remove kvm_vgic_inject_mapped_irq David Gibson (12): Documentation: Correct duplicate section number in kvm/api.txt KVM: PPC: Book3S HV: HPT resizing documentation and reserved numbers KVM: PPC: Book3S HV: Rename kvm_alloc_hpt() for clarity KVM: PPC: Book3S HV: Gather HPT related variables into sub-structure KVM: PPC: Book3S HV: Don't store values derivable from HPT order KVM: PPC: Book3S HV: Split HPT allocation from activation KVM: PPC: Book3S HV: Allow KVM_PPC_ALLOCATE_HTAB ioctl() to change HPT size KVM: PPC: Book3S HV: Create kvmppc_unmap_hpte_helper() KVM: PPC: Book3S HV: Outline of KVM-HV HPT resizing implementation KVM: PPC: Book3S HV: KVM-HV HPT resizing implementation KVM: PPC: Book3S HV: Advertise availablity of HPT resizing on KVM HV KVM: PPC: Book3S HV: Prevent double-free on HPT resize commit path David Hildenbrand (6): KVM: s390: guestdbg: filter i-fetch events on icpts KVM: s390: prepare to read random guest instructions KVM: s390: guestdbg: filter PER i-fetch on EXECUTE properly KVM: nVMX: kmap() can't fail KVM: nVMX: vmx_complete_nested_posted_interrupt() can't fail KVM: svm: inititalize hash table structures directly David Matlack (2): kvm: x86: export maximum number of mmu_page_hash collisions kvm: x86: reduce collisions in mmu_page_hash Guenther Hutzl (1): KVM: s390: Introduce BCD Vector Instructions to the guest Heiko Carstens (1): KVM: s390: get rid of bogus cc initialization James Hogan (58): Merge MIPS prerequisites KVM: MIPS: Drop partial KVM_NMI implementation KVM: MIPS/MMU: Simplify ASID restoration KVM: MIPS: Convert get/set_regs -> vcpu_load/put KVM: MIPS/MMU: Move preempt/ASID handling to implementation KVM: MIPS: Remove duplicated ASIDs from vcpu KVM: MIPS: Add vcpu_run() & vcpu_reenter() callbacks KVM: MIPS/T&E: Restore host asid on return to host KVM: MIPS/T&E: active_mm = init_mm in guest context KVM: MIPS: Wire up vcpu uninit KVM: MIPS/T&E: Allocate GVA -> HPA page tables KVM: MIPS/T&E: Activate GVA page tables in guest context KVM: MIPS: Support NetLogic KScratch registers KVM: MIPS: Add fast path TLB refill handler KVM: MIPS/TLB: Fix off-by-one in TLB invalidate KVM: MIPS/TLB: Generalise host TLB invalidate to kernel ASID KVM: MIPS/MMU: Invalidate GVA PTs on ASID changes KVM: MIPS/MMU: Invalidate stale GVA PTEs on TLBW KVM: MIPS/MMU: Convert KSeg0 faults to page tables KVM: MIPS/MMU: Convert TLB mapped faults to page tables KVM: MIPS/MMU: Convert commpage fault handling to page tables KVM: MIPS: Drop vm_init() callback KVM: MIPS: Use uaccess to read/modify guest instructions KVM: MIPS/Emulate: Fix CACHE emulation for EVA hosts KVM: MIPS/TLB: Drop kvm_local_flush_tlb_all() KVM: MIPS/Emulate: Drop redundant TLB flushes on exceptions KVM: MIPS/MMU: Drop kvm_get_new_mmu_context() KVM: MIPS/T&E: Don't treat code fetch faults as MMIO KVM: MIPS: Improve kvm_get_inst() error return KVM: MIPS: Use CP0_BadInstr[P] for emulation KVM: MIPS/MMU: Convert guest physical map to page table KVM: MIPS: Update vcpu->mode and vcpu->cpu KVM: MIPS/T&E: Handle TLB invalidation requests KVM: MIPS/T&E: Reduce stale ASID checks KVM: MIPS/T&E: Add lockless GVA access helpers KVM: MIPS/T&E: Use lockless GVA helpers for dyntrans KVM: MIPS/MMU: Use lockless GVA helpers for get_inst() KVM: MIPS/Emulate: Use lockless GVA helpers for cache emulation KVM: MIPS: Implement kvm_arch_flush_shadow_all/memslot KVM: MIPS/T&E: Ignore user writes to CP0_Config7 KVM: MIPS: Pass type of fault down to kvm_mips_map_page() KVM: MIPS/T&E: Abstract bad access handling KVM: MIPS/T&E: Treat unhandled guest KSeg0 as MMIO KVM: MIPS/T&E: Handle read only GPA in TLB mod KVM: MIPS/MMU: Add GPA PT mkclean helper KVM: MIPS/MMU: Use generic dirty log & protect helper KVM: MIPS: Clean & flush on dirty page logging enable KVM: MIPS/MMU: Handle dirty logging on GPA faults KVM: MIPS/MMU: Pass GPA PTE bits to KSeg0 GVA PTEs KVM: MIPS/MMU: Pass GPA PTE bits to mapped GVA PTEs KVM: MIPS/MMU: Implement KVM_CAP_SYNC_MMU KVM: MIPS: Claim KVM_CAP_READONLY_MEM support KVM: MIPS/T&E: Move CP0 register access into T&E KVM: MIPS/T&E: Implement CP0_EBase register KVM: MIPS/T&E: Default to reset vector KVM: MIPS/T&E: Expose CP0_EntryLo0/1 registers KVM: MIPS/T&E: Expose read-only CP0_IntCtl register KVM: MIPS: Allow multiple VCPUs to be created Janosch Frank (3): KVM: s390: instruction-execution-protection support KVM: s390: Fix RRBE return code not being CC KVM: s390: Disable dirty log retrieval for UCONTROL guests Jim Mattson (8): kvm: nVMX: Reorder error checks for emulated VMXON Revert "KVM: nested VMX: disable perf cpuid reporting" kvm: nVMX: Prepare for checkpointing L2 state kvm: nVMX: Refactor handle_vmon() kvm: nVMX: Refactor handle_vmptrld() kvm: nVMX: Refactor nested_get_vmcs12_pages() kvm: nVMX: Split VMCS checks from nested_vmx_run() kvm: nVMX: Refactor nested_vmx_run() Jintack Lim (10): KVM: arm/arm64: Abstract virtual timer context into separate structure KVM: arm/arm64: Move cntvoff to each timer context KVM: arm/arm64: Decouple kvm timer functions from virtual timer KVM: arm/arm64: Add the EL1 physical timer context KVM: arm/arm64: Initialize the emulated EL1 physical timer KVM: arm/arm64: Update the physical timer interrupt level KVM: arm/arm64: Set a background timer to the earliest timer expiration KVM: arm/arm64: Set up a background timer for the physical timer emulation KVM: arm64: Add the EL1 physical timer access handler KVM: arm/arm64: Emulate the EL1 phys timer registers Junaid Shahid (13): kvm: x86: mmu: Use symbolic constants for EPT Violation Exit Qualifications kvm: x86: mmu: Rename spte_is_locklessly_modifiable() kvm: x86: mmu: Fast Page Fault path retries kvm: x86: mmu: Refactor accessed/dirty checks in mmu_spte_update/clear kvm: x86: mmu: Introduce a no-tracking version of mmu_spte_update kvm: x86: mmu: Do not use bit 63 for tracking special SPTEs kvm: x86: mmu: Lockless access tracking for Intel CPUs without EPT A bits. kvm: x86: mmu: Update documentation for fast page fault mechanism kvm: x86: mmu: Rename EPT_VIOLATION_READ/WRITE/INSTR constants kvm: x86: mmu: Set SPTE_SPECIAL_MASK within mmu.c kvm: x86: mmu: Update comment in mark_spte_for_access_track kvm: x86: mmu: Move pgtbl walk inside retry loop in fast_page_fault kvm: x86: mmu: Verify that restored PTE has needed perms in fast page fault Li Zhong (5): KVM: PPC: Book 3S: XICS cleanup: remove XICS_RM_REJECT KVM: PPC: Book 3S: XICS: correct the real mode ICP rejecting counter KVM: PPC: Book 3S: XICS: Fix potential issue with duplicate IRQ resends KVM: PPC: Book 3S: XICS: Implement ICS P/Q states KVM: PPC: Book 3S: XICS: Don't lock twice when checking for resend Marc Zyngier (3): arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2 arm/arm64: KVM: Stop propagating cacheability status of a faulted page arm/arm64: KVM: Get rid of KVM_MEMSLOT_INCOHERENT Marcelo Tosatti (3): KVM: x86: add KVM_HC_CLOCK_PAIRING hypercall kvmclock: export kvmclock clocksource and data pointers PTP: add kvm PTP driver Markus Elfring (4): MIPS: KVM: Return directly after a failed copy_from_user() in kvm_arch_vcpu_ioctl() KVM: Return directly after a failed copy_from_user() in kvm_vm_compat_ioctl() KVM: Return an error code only as a constant in kvm_get_dirty_log_protect() KVM: Return an error code only as a constant in kvm_get_dirty_log() Maxim Samoylov (1): KVM: s390: Introduce Vector Enhancements facility 1 to the guest Nicholas Piggin (4): KVM: PPC: Book3S: Change interrupt call to reduce scratch space use on HV KVM: PPC: Book3S: Move 64-bit KVM interrupt handler out from alt section KVM: PPC: Book3S: 64-bit CONFIG_RELOCATABLE support for interrupts powerpc/64: CONFIG_RELOCATABLE support for hmi interrupts Paolo Bonzini (25): KVM: x86: add VCPU stat for KVM_REQ_EVENT processing KVM: vmx: speed up TPR below threshold vmexits KVM: lapic: remove unnecessary KVM_REQ_EVENT on PPR update KVM: lapic: do not set KVM_REQ_EVENT unnecessarily on PPR update KVM: lapic: do not scan IRR when delivering an interrupt Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD Merge tag 'kvm_mips_4.11_1' of git://git.kernel.org/.../jhogan/kvm-mips into HEAD Merge tag 'kvm-s390-next-4.11-2' of git://git.kernel.org/.../kvms390/linux into HEAD KVM: x86: fix compilation Merge tag 'kvmarm-for-4.11' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD kvm: vmx: Use the hardware provided GPA instead of page walk KVM: vmx: clear pending interrupts on KVM_SET_LAPIC kvm: nVMX: move nested events check to kvm_vcpu_running KVM: x86: preparatory changes for APICv cleanups KVM: vmx: move sync_pir_to_irr from apic_find_highest_irr to callers KVM: x86: do not scan IRR twice on APICv vmentry kvm: x86: do not use KVM_REQ_EVENT for APICv interrupt injection KVM: VMX: use vmcs_set/clear_bits for CPU-based execution controls KVM: only retrieve memslots once when initializing cache KVM: use separate generations for each address space KVM: race-free exit from KVM_RUN without POSIX signals KVM: x86: remove code for lazy FPU handling Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD kvm: fix page struct leak in handle_vmon Paul Mackerras (25): KVM: PPC: Book3S HV: Don't try to signal cpu -1 KVM: PPC: Book3S HV: Fix H_PROD to actually wake the target vcpu powerpc/64: Don't try to use radix MMU under a hypervisor powerpc/pseries: Fixes for the "ibm,architecture-vec-5" options powerpc/64: Enable use of radix MMU under hypervisor on POWER9 powerpc/64: More definitions for POWER9 powerpc/64: Export pgtable_cache and pgtable_cache_add for KVM powerpc/64: Make type of partition table flush depend on partition type powerpc/64: Allow for relocation-on interrupts from guest to host KVM: PPC: Book3S HV: Add userspace interfaces for POWER9 MMU KVM: PPC: Book3S HV: Set process table for HPT guests on POWER9 KVM: PPC: Book3S HV: Use ASDR for HPT guests on POWER9 KVM: PPC: Book3S HV: Add basic infrastructure for radix guests KVM: PPC: Book3S HV: Modify guest entry/exit paths to handle radix guests KVM: PPC: Book3S HV: Page table construction and page faults for radix guests KVM: PPC: Book3S HV: MMU notifier callbacks for radix guests KVM: PPC: Book3S HV: Implement dirty page logging for radix guests KVM: PPC: Book3S HV: Make HPT-specific hypercalls return error in radix mode KVM: PPC: Book3S HV: Invalidate TLB on radix guest vcpu movement KVM: PPC: Book3S HV: Allow guest exit path to have MMU on KVM: PPC: Book3S HV: Invalidate ERAT on guest entry/exit for POWER9 DD1 KVM: PPC: Book3S HV: Enable radix guest support Merge remote-tracking branch 'remotes/powerpc/topic/ppc-kvm' into kvm-ppc-next Merge remote-tracking branch 'remotes/powerpc/topic/ppc-kvm' into kvm-ppc-next KVM: PPC: Book3S HV: Disable HPT resizing on POWER9 for now Piotr Luc (1): kvm: x86: Expose Intel VPOPCNTDQ feature to guest Radim Krčmář (12): KVM: x86: don't allow kernel irqchip with split irqchip KVM: x86: decouple irqchip_in_kernel() and pic_irqchip() KVM: x86: make pic setup code look like ioapic setup KVM: x86: refactor pic setup in kvm_set_routing_entry KVM: x86: prevent setup of invalid routes KVM: x86: simplify conditions with split/kernel irqchip KVM: x86: use delivery to self in hyperv synic KVM: x86: replace kvm_apic_id with kvm_{x,x2}apic_id KVM: x86: make interrupt delivery fast and slow path behave the same KVM: x86: allow hotplug of VCPU with APIC ID over 0xff Merge branch 'x86/cpufeature' of git://git.kernel.org/.../tip/tip into next ptp_kvm: try to detect hypercall availability Shanker Donthineni (1): KVM: arm/arm64: vgic: Stop injecting the MSI occurrence twice Thomas Huth (2): KVM: PPC: Book3S PR: Refactor program interrupt related code into separate function KVM: PPC: Book3S HV: Turn "KVM guest htab" message into a debug message Tom Lendacky (1): kvm: svm: Use the hardware provided GPA instead of page walk Vijaya Kumar K (8): KVM: arm/arm64: vgic: Implement support for userspace access KVM: arm/arm64: vgic: Add distributor and redistributor access KVM: arm/arm64: vgic: Introduce find_reg_by_id() irqchip/gic-v3: Add missing system register definitions KVM: arm/arm64: vgic: Introduce VENG0 and VENG1 fields to vmcr struct KVM: arm/arm64: vgic: Implement VGICv3 CPU interface access KVM: arm/arm64: vgic: Implement KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO ioctl KVM: arm/arm64: Documentation: Update arm-vgic-v3.txt Vipin K Parashar (1): KVM: PPC: Book3S PR: Ratelimit copy data failure error messages Waiman Long (2): x86/paravirt: Change vcp_is_preempted() arg type to long x86/kvm: Provide optimized version of vcpu_is_preempted() for x86-64 Wei Yongjun (1): KVM: PPC: Book 3S: Fix error return in kvm_vm_ioctl_create_spapr_tce() Documentation/virtual/kvm/api.txt | 217 +++- Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 11 +- Documentation/virtual/kvm/hypercalls.txt | 35 + Documentation/virtual/kvm/locking.txt | 31 +- arch/arm/include/asm/kvm_host.h | 3 - arch/arm/include/asm/kvm_mmu.h | 12 +- arch/arm/include/uapi/asm/kvm.h | 13 + arch/arm/kvm/Makefile | 5 +- arch/arm/kvm/arm.c | 8 +- arch/arm/kvm/mmu.c | 20 +- arch/arm/kvm/reset.c | 9 +- arch/arm/kvm/vgic-v3-coproc.c | 35 + arch/arm64/include/asm/kvm_host.h | 3 - arch/arm64/include/asm/kvm_mmu.h | 6 +- arch/arm64/include/uapi/asm/kvm.h | 13 + arch/arm64/kvm/Makefile | 4 +- arch/arm64/kvm/reset.c | 9 +- arch/arm64/kvm/sys_regs.c | 92 +- arch/arm64/kvm/sys_regs.h | 4 + arch/arm64/kvm/vgic-sys-reg-v3.c | 346 ++++++ arch/mips/include/asm/kvm_host.h | 183 ++- arch/mips/include/asm/mmu_context.h | 9 +- arch/mips/include/uapi/asm/kvm.h | 2 + arch/mips/kvm/Kconfig | 2 + arch/mips/kvm/dyntrans.c | 52 +- arch/mips/kvm/emulate.c | 432 +++---- arch/mips/kvm/entry.c | 155 ++- arch/mips/kvm/interrupt.c | 5 +- arch/mips/kvm/mips.c | 503 +++----- arch/mips/kvm/mmu.c | 1329 +++++++++++++++++---- arch/mips/kvm/tlb.c | 291 +---- arch/mips/kvm/trap_emul.c | 734 ++++++++++-- arch/powerpc/include/asm/book3s/64/mmu.h | 18 +- arch/powerpc/include/asm/exception-64s.h | 83 +- arch/powerpc/include/asm/head-64.h | 2 +- arch/powerpc/include/asm/hvcall.h | 11 + arch/powerpc/include/asm/kvm_book3s.h | 26 +- arch/powerpc/include/asm/kvm_book3s_64.h | 22 + arch/powerpc/include/asm/kvm_host.h | 27 +- arch/powerpc/include/asm/kvm_ppc.h | 17 +- arch/powerpc/include/asm/opal.h | 7 - arch/powerpc/include/asm/prom.h | 17 +- arch/powerpc/include/asm/reg.h | 4 + arch/powerpc/include/uapi/asm/kvm.h | 22 + arch/powerpc/kernel/asm-offsets.c | 2 + arch/powerpc/kernel/exceptions-64s.S | 63 +- arch/powerpc/kernel/idle_book3s.S | 6 +- arch/powerpc/kernel/prom_init.c | 18 +- arch/powerpc/kvm/Makefile | 3 +- arch/powerpc/kvm/book3s.c | 1 + arch/powerpc/kvm/book3s_32_mmu.c | 3 +- arch/powerpc/kvm/book3s_64_mmu.c | 3 +- arch/powerpc/kvm/book3s_64_mmu_hv.c | 743 +++++++++--- arch/powerpc/kvm/book3s_64_mmu_radix.c | 716 +++++++++++ arch/powerpc/kvm/book3s_64_vio.c | 1 + arch/powerpc/kvm/book3s_hv.c | 268 ++++- arch/powerpc/kvm/book3s_hv_builtin.c | 38 +- arch/powerpc/kvm/book3s_hv_rm_mmu.c | 87 +- arch/powerpc/kvm/book3s_hv_rm_xics.c | 156 ++- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 154 ++- arch/powerpc/kvm/book3s_pr.c | 130 +- arch/powerpc/kvm/book3s_segment.S | 32 +- arch/powerpc/kvm/book3s_xics.c | 192 +-- arch/powerpc/kvm/book3s_xics.h | 7 +- arch/powerpc/kvm/powerpc.c | 42 +- arch/powerpc/mm/init-common.c | 3 +- arch/powerpc/mm/init_64.c | 35 + arch/powerpc/mm/pgtable-radix.c | 2 + arch/powerpc/mm/pgtable_64.c | 16 +- arch/powerpc/platforms/powernv/opal-wrappers.S | 70 +- arch/powerpc/platforms/powernv/pci-ioda.c | 5 - arch/powerpc/platforms/pseries/firmware.c | 2 +- arch/powerpc/platforms/pseries/lpar.c | 29 + arch/s390/kvm/gaccess.c | 26 +- arch/s390/kvm/gaccess.h | 19 +- arch/s390/kvm/guestdbg.c | 120 +- arch/s390/kvm/intercept.c | 25 +- arch/s390/kvm/kvm-s390.c | 46 +- arch/s390/kvm/kvm-s390.h | 12 +- arch/s390/kvm/priv.c | 30 +- arch/s390/kvm/vsie.c | 3 + arch/s390/mm/pgtable.c | 2 +- arch/s390/tools/gen_facilities.c | 2 + arch/x86/include/asm/desc.h | 58 +- arch/x86/include/asm/kvm_emulate.h | 1 + arch/x86/include/asm/kvm_host.h | 30 +- arch/x86/include/asm/kvmclock.h | 6 + arch/x86/include/asm/paravirt.h | 2 +- arch/x86/include/asm/processor.h | 12 +- arch/x86/include/asm/qspinlock.h | 2 +- arch/x86/include/asm/vmx.h | 28 +- arch/x86/include/uapi/asm/kvm_para.h | 9 + arch/x86/kernel/asm-offsets_64.c | 9 + arch/x86/kernel/ioport.c | 5 + arch/x86/kernel/kvm.c | 26 +- arch/x86/kernel/kvmclock.c | 5 +- arch/x86/kernel/paravirt-spinlocks.c | 2 +- arch/x86/kernel/process.c | 10 + arch/x86/kvm/cpuid.c | 10 +- arch/x86/kvm/emulate.c | 20 +- arch/x86/kvm/hyperv.c | 4 +- arch/x86/kvm/i8259.c | 16 +- arch/x86/kvm/irq.h | 19 +- arch/x86/kvm/irq_comm.c | 29 +- arch/x86/kvm/lapic.c | 197 ++- arch/x86/kvm/lapic.h | 16 +- arch/x86/kvm/mmu.c | 509 +++++--- arch/x86/kvm/svm.c | 57 +- arch/x86/kvm/vmx.c | 909 +++++++------- arch/x86/kvm/x86.c | 274 +++-- drivers/ptp/Kconfig | 12 + drivers/ptp/Makefile | 1 + drivers/ptp/ptp_kvm.c | 207 ++++ include/kvm/arm_arch_timer.h | 39 +- include/kvm/arm_vgic.h | 18 +- include/linux/irqchip/arm-gic-v3.h | 45 +- include/linux/kvm_host.h | 18 +- include/uapi/linux/kvm.h | 21 +- include/uapi/linux/kvm_para.h | 2 + virt/kvm/arm/arch_timer.c | 201 +++- virt/kvm/arm/hyp/timer-sr.c | 13 +- virt/kvm/arm/vgic/vgic-debug.c | 283 +++++ virt/kvm/arm/vgic/vgic-init.c | 4 + virt/kvm/arm/vgic/vgic-irqfd.c | 3 + virt/kvm/arm/vgic/vgic-its.c | 6 +- virt/kvm/arm/vgic/vgic-kvm-device.c | 231 +++- virt/kvm/arm/vgic/vgic-mmio-v2.c | 87 +- virt/kvm/arm/vgic/vgic-mmio-v3.c | 203 +++- virt/kvm/arm/vgic/vgic-mmio.c | 167 ++- virt/kvm/arm/vgic/vgic-mmio.h | 24 + virt/kvm/arm/vgic/vgic-v2.c | 12 +- virt/kvm/arm/vgic/vgic-v3.c | 40 +- virt/kvm/arm/vgic/vgic.c | 66 +- virt/kvm/arm/vgic/vgic.h | 83 +- virt/kvm/kvm_main.c | 113 +- 135 files changed, 8892 insertions(+), 3213 deletions(-) create mode 100644 arch/arm/kvm/vgic-v3-coproc.c create mode 100644 arch/arm64/kvm/vgic-sys-reg-v3.c create mode 100644 arch/powerpc/kvm/book3s_64_mmu_radix.c create mode 100644 arch/x86/include/asm/kvmclock.h create mode 100644 drivers/ptp/ptp_kvm.c