[PATCH v5 0/4] KVM: x86: User-return MSR fix+cleanups

Sean Christopherson
2025-10-30T19:15:32Z

Fix a bug in TDX where KVM will incorrectly update the current user-return
MSR values when the TDX-Module doesn't actually clobber the relevant MSRs,
and then cleanup and harden the user-return MSR code, e.g. against forced
reboots.

v5:
- Set TDX MSRs to their expected post-run value during
tdx_prepare_switch_to_guest() instead of trying to predict what value
is in hardware after the SEAMCALL. [Yan]
- Free user_return_msrs at kvm_x86_vendor_exit(), not kvm_x86_exit(). [Chao]

v4:
- https://lore.kernel.org/all/20251016222816.141523-1-seanjc@google.com
- Tweak changelog regarding the "cache" rename to try and better capture
the details of how .curr is used. [Yan]
- Synchronize the cache immediately after TD-Exit to minimize the window
where the cache is stale (even with the reboot change, it's still nice to
minimize the window). [Yan]
- Leave the user-return notifier registered on reboot/shutdown so that the
common code doesn't have to be paranoid about being interrupted.

v3: https://lore.kernel.org/all/15fa59ba7f6f849082fb36735e784071539d5ad2.1758002303.git.houwenlong.hwl@antgroup.com

v1 (cache): https://lore.kernel.org/all/20250919214259.1584273-1-seanjc@google.com

Hou Wenlong (1):
KVM: x86: Don't disable IRQs when unregistering user-return notifier

Sean Christopherson (3):
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

arch/x86/include/asm/kvm_host.h | 1 -
arch/x86/kvm/vmx/tdx.c | 52 +++++++++++-------------
arch/x86/kvm/vmx/tdx.h | 1 -
arch/x86/kvm/x86.c | 72 ++++++++++++++++++++-------------
4 files changed, 66 insertions(+), 60 deletions(-)

base-commit: 4cc167c50eb19d44ac7e204938724e685e3d8057
--
2.51.1.930.gacf6e81ea2-goog