Linus, The following changes since commit 009384b38034111bf2c0c7bfb2740f5bd45c176c: irqchip/gic-v4.1: Eagerly vmap vPEs (2020-03-24 12:15:51 +0000) are available in the Git repository at: https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus for you to fetch changes up to 514ccc194971d0649e4e7ec8a9b3a6e33561d7bf: x86/kvm: fix a missing-prototypes "vmread_error" (2020-04-02 15:17:45 -0400) ---------------------------------------------------------------- ARM: * GICv4.1 support * 32bit host removal PPC: * secure (encrypted) using under the Protected Execution Framework ultravisor s390: * allow disabling GISA (hardware interrupt injection) and protected VMs/ultravisor support. x86: * New dirty bitmap flag that sets all bits in the bitmap when dirty page logging is enabled; this is faster because it doesn't require bulk modification of the page tables. * Initial work on making nested SVM event injection more similar to VMX, and less buggy. * Various cleanups to MMU code (though the big ones and related optimizations were delayed to 5.8). Instead of using cr3 in function names which occasionally means eptp, KVM too has standardized on "pgd". * A large refactoring of CPUID features, which now use an array that parallels the core x86_features. * Some removal of pointer chasing from kvm_x86_ops, which will also be switched to static calls as soon as they are available. * New Tigerlake CPUID features. * More bugfixes, optimizations and cleanups. Generic: * selftests: cleanups, new MMU notifier stress test, steal-time test * CSV output for kvm_stat. KVM/MIPS has been broken since 5.5, it does not compile due to a patch committed by MIPS maintainers. I had already prepared a fix, but the MIPS maintainers prefer to fix it in generic code rather than KVM so they are taking care of it. ---------------------------------------------------------------- The branch shows up as based on a random commit because of an ARM topic branch that you have already merged. Most of it was developed as usual in the past couple of months---no rebases or back merges here. However, I also had 4 more patches to split a large file, but git hates resolving that merge ("-X histogram" or "-X patience" make things a little better, but not something that you shoud care about). I will rebase those, retest, and send them separately. Thanks, Paolo Andrew Jones (17): KVM: selftests: aarch64: Use stream when given KVM: selftests: Remove unnecessary defines KVM: selftests: aarch64: Remove unnecessary ifdefs KVM: selftests: Rename vm_guest_mode_params KVM: selftests: Introduce vm_guest_mode_params KVM: selftests: Introduce num-pages conversion utilities KVM: selftests: Rework debug message printing KVM: selftests: Convert some printf's to pr_info's KVM: selftests: Fix unknown ucall command asserts KVM: selftests: s390x: Provide additional num-guest-pages adjustment selftests: KVM: SVM: Add vmcall test to gitignore KVM: selftests: Share common API documentation KVM: selftests: Enable printf format warnings for TEST_ASSERT KVM: selftests: Use consistent message for test skipping KVM: selftests: virt_map should take npages, not size KVM: selftests: Introduce steal-time test KVM: selftests: Rework timespec functions and usage Ben Gardon (8): KVM: selftests: Create a demand paging test KVM: selftests: Add demand paging content to the demand paging test KVM: selftests: Add configurable demand paging delay KVM: selftests: Add memory size parameter to the demand paging test KVM: selftests: Pass args to vCPU in global vCPU args struct KVM: selftests: Add support for vcpu_args_set to aarch64 and s390x KVM: selftests: Support multiple vCPUs in demand paging test KVM: selftests: Time guest demand paging Chia-I Wu (1): KVM: vmx: rewrite the comment in vmx_get_mt_mask Christian Borntraeger (12): Merge branch 'pvbase' of git://git.kernel.org/.../kvms390/linux into HEAD KVM: s390/mm: Make pages accessible before destroying the guest KVM: s390: protvirt: Add SCLP interrupt handling KVM: s390: protvirt: do not inject interrupts after start KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED selftests: KVM: s390: fixup fprintf format error in reset.c selftests: KVM: s390: fix format strings for access reg test selftests: KVM: s390: fix early guest crash selftests: KVM: s390: test more register variants for the reset ioctl selftests: KVM: s390: check for registers to NOT change on reset KVM: s390: mark sie block as 512 byte aligned s390/gmap: return proper error code on ksm unsharing Claudio Imbrenda (2): s390/mm: provide memory management functions for protected KVM guests KVM: s390/mm: handle guest unpin events Eric Hankland (1): KVM: x86: Adjust counter sample period after a wrmsr Fabiano Rosas (1): KVM: PPC: Book3S HV: Skip kvmppc_uvmem_free if Ultravisor is not supported Greg Kurz (3): KVM: PPC: Book3S PR: Fix kernel crash with PR KVM KVM: PPC: Book3S PR: Move kvmppc_mmu_init() into PR KVM KVM: PPC: Kill kvmppc_ops::mmu_destroy() and kvmppc_mmu_destroy() Gustavo Romero (1): KVM: PPC: Book3S HV: Treat TM-related invalid form instructions on P9 like the valid ones Jan Kiszka (1): KVM: x86: Trace the original requested CPUID function in kvm_cpuid() Janosch Frank (24): s390/protvirt: Add sysfs firmware interface for Ultravisor information KVM: s390: protvirt: Add UV debug trace KVM: s390: add new variants of UV CALL KVM: s390: protvirt: Add initial vm and cpu lifecycle handling KVM: s390: protvirt: Secure memory is not mergeable KVM: s390: protvirt: Handle SE notification interceptions KVM: s390: protvirt: Instruction emulation KVM: s390: protvirt: Handle spec exception loops KVM: s390: protvirt: Add new gprs location handling KVM: S390: protvirt: Introduce instruction data area bounce buffer KVM: s390: protvirt: handle secure guest prefix pages KVM: s390: protvirt: Write sthyi data to instruction data area KVM: s390: protvirt: STSI handling KVM: s390: protvirt: disallow one_reg KVM: s390: protvirt: Do only reset registers that are accessible KVM: s390: protvirt: Only sync fmt4 registers KVM: s390: protvirt: Add program exception injection KVM: s390: protvirt: UV calls in support of diag308 0, 1 KVM: s390: protvirt: Report CPU state to Ultravisor KVM: s390: protvirt: Support cmd 5 operation state KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 KVM: s390: protvirt: Add UV cpu reset calls DOCUMENTATION: Protected virtual machine introduction and IPL KVM: s390: protvirt: Add KVM api documentation Jay Zhou (2): KVM: x86: enable dirty log gradually in small chunks kvm: selftests: Support dirty log initial-all-set test Joe Perches (2): KVM: PPC: Use fallthrough; KVM: s390: Use fallthrough; KarimAllah Ahmed (1): KVM: arm64: Use the correct timer structure to access the physical counter Laurent Dufour (2): KVM: PPC: Book3S HV: Check caller of H_SVM_* Hcalls KVM: PPC: Book3S HV: H_SVM_INIT_START must call UV_RETURN Marc Zyngier (16): arm: Unplug KVM from the build system arm: Remove KVM from config files arm: Remove 32bit KVM host support arm: Remove HYP/Stage-2 page-table support arm: Remove GICv3 vgic compatibility macros arm: Remove the ability to set HYP vectors outside of the decompressor MAINTAINERS: RIP KVM/arm KVM: arm64: GICv4.1: Let doorbells be auto-enabled KVM: arm64: GICv4.1: Add direct injection capability to SGI registers KVM: arm64: GICv4.1: Allow SGIs to switch between HW and SW interrupts KVM: arm64: GICv4.1: Plumb SGI implementation selection in the distributor KVM: arm64: GICv4.1: Reload VLPI configuration on distributor enable/disable KVM: arm64: GICv4.1: Allow non-trapping WFI when using HW SGIs KVM: arm64: GICv4.1: Expose HW-based SGIs in debugfs Merge branch 'kvm-arm64/gic-v4.1' into kvmarm-master/next Merge tag 'kvm-arm-removal' into kvmarm-master/next Miaohe Lin (6): KVM: x86: Fix print format and coding style KVM: x86: eliminate some unreachable code KVM: VMX: Add 'else' to split mutually exclusive case KVM: apic: remove unused function apic_lvt_vector() KVM: Fix some obsolete comments KVM: nSVM: Remove an obsolete comment. Michael Ellerman (1): KVM: PPC: Book3S HV: Use RADIX_PTE_INDEX_SIZE in Radix MMU code Michael Mueller (2): KVM: s390: protvirt: Implement interrupt injection KVM: s390: introduce module parameter kvm.use_gisa Michael Roth (1): KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests Oliver Upton (2): KVM: SVM: Inhibit APIC virtualization for X2APIC guest KVM: nVMX: Consolidate nested MTF checks to helper function Paolo Bonzini (17): KVM: x86: handle GBPAGE CPUID adjustment for EPT with generic code KVM: CPUID: add support for supervisor states KVM: x86: unify callbacks to load paging root KVM: x86: rename set_cr3 callback and related flags to load_mmu_pgd KVM: nSVM: do not change host intercepts while nested VM is running KVM: nSVM: ignore L1 interrupt window while running L2 with V_INTR_MASKING=1 KVM: nSVM: implement check_nested_events for interrupts KVM: nSVM: avoid loss of pending IRQ/NMI before entering L2 KVM: X86: correct meaningless kvm_apicv_activated() check Merge branch 'kvm-null-pointer-fix' into HEAD Merge tag 'kvm-s390-next-5.7-1' of git://git.kernel.org/.../kvms390/linux into HEAD KVM: nVMX: remove side effects from nested_vmx_exit_reflected KVM: nSVM: check for EFER.SVME=1 before entering guest Merge tag 'kvm-s390-next-5.7-2' of git://git.kernel.org/.../kvms390/linux into HEAD Merge tag 'kvm-s390-next-5.7-3' of git://git.kernel.org/.../kvms390/linux into HEAD Merge tag 'kvmarm-5.7' of git://git.kernel.org/.../kvmarm/kvmarm into HEAD Merge tag 'kvm-ppc-next-5.7-1' of git://git.kernel.org/.../paulus/powerpc into HEAD Paul Mackerras (2): KVM: PPC: Book3S HV: Use __gfn_to_pfn_memslot in HPT page fault handler KVM: PPC: Book3S HV: Add a capability for enabling secure guests Peter Xu (3): KVM: Remove unnecessary asm/kvm_host.h includes KVM: Drop gfn_to_pfn_atomic() KVM: Documentation: Update fast page fault for indirect sp Qian Cai (1): x86/kvm: fix a missing-prototypes "vmread_error" Sean Christopherson (132): KVM: x86: Add EMULTYPE_PF when emulation is triggered by a page fault KVM: x86: Move gpa_val and gpa_available into the emulator context KVM: x86: Allocate new rmap and large page tracking when moving memslot KVM: Reinstall old memslots if arch preparation fails KVM: Don't free new memslot if allocation of said memslot fails KVM: PPC: Move memslot memory allocation into prepare_memory_region() KVM: x86: Allocate memslot resources during prepare_memory_region() KVM: Drop kvm_arch_create_memslot() KVM: Explicitly free allocated-but-unused dirty bitmap KVM: Refactor error handling for setting memory region KVM: Move setting of memslot into helper routine KVM: Drop "const" attribute from old memslot in commit_memory_region() KVM: x86: Free arrays for old memslot when moving memslot's base gfn KVM: Move memslot deletion to helper function KVM: Simplify kvm_free_memslot() and all its descendents KVM: Clean up local variable usage in __kvm_set_memory_region() KVM: Provide common implementation for generic dirty log functions KVM: Ensure validity of memslot with respect to kvm_get_dirty_log() KVM: Terminate memslot walks via used_slots KVM: Dynamically size memslot array based on number of used slots KVM: selftests: Add test for KVM_SET_USER_MEMORY_REGION KVM: x86/mmu: Move kvm_arch_flush_remote_tlbs_memslot() to mmu.c KVM: x86/mmu: Use range-based TLB flush for dirty log memslot flush KVM: x86/mmu: Consolidate open coded variants of memslot TLB flushes KVM: x86: Gracefully handle __vmalloc() failure during VM allocation KVM: x86: Directly return __vmalloc() result in ->vm_alloc() KVM: x86: Consolidate VM allocation and free for VMX and SVM KVM: x86/mmu: Ignore guest CR3 on fast root switch for direct MMU KVM: x86/mmu: Reuse the current root if possible for fast switch KVM: nVMX: Properly handle userspace interrupt window request KVM: x86/mmu: Don't drop level/direct from MMU role calculation KVM: x86/mmu: Drop kvm_mmu_extended_role.cr4_la57 hack KVM: nVMX: Allow L1 to use 5-level page walks for nested EPT KVM: nVMX: Rename nested_ept_get_cr3() to nested_ept_get_eptp() KVM: nVMX: Rename EPTP validity helper and associated variables KVM: x86/mmu: Rename kvm_mmu->get_cr3() to ->get_guest_pgd() KVM: nVMX: Drop unnecessary check on ept caps for execute-only KVM: x86: Fix warning due to implicit truncation on 32-bit KVM KVM: x86: Refactor I/O emulation helpers to provide vcpu-only variant KVM: x86: Explicitly pass an exception struct to check_intercept KVM: x86: Move emulation-only helpers to emulate.c KVM: x86: Dynamically allocate per-vCPU emulation context KVM: x86: Move kvm_emulate.h into KVM's private directory KVM: x86: Shrink the usercopy region of the emulation context KVM: x86: Return -E2BIG when KVM_GET_SUPPORTED_CPUID hits max entries KVM: x86: Refactor loop around do_cpuid_func() to separate helper KVM: x86: Simplify handling of Centaur CPUID leafs KVM: x86: Clean up error handling in kvm_dev_ioctl_get_cpuid() KVM: x86: Check userspace CPUID array size after validating sub-leaf KVM: x86: Move CPUID 0xD.1 handling out of the index>0 loop KVM: x86: Check for CPUID 0xD.N support before validating array size KVM: x86: Warn on zero-size save state for valid CPUID 0xD.N sub-leaf KVM: x86: Refactor CPUID 0xD.N sub-leaf entry creation KVM: x86: Clean up CPUID 0x7 sub-leaf loop KVM: x86: Drop the explicit @index from do_cpuid_7_mask() KVM: x86: Drop redundant boot cpu checks on SSBD feature bits KVM: x86: Consolidate CPUID array max num entries checking KVM: x86: Hoist loop counter and terminator to top of __do_cpuid_func() KVM: x86: Refactor CPUID 0x4 and 0x8000001d handling KVM: x86: Encapsulate CPUID entries and metadata in struct KVM: x86: Drop redundant array size check KVM: x86: Use common loop iterator when handling CPUID 0xD.N KVM: VMX: Add helpers to query Intel PT mode KVM: x86: Calculate the supported xcr0 mask at load time KVM: x86: Use supported_xcr0 to detect MPX support KVM: x86: Make kvm_mpx_supported() an inline function KVM: x86: Clear output regs for CPUID 0x14 if PT isn't exposed to guest KVM: x86: Drop explicit @func param from ->set_supported_cpuid() KVM: x86: Use u32 for holding CPUID register value in helpers KVM: x86: Replace bare "unsigned" with "unsigned int" in cpuid helpers KVM: x86: Introduce cpuid_entry_{get,has}() accessors KVM: x86: Introduce cpuid_entry_{change,set,clear}() mutators KVM: x86: Refactor cpuid_mask() to auto-retrieve the register KVM: x86: Handle MPX CPUID adjustment in VMX code KVM: x86: Handle INVPCID CPUID adjustment in VMX code KVM: x86: Handle UMIP emulation CPUID adjustment in VMX code KVM: x86: Handle PKU CPUID adjustment in VMX code KVM: x86: Handle RDTSCP CPUID adjustment in VMX code KVM: x86: Handle Intel PT CPUID adjustment in VMX code KVM: x86: Refactor handling of XSAVES CPUID adjustment KVM: x86: Introduce kvm_cpu_caps to replace runtime CPUID masking KVM: SVM: Convert feature updates from CPUID to KVM cpu caps KVM: VMX: Convert feature updates from CPUID to KVM cpu caps KVM: x86: Move XSAVES CPUID adjust to VMX's KVM cpu cap update KVM: x86: Add a helper to check kernel support when setting cpu cap KVM: x86: Use KVM cpu caps to mark CR4.LA57 as not-reserved KVM: x86: Use KVM cpu caps to track UMIP emulation KVM: x86: Fold CPUID 0x7 masking back into __do_cpuid_func() KVM: x86: Remove the unnecessary loop on CPUID 0x7 sub-leafs KVM: x86: Squash CPUID 0x2.0 insanity for modern CPUs KVM: x86: Remove stateful CPUID handling KVM: x86: Do host CPUID at load time to mask KVM cpu caps KVM: x86: Override host CPUID results with kvm_cpu_caps KVM: x86: Set emulated/transmuted feature bits via kvm_cpu_caps KVM: x86: Use kvm_cpu_caps to detect Intel PT support KVM: x86: Do kvm_cpuid_array capacity checks in terminal functions KVM: x86: Use KVM cpu caps to detect MSR_TSC_AUX virt support KVM: VMX: Directly use VMX capabilities helper to detect RDTSCP support KVM: x86: Check for Intel PT MSR virtualization using KVM cpu caps KVM: VMX: Directly query Intel PT mode when refreshing PMUs KVM: SVM: Refactor logging of NPT enabled/disabled KVM: x86/mmu: Merge kvm_{enable,disable}_tdp() into a common function KVM: x86/mmu: Configure max page level during hardware setup KVM: x86: Don't propagate MMU lpage support to memslot.disallow_lpage KVM: Drop largepages_enabled and its accessor/mutator KVM: x86: Move VMX's host_efer to common x86 code KVM: nSVM: Expose SVM features to L1 iff nested is enabled KVM: nSVM: Advertise and enable NRIPS for L1 iff nrips is enabled KVM: x86: Move nSVM CPUID 0x8000000A handling into common x86 code KVM: x86: Add helpers to perform CPUID-based guest vendor check KVM x86: Extend AMD specific guest behavior to Hygon virtual CPUs KVM: x86: Fix CPUID range checks for Hypervisor and Centaur classes KVM: x86: Refactor out-of-range logic to contain the madness KVM: x86: Refactor kvm_cpuid() param that controls out-of-range logic KVM: x86: Add requested index to the CPUID tracepoint KVM: x86: Add blurb to CPUID tracepoint when using max basic leaf values KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support KVM: VMX: Fold loaded_vmcs_init() into alloc_loaded_vmcs() KVM: VMX: Gracefully handle faults on VMXON KVM: Fix out of range accesses to memslots KVM: selftests: Fix cosmetic copy-paste error in vm_mem_region_move() KVM: Pass kvm_init()'s opaque param to additional arch funcs KVM: x86: Move init-only kvm_x86_ops to separate struct KVM: VMX: Move hardware_setup() definition below vmx_x86_ops KVM: VMX: Configure runtime hooks using vmx_x86_ops KVM: x86: Set kvm_x86_ops only after ->hardware_setup() completes KVM: x86: Copy kvm_x86_ops by value to eliminate layer of indirection KVM: x86: Drop __exit from kvm_x86_ops' hardware_unsetup() KVM: VMX: Annotate vmx_x86_ops as __initdata KVM: SVM: Annotate svm_x86_ops as __initdata KVM: VMX: Add a trampoline to fix VMREAD error handling KVM: x86: Fix BUILD_BUG() in __cpuid_entry_get_reg() w/ CONFIG_UBSAN=y Stefan Raspl (4): tools/kvm_stat: rework command line sequence and message texts tools/kvm_stat: switch to argparse tools/kvm_stat: add command line switch '-s' to set update interval tools/kvm_stat: add command line switch '-c' to log in csv format Suravee Suthikulpanit (1): kvm: svm: Introduce GA Log tracepoint for AVIC Ulrich Weigand (1): KVM: s390/interrupt: do not pin adapter interrupt pages Uros Bizjak (1): KVM: VMX: access regs array in vmenter.S in its natural order Vasily Gorbik (3): s390/protvirt: introduce host side setup s390/protvirt: add ultravisor initialization s390/mm: add (non)secure page access exceptions handlers Vitaly Kuznetsov (5): KVM: nVMX: stop abusing need_vmcs12_to_shadow_sync for eVMCS mapping KVM: nVMX: properly handle errors in nested_vmx_handle_enlightened_vmptrld() KVM: selftests: define and use EVMCS_VERSION KVM: selftests: test enlightened vmenter with wrong eVMCS version KVM: selftests: enlightened VMPTRLD with an incorrect GPA Wainer dos Santos Moschetta (2): selftests: kvm: Introduce the TEST_FAIL macro selftests: kvm: Uses TEST_FAIL in tests/utilities Wanpeng Li (5): KVM: LAPIC: Recalculate apic map in batch KVM: X86: trigger kvmclock sync request just once on VM creation KVM: VMX: Micro-optimize vmexit time when not exposing PMU KVM: X86: Delay read msr data iff writes ICR MSR KVM: X86: Micro-optimize IPI fastpath delay Xiaoyao Li (1): KVM: x86: Code style cleanup in kvm_arch_dev_ioctl() Zhenyu Wang (2): KVM: x86: Expose AVX512 VP2INTERSECT in cpuid for TGL KVM: x86: Expose fast short REP MOV for supported cpuid Documentation/admin-guide/kernel-parameters.txt | 5 + Documentation/virt/kvm/api.rst | 128 +- Documentation/virt/kvm/arm/hyp-abi.rst | 5 + Documentation/virt/kvm/devices/s390_flic.rst | 11 +- Documentation/virt/kvm/index.rst | 2 + Documentation/virt/kvm/locking.rst | 11 +- Documentation/virt/kvm/s390-pv-boot.rst | 84 ++ Documentation/virt/kvm/s390-pv.rst | 116 ++ MAINTAINERS | 6 +- arch/arm/Kconfig | 2 - arch/arm/Makefile | 1 - arch/arm/configs/axm55xx_defconfig | 2 - arch/arm/include/asm/arch_gicv3.h | 114 -- arch/arm/include/asm/kvm_arm.h | 239 ---- arch/arm/include/asm/kvm_asm.h | 77 -- arch/arm/include/asm/kvm_coproc.h | 36 - arch/arm/include/asm/kvm_emulate.h | 372 ----- arch/arm/include/asm/kvm_host.h | 456 ------ arch/arm/include/asm/kvm_hyp.h | 127 -- arch/arm/include/asm/kvm_mmu.h | 435 ------ arch/arm/include/asm/kvm_ras.h | 14 - arch/arm/include/asm/pgtable-3level.h | 20 - arch/arm/include/asm/pgtable.h | 9 - arch/arm/include/asm/sections.h | 6 +- arch/arm/include/asm/stage2_pgtable.h | 75 - arch/arm/include/asm/virt.h | 17 - arch/arm/include/uapi/asm/kvm.h | 314 ----- arch/arm/kernel/asm-offsets.c | 11 - arch/arm/kernel/hyp-stub.S | 39 +- arch/arm/kernel/vmlinux-xip.lds.S | 8 - arch/arm/kernel/vmlinux.lds.S | 8 - arch/arm/kernel/vmlinux.lds.h | 10 - arch/arm/kvm/Kconfig | 59 - arch/arm/kvm/Makefile | 43 - arch/arm/kvm/coproc.c | 1455 -------------------- arch/arm/kvm/coproc.h | 130 -- arch/arm/kvm/coproc_a15.c | 39 - arch/arm/kvm/coproc_a7.c | 42 - arch/arm/kvm/emulate.c | 166 --- arch/arm/kvm/guest.c | 387 ------ arch/arm/kvm/handle_exit.c | 175 --- arch/arm/kvm/hyp/Makefile | 34 - arch/arm/kvm/hyp/banked-sr.c | 70 - arch/arm/kvm/hyp/cp15-sr.c | 72 - arch/arm/kvm/hyp/entry.S | 121 -- arch/arm/kvm/hyp/hyp-entry.S | 295 ---- arch/arm/kvm/hyp/s2-setup.c | 22 - arch/arm/kvm/hyp/switch.c | 242 ---- arch/arm/kvm/hyp/tlb.c | 68 - arch/arm/kvm/hyp/vfp.S | 57 - arch/arm/kvm/init.S | 157 --- arch/arm/kvm/interrupts.S | 36 - arch/arm/kvm/irq.h | 16 - arch/arm/kvm/reset.c | 86 -- arch/arm/kvm/trace.h | 86 -- arch/arm/kvm/vgic-v3-coproc.c | 27 - arch/arm/mach-exynos/Kconfig | 2 +- arch/arm/mm/mmu.c | 26 - arch/arm64/include/asm/kvm_emulate.h | 3 +- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/fpsimd.c | 1 - arch/arm64/kvm/guest.c | 1 - arch/arm64/kvm/hyp/switch.c | 1 - arch/arm64/kvm/sys_regs.c | 1 - arch/arm64/kvm/sys_regs_generic_v8.c | 1 - arch/mips/include/asm/kvm_host.h | 2 +- arch/mips/kvm/mips.c | 75 +- arch/powerpc/include/asm/kvm_asm.h | 3 + arch/powerpc/include/asm/kvm_book3s_uvmem.h | 6 + arch/powerpc/include/asm/kvm_host.h | 1 + arch/powerpc/include/asm/kvm_ppc.h | 21 +- arch/powerpc/kvm/book3s.c | 25 +- arch/powerpc/kvm/book3s.h | 1 + arch/powerpc/kvm/book3s_32_mmu.c | 2 +- arch/powerpc/kvm/book3s_32_mmu_host.c | 2 +- arch/powerpc/kvm/book3s_64_mmu.c | 2 +- arch/powerpc/kvm/book3s_64_mmu_host.c | 2 +- arch/powerpc/kvm/book3s_64_mmu_hv.c | 119 +- arch/powerpc/kvm/book3s_64_mmu_radix.c | 2 +- arch/powerpc/kvm/book3s_64_vio.c | 1 - arch/powerpc/kvm/book3s_64_vio_hv.c | 1 - arch/powerpc/kvm/book3s_hv.c | 90 +- arch/powerpc/kvm/book3s_hv_tm.c | 28 +- arch/powerpc/kvm/book3s_hv_tm_builtin.c | 16 +- arch/powerpc/kvm/book3s_hv_uvmem.c | 19 +- arch/powerpc/kvm/book3s_pr.c | 26 +- arch/powerpc/kvm/booke.c | 26 +- arch/powerpc/kvm/booke.h | 2 - arch/powerpc/kvm/e500.c | 1 - arch/powerpc/kvm/e500_mmu.c | 4 - arch/powerpc/kvm/e500mc.c | 1 - arch/powerpc/kvm/mpic.c | 1 - arch/powerpc/kvm/powerpc.c | 37 +- arch/powerpc/kvm/timing.h | 1 - arch/s390/boot/Makefile | 2 +- arch/s390/boot/uv.c | 20 + arch/s390/include/asm/gmap.h | 6 + arch/s390/include/asm/kvm_host.h | 117 +- arch/s390/include/asm/mmu.h | 2 + arch/s390/include/asm/mmu_context.h | 1 + arch/s390/include/asm/page.h | 5 + arch/s390/include/asm/pgtable.h | 35 +- arch/s390/include/asm/uv.h | 251 +++- arch/s390/kernel/Makefile | 1 + arch/s390/kernel/entry.h | 2 + arch/s390/kernel/pgm_check.S | 4 +- arch/s390/kernel/setup.c | 9 +- arch/s390/kernel/uv.c | 414 ++++++ arch/s390/kvm/Makefile | 2 +- arch/s390/kvm/diag.c | 6 +- arch/s390/kvm/gaccess.c | 23 +- arch/s390/kvm/intercept.c | 123 +- arch/s390/kvm/interrupt.c | 401 +++--- arch/s390/kvm/kvm-s390.c | 597 ++++++-- arch/s390/kvm/kvm-s390.h | 51 +- arch/s390/kvm/priv.c | 13 +- arch/s390/kvm/pv.c | 303 ++++ arch/s390/mm/fault.c | 78 ++ arch/s390/mm/gmap.c | 72 +- arch/x86/include/asm/kvm_host.h | 105 +- arch/x86/include/asm/kvm_page_track.h | 3 +- arch/x86/include/asm/vmx.h | 12 + arch/x86/kvm/cpuid.c | 944 +++++++------ arch/x86/kvm/cpuid.h | 151 +- arch/x86/kvm/emulate.c | 57 +- arch/x86/kvm/hyperv.c | 8 +- arch/x86/kvm/i8254.c | 2 +- arch/x86/kvm/kvm_cache_regs.h | 10 +- arch/x86/{include/asm => kvm}/kvm_emulate.h | 43 +- arch/x86/kvm/lapic.c | 85 +- arch/x86/kvm/lapic.h | 2 + arch/x86/kvm/mmu.h | 10 +- arch/x86/kvm/mmu/mmu.c | 209 +-- arch/x86/kvm/mmu/page_track.c | 16 +- arch/x86/kvm/mmu/paging_tmpl.h | 4 +- arch/x86/kvm/pmu.c | 34 +- arch/x86/kvm/pmu.h | 11 +- arch/x86/kvm/svm.c | 407 +++--- arch/x86/kvm/trace.h | 50 +- arch/x86/kvm/vmx/capabilities.h | 25 +- arch/x86/kvm/vmx/evmcs.h | 7 + arch/x86/kvm/vmx/nested.c | 188 +-- arch/x86/kvm/vmx/nested.h | 8 +- arch/x86/kvm/vmx/ops.h | 27 +- arch/x86/kvm/vmx/pmu_intel.c | 8 +- arch/x86/kvm/vmx/vmenter.S | 72 +- arch/x86/kvm/vmx/vmx.c | 665 +++++---- arch/x86/kvm/vmx/vmx.h | 8 +- arch/x86/kvm/x86.c | 787 ++++++----- arch/x86/kvm/x86.h | 28 +- include/kvm/arm_vgic.h | 3 + include/linux/kvm_host.h | 71 +- include/uapi/linux/kvm.h | 47 +- tools/arch/x86/include/asm/unistd_64.h | 3 + tools/kvm/kvm_stat/kvm_stat | 256 ++-- tools/kvm/kvm_stat/kvm_stat.txt | 44 +- tools/testing/selftests/kvm/.gitignore | 7 +- tools/testing/selftests/kvm/Makefile | 12 +- tools/testing/selftests/kvm/clear_dirty_log_test.c | 4 + tools/testing/selftests/kvm/demand_paging_test.c | 661 +++++++++ tools/testing/selftests/kvm/dirty_log_test.c | 107 +- tools/testing/selftests/kvm/include/evmcs.h | 2 + tools/testing/selftests/kvm/include/kvm_util.h | 126 +- tools/testing/selftests/kvm/include/test_util.h | 28 +- tools/testing/selftests/kvm/kvm_create_max_vcpus.c | 8 +- .../testing/selftests/kvm/lib/aarch64/processor.c | 41 +- tools/testing/selftests/kvm/lib/aarch64/ucall.c | 2 +- tools/testing/selftests/kvm/lib/assert.c | 6 +- tools/testing/selftests/kvm/lib/io.c | 12 +- tools/testing/selftests/kvm/lib/kvm_util.c | 170 ++- .../testing/selftests/kvm/lib/kvm_util_internal.h | 59 +- tools/testing/selftests/kvm/lib/s390x/processor.c | 78 +- tools/testing/selftests/kvm/lib/test_util.c | 93 ++ tools/testing/selftests/kvm/lib/x86_64/processor.c | 201 +-- tools/testing/selftests/kvm/lib/x86_64/svm.c | 2 +- tools/testing/selftests/kvm/lib/x86_64/vmx.c | 4 +- tools/testing/selftests/kvm/s390x/memop.c | 2 +- tools/testing/selftests/kvm/s390x/resets.c | 138 +- tools/testing/selftests/kvm/s390x/sync_regs_test.c | 13 +- tools/testing/selftests/kvm/steal_time.c | 352 +++++ .../selftests/kvm/x86_64/cr4_cpuid_sync_test.c | 6 +- tools/testing/selftests/kvm/x86_64/evmcs_test.c | 35 +- tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c | 8 +- .../selftests/kvm/x86_64/mmio_warning_test.c | 6 +- .../selftests/kvm/x86_64/platform_info_test.c | 6 +- .../selftests/kvm/x86_64/set_memory_region_test.c | 141 ++ tools/testing/selftests/kvm/x86_64/smm_test.c | 2 +- tools/testing/selftests/kvm/x86_64/state_test.c | 10 +- .../testing/selftests/kvm/x86_64/svm_vmcall_test.c | 6 +- .../testing/selftests/kvm/x86_64/sync_regs_test.c | 4 +- .../kvm/x86_64/vmx_close_while_nested_test.c | 4 +- .../selftests/kvm/x86_64/vmx_dirty_log_test.c | 17 +- .../kvm/x86_64/vmx_set_nested_state_test.c | 4 +- .../selftests/kvm/x86_64/vmx_tsc_adjust_test.c | 8 +- tools/testing/selftests/kvm/x86_64/xss_msr_test.c | 2 +- virt/kvm/arm/arch_timer.c | 2 +- virt/kvm/arm/arm.c | 60 +- virt/kvm/arm/mmu.c | 20 +- virt/kvm/arm/psci.c | 1 - virt/kvm/arm/vgic/vgic-debug.c | 14 +- virt/kvm/arm/vgic/vgic-mmio-v3.c | 81 +- virt/kvm/arm/vgic/vgic-mmio.c | 88 +- virt/kvm/arm/vgic/vgic-v3.c | 2 + virt/kvm/arm/vgic/vgic-v4.c | 107 +- virt/kvm/arm/vgic/vgic.h | 1 + virt/kvm/kvm_main.c | 663 ++++++--- 206 files changed, 7871 insertions(+), 9702 deletions(-) create mode 100644 Documentation/virt/kvm/s390-pv-boot.rst create mode 100644 Documentation/virt/kvm/s390-pv.rst delete mode 100644 arch/arm/include/asm/kvm_arm.h delete mode 100644 arch/arm/include/asm/kvm_asm.h delete mode 100644 arch/arm/include/asm/kvm_coproc.h delete mode 100644 arch/arm/include/asm/kvm_emulate.h delete mode 100644 arch/arm/include/asm/kvm_host.h delete mode 100644 arch/arm/include/asm/kvm_hyp.h delete mode 100644 arch/arm/include/asm/kvm_mmu.h delete mode 100644 arch/arm/include/asm/kvm_ras.h delete mode 100644 arch/arm/include/asm/stage2_pgtable.h delete mode 100644 arch/arm/include/uapi/asm/kvm.h delete mode 100644 arch/arm/kvm/Kconfig delete mode 100644 arch/arm/kvm/Makefile delete mode 100644 arch/arm/kvm/coproc.c delete mode 100644 arch/arm/kvm/coproc.h delete mode 100644 arch/arm/kvm/coproc_a15.c delete mode 100644 arch/arm/kvm/coproc_a7.c delete mode 100644 arch/arm/kvm/emulate.c delete mode 100644 arch/arm/kvm/guest.c delete mode 100644 arch/arm/kvm/handle_exit.c delete mode 100644 arch/arm/kvm/hyp/Makefile delete mode 100644 arch/arm/kvm/hyp/banked-sr.c delete mode 100644 arch/arm/kvm/hyp/cp15-sr.c delete mode 100644 arch/arm/kvm/hyp/entry.S delete mode 100644 arch/arm/kvm/hyp/hyp-entry.S delete mode 100644 arch/arm/kvm/hyp/s2-setup.c delete mode 100644 arch/arm/kvm/hyp/switch.c delete mode 100644 arch/arm/kvm/hyp/tlb.c delete mode 100644 arch/arm/kvm/hyp/vfp.S delete mode 100644 arch/arm/kvm/init.S delete mode 100644 arch/arm/kvm/interrupts.S delete mode 100644 arch/arm/kvm/irq.h delete mode 100644 arch/arm/kvm/reset.c delete mode 100644 arch/arm/kvm/trace.h delete mode 100644 arch/arm/kvm/vgic-v3-coproc.c create mode 100644 arch/s390/kernel/uv.c create mode 100644 arch/s390/kvm/pv.c rename arch/x86/{include/asm => kvm}/kvm_emulate.h (93%) create mode 100644 tools/testing/selftests/kvm/demand_paging_test.c create mode 100644 tools/testing/selftests/kvm/lib/test_util.c create mode 100644 tools/testing/selftests/kvm/steal_time.c create mode 100644 tools/testing/selftests/kvm/x86_64/set_memory_region_test.c