[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251126014455.788131-4-seanjc@google.com>
Date: Tue, 25 Nov 2025 17:44:50 -0800
From: Sean Christopherson <seanjc@...gle.com>
To: Paolo Bonzini <pbonzini@...hat.com>
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
Sean Christopherson <seanjc@...gle.com>
Subject: [GIT PULL] KVM: x86: Misc changes for 6.19
The bulk of the vendor agnostic x86 changes for 6.19. There are multiple
noteworthy changes, though nothing stands out as being _that_ much more
interesting than the rest.
The following changes since commit 211ddde0823f1442e4ad052a2f30f050145ccada:
Linux 6.18-rc2 (2025-10-19 15:19:16 -1000)
are available in the Git repository at:
https://github.com/kvm-x86/linux.git tags/kvm-x86-misc-6.19
for you to fetch changes up to c09816f2afce0f89f176c4bc58dc57ec9f204998:
KVM: x86: Remove unused declaration kvm_mmu_may_ignore_guest_pat() (2025-11-20 07:26:35 -0800)
----------------------------------------------------------------
KVM x86 misc changes for 6.19:
- Fix an async #PF bug where KVM would clear the completion queue when the
guest transitioned in and out of paging mode, e.g. when handling an SMI and
then returning to paged mode via RSM.
- Fix a bug where TDX would effectively corrupt user-return MSR values if the
TDX Module rejects VP.ENTER and thus doesn't clobber host MSRs as expected.
- Leave the user-return notifier used to restore MSRs registered when
disabling virtualization, and instead pin kvm.ko. Restoring host MSRs via
IPI callback is either pointless (clean reboot) or dangerous (forced reboot)
since KVM has no idea what code it's interrupting.
- Use the checked version of {get,put}_user(), as Linus wants to kill them
off, and they're measurably faster on modern CPUs due to the unchecked
versions containing an LFENCE.
- Fix a long-lurking bug where KVM's lack of catch-up logic for periodic APIC
timers can result in a hard lockup in the host.
- Revert the periodic kvmclock sync logic now that KVM doesn't use a
clocksource that's subject to NPT corrections.
- Clean up KVM's handling of MMIO Stale Data and L1TF, and bury the latter
behind CONFIG_CPU_MITIGATIONS.
- Context switch XCR0, XSS, and PKRU outside of the entry/exit fastpath as
the only reason they were handled in the faspath was to paper of a bug in
the core #MC code that has long since been fixed.
- Add emulator support for AVX MOV instructions to play nice with emulated
devices whose PCI BARs guest drivers like to access with large multi-byte
instructions.
----------------------------------------------------------------
Binbin Wu (1):
KVM: x86: Add a helper to dedup loading guest/host XCR0 and XSS
Brendan Jackman (1):
KVM: x86: Unify L1TF flushing under per-CPU variable
Chang S. Bae (1):
KVM: x86: Refactor REX prefix handling in instruction emulation
Chao Gao (1):
KVM: x86: Allocate/free user_return_msrs at kvm.ko (un)loading time
Hou Wenlong (1):
KVM: x86: Don't disable IRQs when unregistering user-return notifier
Lei Chen (3):
Revert "x86: kvm: introduce periodic global clock updates"
Revert "x86: kvm: rate-limit global clock updates"
KVM: x86: remove comment about ntp correction sync for
Maxim Levitsky (2):
KVM: x86: Fix a semi theoretical bug in kvm_arch_async_page_present_queued()
KVM: x86: Don't clear async #PF queue when CR0.PG is disabled (e.g. on #SMI)
Paolo Bonzini (9):
KVM: x86: Add support for emulating MOVNTDQA
KVM: x86: Move Src2Shift up one bit (use bits 36:32 for Src2 in the emulator)
KVM: x86: Improve formatting of the emulator's flags table
KVM: x86: Move op_prefix to struct x86_emulate_ctxt (from x86_decode_insn())
KVM: x86: Share emulator's common register decoding code
KVM: x86: Add x86_emulate_ops.get_xcr() callback
KVM: x86: Add AVX support to the emulator's register fetch and writeback
KVM: x86: Add emulator support for decoding VEX prefixes
KVM: x86: Enable support for emulating AVX MOV instructions
Pawan Gupta (1):
x86/bugs: Use VM_CLEAR_CPU_BUFFERS in VMX as well
Sean Christopherson (18):
KVM: x86: Add a helper to dedup reporting of unhandled VM-Exits
KVM: TDX: Explicitly set user-return MSRs that *may* be clobbered by the TDX-Module
KVM: x86: WARN if user-return MSR notifier is registered on exit
KVM: x86: Leave user-return notifier registered on reboot/shutdown
KVM: x86: Use "checked" versions of get_user() and put_user()
KVM: x86: WARN if hrtimer callback for periodic APIC timer fires with period=0
KVM: x86: Grab lapic_timer in a local variable to cleanup periodic code
KVM: VMX: Use on-stack copy of @flags in __vmx_vcpu_run()
x86/bugs: Decouple ALTERNATIVE usage from VERW macro definition
x86/bugs: Use an x86 feature to track the MMIO Stale Data mitigation
KVM: VMX: Handle MMIO Stale Data in VM-Enter assembly via ALTERNATIVES_2
x86/bugs: KVM: Move VM_CLEAR_CPU_BUFFERS into SVM as SVM_CLEAR_CPU_BUFFERS
KVM: VMX: Bundle all L1 data cache flush mitigation code together
KVM: VMX: Disable L1TF L1 data cache flush if CONFIG_CPU_MITIGATIONS=n
KVM: SVM: Handle #MCs in guest outside of fastpath
KVM: VMX: Handle #MCs on VM-Enter/TD-Enter outside of the fastpath
KVM: x86: Load guest/host XCR0 and XSS outside of the fastpath run loop
KVM: x86: Load guest/host PKRU outside of the fastpath run loop
Yue Haibing (1):
KVM: x86: Remove unused declaration kvm_mmu_may_ignore_guest_pat()
fuqiang wang (2):
KVM: x86: Explicitly set new periodic hrtimer expiration in apic_timer_fn()
KVM: x86: Fix VM hard lockup after prolonged inactivity with periodic HV timer
arch/x86/include/asm/cpufeatures.h | 5 ++
arch/x86/include/asm/hardirq.h | 4 +-
arch/x86/include/asm/kvm_host.h | 7 +--
arch/x86/include/asm/nospec-branch.h | 30 ++++++------
arch/x86/kernel/cpu/bugs.c | 22 ++++-----
arch/x86/kvm/emulate.c | 319 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------
arch/x86/kvm/fpu.h | 66 +++++++++++++++++++++++++++
arch/x86/kvm/hyperv.c | 2 +-
arch/x86/kvm/kvm_emulate.h | 20 ++++++--
arch/x86/kvm/lapic.c | 44 ++++++++++++------
arch/x86/kvm/mmu.h | 2 -
arch/x86/kvm/mmu/mmu.c | 2 +-
arch/x86/kvm/mmu/paging_tmpl.h | 2 +-
arch/x86/kvm/mmu/spte.c | 2 +-
arch/x86/kvm/svm/svm.c | 27 ++++-------
arch/x86/kvm/svm/vmenter.S | 6 ++-
arch/x86/kvm/vmx/nested.c | 2 +-
arch/x86/kvm/vmx/run_flags.h | 10 ++--
arch/x86/kvm/vmx/tdx.c | 65 ++++++++++----------------
arch/x86/kvm/vmx/tdx.h | 1 -
arch/x86/kvm/vmx/vmenter.S | 29 +++++++-----
arch/x86/kvm/vmx/vmx.c | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------
arch/x86/kvm/x86.c | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------
arch/x86/kvm/x86.h | 16 ++++++-
24 files changed, 706 insertions(+), 500 deletions(-)
Powered by blists - more mailing lists