Effectively v4 of Binbin's series to handle hypercall exits to userspace in a generic manner, so that TDX Binbin and Kai, this is fairly different that what we last discussed. While sorting through Binbin's latest patch, I stumbled on what I think/hope is an approach that will make life easier for TDX. Rather than have common code set the return value, _and_ have TDX implement a callback to do the same for user return MSRs, just use the callback for all paths. As for abusing vcpu->run->hypercall.ret... It's obviously a bit gross, but I think it's a lesser evil than having multiple a one-line wrappers just to trampoline in the return code. v4: - Fix an SEV-* bug where KVM trips the WARN in is_64_bit_mode(). - Add a pile of reworks to (hopefully) avoid as much duplicate code when TDX comes along. v3: https://lore.kernel.org/all/20240826022255.361406-1-binbin.wu@xxxxxxxxxxxxxxx Binbin Wu (1): KVM: x86: Add a helper to check for user interception of KVM hypercalls Sean Christopherson (5): KVM: x86: Play nice with protected guests in complete_hypercall_exit() KVM: x86: Move "emulate hypercall" function declarations to x86.h KVM: x86: Bump hypercall stat prior to fully completing hypercall KVM: x86: Always complete hypercall via function callback KVM: x86: Refactor __kvm_emulate_hypercall() into a macro arch/x86/include/asm/kvm_host.h | 6 ---- arch/x86/kvm/svm/sev.c | 4 +-- arch/x86/kvm/x86.c | 50 +++++++++++---------------------- arch/x86/kvm/x86.h | 28 ++++++++++++++++++ 4 files changed, 47 insertions(+), 41 deletions(-) base-commit: 4d911c7abee56771b0219a9fbf0120d06bdc9c14 -- 2.47.0.338.g60cca15819-goog