Linus, The following changes since commit 136057256686de39cc3a07c2e39ef6bc43003ff6: Linux 5.16-rc2 (2021-11-21 13:47:39 -0800) 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 7cfc5c653b07782e7059527df8dc1e3143a7591e: KVM: fix avic_set_running for preemptable kernels (2021-11-30 07:40:48 -0500) ---------------------------------------------------------------- ARM64: * Fix constant sign extension affecting TCR_EL2 and preventing running on ARMv8.7 models due to spurious bits being set * Fix use of helpers using PSTATE early on exit by always sampling it as soon as the exit takes place * Move pkvm's 32bit handling into a common helper RISC-V: * Fix incorrect KVM_MAX_VCPUS value * Unmap stage2 mapping when deleting/moving a memslot x86: * Fix and downgrade BUG_ON due to uninitialized cache * Many APICv and MOVE_ENC_CONTEXT_FROM fixes * Correctly emulate TLB flushes around nested vmentry/vmexit and when the nested hypervisor uses VPID * Prevent modifications to CPUID after the VM has run * Other smaller bugfixes Generic: * Memslot handling bugfixes ---------------------------------------------------------------- This is the large bugfix pull request that I mentioned just before rc2, with the APICv and MOVE_ENC_CONTEXT_FROM/COPY_ENC_CONTEXT_FROM bug shakedown. It missed rc3 due to Thanksgiving (half of the patches are mine and I wanted to get reviews on them for obvious reasons). Thanks, Paolo Anup Patel (1): RISC-V: KVM: Fix incorrect KVM_MAX_VCPUS value Ben Gardon (1): KVM: x86/mmu: Fix TLB flush range when handling disconnected pt Catalin Marinas (1): KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 Hou Wenlong (2): KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() KVM: x86/mmu: Pass parameter flush as false in kvm_tdp_mmu_zap_collapsible_sptes() Juergen Gross (1): x86/kvm: remove unused ack_notifier callbacks Lai Jiangshan (2): KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() Maciej S. Szmigiero (1): KVM: selftests: page_table_test: fix calculation of guest_test_phys_mem Marc Zyngier (2): KVM: arm64: Save PSTATE early on exit KVM: arm64: Move pkvm's special 32bit handling into a generic infrastructure Paolo Bonzini (24): Merge tag 'kvm-riscv-fixes-5.16-1' of https://github.com/kvm-riscv/linux into HEAD Merge tag 'kvmarm-fixes-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD Merge branch 'kvm-5.16-fixes-pre-rc2' into HEAD KVM: VMX: do not use uninitialized gfn_to_hva_cache KVM: downgrade two BUG_ONs to WARN_ON_ONCE KVM: x86: ignore APICv if LAPIC is not enabled selftests: fix check for circular KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM selftests: sev_migrate_tests: free all VMs KVM: SEV: expose KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM capability KVM: MMU: shadow nested paging does not have PKU KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled KVM: x86: check PIR even for vCPUs with disabled APICv KVM: x86: Use a stable condition around all VT-d PI paths KVM: SEV: do not use list_replace_init on an empty list KVM: SEV: cleanup locking for KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM KVM: SEV: initialize regions_list of a mirror VM KVM: SEV: move mirror status to destination of KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM selftests: sev_migrate_tests: add tests for KVM_CAP_VM_COPY_ENC_CONTEXT_FROM KVM: SEV: Do COPY_ENC_CONTEXT_FROM with both VMs locked KVM: SEV: Prohibit migration of a VM that has mirrors KVM: SEV: do not take kvm->lock when destroying KVM: SEV: accept signals in sev_lock_two_vms KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled KVM: fix avic_set_running for preemptable kernels Sean Christopherson (9): KVM: Ensure local memslot copies operate on up-to-date arch-specific data KVM: Disallow user memslot with size that exceeds "unsigned long" KVM: RISC-V: Unmap stage2 mapping when deleting/moving a memslot KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 KVM: x86/mmu: Use yield-safe TDP MMU root iter in MMU notifier unmapping KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path KVM: x86/mmu: Handle "default" period when selectively waking kthread Vitaly Kuznetsov (3): KVM: selftests: Avoid KVM_SET_CPUID2 after KVM_RUN in hyperv_features test KVM: x86: Forbid KVM_SET_CPUID{,2} after KVM_RUN KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE arch/arm64/include/asm/kvm_arm.h | 4 +- arch/arm64/kvm/hyp/include/hyp/switch.h | 14 ++ arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 7 +- arch/arm64/kvm/hyp/nvhe/switch.c | 8 +- arch/arm64/kvm/hyp/vhe/switch.c | 4 + arch/riscv/include/asm/kvm_host.h | 8 +- arch/riscv/kvm/mmu.c | 6 + arch/x86/kvm/ioapic.h | 1 - arch/x86/kvm/irq.h | 1 - arch/x86/kvm/lapic.c | 2 +- arch/x86/kvm/mmu/mmu.c | 97 ++++++------ arch/x86/kvm/mmu/tdp_mmu.c | 38 ++--- arch/x86/kvm/mmu/tdp_mmu.h | 5 +- arch/x86/kvm/svm/avic.c | 16 +- arch/x86/kvm/svm/sev.c | 161 ++++++++++---------- arch/x86/kvm/svm/svm.c | 1 - arch/x86/kvm/svm/svm.h | 1 + arch/x86/kvm/vmx/nested.c | 49 +++--- arch/x86/kvm/vmx/posted_intr.c | 20 +-- arch/x86/kvm/vmx/vmx.c | 66 +++++---- arch/x86/kvm/x86.c | 66 +++++++-- arch/x86/kvm/x86.h | 7 +- tools/testing/selftests/kvm/kvm_create_max_vcpus.c | 30 ++++ tools/testing/selftests/kvm/kvm_page_table_test.c | 2 +- .../testing/selftests/kvm/x86_64/hyperv_features.c | 140 ++++++++--------- .../selftests/kvm/x86_64/sev_migrate_tests.c | 165 +++++++++++++++++++-- virt/kvm/kvm_main.c | 56 ++++--- 27 files changed, 623 insertions(+), 352 deletions(-)