From: Sean Christopherson <seanjc@google.com>
To: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
f734222792@gmail.com, Vitaly Kuznetsov <vkuznets@redhat.com>,
Sashiko Bot <sashiko-bot@kernel.org>,
Yosry Ahmed <yosry@kernel.org>
Subject: [PATCH v3 12/13] KVM: selftests: Dedup assembly code for VMLAUNCH and VMRESUME
Date: Wed, 26 Aug 2026 16:39:18 -0700 [thread overview]
Message-ID: <20260826233919.998904-13-seanjc@google.com> (raw)
In-Reply-To: <20260826233919.998904-1-seanjc@google.com>
Dedup the assembly code from VMLAUNCH vs. VMRESUME, the difference is
literally only the actual VM-Enter instruction.
No functional change intended.
Cc: Yosry Ahmed <yosry@kernel.org>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/include/x86/vmx.h | 74 +++++++------------
1 file changed, 26 insertions(+), 48 deletions(-)
diff --git a/tools/testing/selftests/kvm/include/x86/vmx.h b/tools/testing/selftests/kvm/include/x86/vmx.h
index 3def8df902a2..fa01341e22bc 100644
--- a/tools/testing/selftests/kvm/include/x86/vmx.h
+++ b/tools/testing/selftests/kvm/include/x86/vmx.h
@@ -359,55 +359,33 @@ static inline u64 vmptrst(void)
return value;
}
-static inline int vmlaunch(void)
-{
- int ret;
-
- if (enable_evmcs)
- return evmcs_vmlaunch();
-
- __asm__ __volatile__("push $0;"
- "vmwrite %%rsp, %[host_rsp];"
- "lea 1f(%%rip), %%rax;"
- "vmwrite %%rax, %[host_rip];"
- VMX_SWITCH_GPRS_ASM
- "vmlaunch;"
- "incq (%%rsp);"
- "1: ;"
- VMX_SWITCH_GPRS_ASM
- "pop %%rax;"
- : [ret]"=&a"(ret)
- : [host_rsp]"r"((u64)HOST_RSP),
- [host_rip]"r"((u64)HOST_RIP),
- GUEST_REGS_OFFSETS
- : "memory", "cc");
- return ret;
-}
-
-static inline int vmresume(void)
-{
- int ret;
-
- if (enable_evmcs)
- return evmcs_vmresume();
-
- __asm__ __volatile__("push $0;"
- "vmwrite %%rsp, %[host_rsp];"
- "lea 1f(%%rip), %%rax;"
- "vmwrite %%rax, %[host_rip];"
- VMX_SWITCH_GPRS_ASM
- "vmresume;"
- "incq (%%rsp);"
- "1: ;"
- VMX_SWITCH_GPRS_ASM
- "pop %%rax;"
- : [ret]"=&a"(ret)
- : [host_rsp]"r"((u64)HOST_RSP),
- [host_rip]"r"((u64)HOST_RIP),
- GUEST_REGS_OFFSETS
- : "memory", "cc");
- return ret;
+#define BUILD_VMX_VM_ENTRY_HELPERS(insn) \
+static inline int insn(void) \
+{ \
+ int ret; \
+ \
+ if (enable_evmcs) \
+ return evmcs_##insn(); \
+ \
+ __asm__ __volatile__("push $0;" \
+ "vmwrite %%rsp, %[host_rsp];" \
+ "lea 1f(%%rip), %%rax;" \
+ "vmwrite %%rax, %[host_rip];" \
+ VMX_SWITCH_GPRS_ASM \
+ __stringify(insn)";" \
+ "incq (%%rsp);" \
+ "1: ;" \
+ VMX_SWITCH_GPRS_ASM \
+ "pop %%rax;" \
+ : [ret]"=&a"(ret) \
+ : [host_rsp]"r"((u64)HOST_RSP), \
+ [host_rip]"r"((u64)HOST_RIP), \
+ GUEST_REGS_OFFSETS \
+ : "memory", "cc"); \
+ return ret; \
}
+BUILD_VMX_VM_ENTRY_HELPERS(vmlaunch)
+BUILD_VMX_VM_ENTRY_HELPERS(vmresume)
static inline void vmcall(void)
{
--
2.55.0.887.g758fc8c411-goog
next prev parent reply other threads:[~2026-08-26 23:39 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-26 23:39 [PATCH v3 00/13] KVM: nVMX: Adjust VMPTRLD/VMPTRST behavior with active eVMCS Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 01/13] KVM: nVMX: Make VMPTRLD result in #UD when eVMCS is used Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 02/13] KVM: nVMX: Make VMPTRST return eVMCS GPA when it " Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 03/13] KVM: selftests: Don't clobber RFLAGS in happy path of __KVM_ASM_SAFE() Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 04/13] KVM: selftests: Adapt to the updated VMPTRST behavior when eVMCS is used Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 05/13] KVM: selftests: Check VMPTRLD with active eVMCS Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 06/13] KVM: selftests: Assert success in vmptrst(), kill off vmptrstz() Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 07/13] KVM: selftests: Always assert that vmxon() and prepare_for_vmx_operation() succeed Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 08/13] KVM: selftests: Always assert that vmclear() succeeds Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 09/13] KVM: selftests: Always assert that vmptrld() succeeds Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 10/13] KVM: selftests: Drop useless return code from load_vmcs() Sean Christopherson
2026-08-26 23:39 ` [PATCH v3 11/13] KVM: selftests: Add macros to handle simple VMX instructions Sean Christopherson
2026-08-26 23:39 ` Sean Christopherson [this message]
2026-08-27 6:45 ` [PATCH v3 12/13] KVM: selftests: Dedup assembly code for VMLAUNCH and VMRESUME Yosry Ahmed
2026-08-27 16:40 ` Sean Christopherson
2026-08-27 16:49 ` Yosry Ahmed
2026-08-27 17:17 ` Sean Christopherson
2026-08-27 17:21 ` Yosry Ahmed
2026-08-27 17:33 ` Sean Christopherson
2026-08-27 17:50 ` Yosry Ahmed
2026-08-27 18:07 ` Sean Christopherson
2026-08-27 18:21 ` Yosry Ahmed
2026-08-26 23:39 ` [PATCH v3 13/13] KVM: selftests: Add and use double-underscore versions of vmlaunch() and vmresume() Sean Christopherson
2026-08-27 6:51 ` Yosry Ahmed
2026-08-27 20:28 ` Sean Christopherson
2026-08-27 20:37 ` Yosry Ahmed
2026-08-27 20:48 ` Sean Christopherson
2026-08-27 20:56 ` Yosry Ahmed
2026-08-27 21:02 ` Sean Christopherson
2026-08-27 21:05 ` Yosry Ahmed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260826233919.998904-13-seanjc@google.com \
--to=seanjc@google.com \
--cc=f734222792@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=sashiko-bot@kernel.org \
--cc=vkuznets@redhat.com \
--cc=yosry@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.