]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: SEV: Macrofy GPR swapping in __svm_sev_es_vcpu_run()
authorChang S. Bae <chang.seok.bae@intel.com>
Fri, 15 May 2026 17:27:34 +0000 (13:27 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 30 May 2026 20:41:39 +0000 (22:41 +0200)
Convert the SEV-ES entry code to use macros for saving guest GPRs,
following VMX/SVM paths. Drop now-unused register offsets and
__VCPU_REGS_* defines.

No functional change intended.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Link: https://patch.msgid.link/20260512011502.53072-4-chang.seok.bae@intel.com/
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/include/asm/kvm_vcpu_regs.h
arch/x86/kvm/svm/vmenter.S

index c470e40a00aa45a062348aaaab18fe7556eb1733..aa77ccb7aaa587f7eda0212073fa6af12c7632a0 100644 (file)
@@ -182,14 +182,14 @@ enum kvm_reg {
        VCPU_REGS_RSI = __VCPU_REGS_RSI,
        VCPU_REGS_RDI = __VCPU_REGS_RDI,
 #ifdef CONFIG_X86_64
-       VCPU_REGS_R8  = __VCPU_REGS_R8,
-       VCPU_REGS_R9  = __VCPU_REGS_R9,
-       VCPU_REGS_R10 = __VCPU_REGS_R10,
-       VCPU_REGS_R11 = __VCPU_REGS_R11,
-       VCPU_REGS_R12 = __VCPU_REGS_R12,
-       VCPU_REGS_R13 = __VCPU_REGS_R13,
-       VCPU_REGS_R14 = __VCPU_REGS_R14,
-       VCPU_REGS_R15 = __VCPU_REGS_R15,
+       VCPU_REGS_R8  = 8,
+       VCPU_REGS_R9,
+       VCPU_REGS_R10,
+       VCPU_REGS_R11,
+       VCPU_REGS_R12,
+       VCPU_REGS_R13,
+       VCPU_REGS_R14,
+       VCPU_REGS_R15,
 #endif
        VCPU_REGS_RIP,
        NR_VCPU_REGS,
index 650fabf5871dceb95c992304122361a1b6624495..d9f1528fab2b48e04fc8a5b7af622d2eb5341bf3 100644 (file)
 #define __VCPU_REGS_RSI  6
 #define __VCPU_REGS_RDI  7
 
-#ifdef CONFIG_X86_64
-#define __VCPU_REGS_R8   8
-#define __VCPU_REGS_R9   9
-#define __VCPU_REGS_R10 10
-#define __VCPU_REGS_R11 11
-#define __VCPU_REGS_R12 12
-#define __VCPU_REGS_R13 13
-#define __VCPU_REGS_R14 14
-#define __VCPU_REGS_R15 15
-#endif
-
 #ifdef __ASSEMBLER__
 
 #define REG_NUM_INVALID                100
index 06a8cb58f18732d424de9e5d5ca916e05367e51c..99701892f8ec67f31e1b6519ffc79287e63e2de5 100644 (file)
@@ -211,18 +211,7 @@ SYM_FUNC_END(__svm_vcpu_run)
 
 #ifdef CONFIG_KVM_AMD_SEV
 
-
-#ifdef CONFIG_X86_64
 #define SEV_ES_GPRS_BASE 0x300
-#define SEV_ES_RBX     (SEV_ES_GPRS_BASE + __VCPU_REGS_RBX * WORD_SIZE)
-#define SEV_ES_RBP     (SEV_ES_GPRS_BASE + __VCPU_REGS_RBP * WORD_SIZE)
-#define SEV_ES_RSI     (SEV_ES_GPRS_BASE + __VCPU_REGS_RSI * WORD_SIZE)
-#define SEV_ES_RDI     (SEV_ES_GPRS_BASE + __VCPU_REGS_RDI * WORD_SIZE)
-#define SEV_ES_R12     (SEV_ES_GPRS_BASE + __VCPU_REGS_R12 * WORD_SIZE)
-#define SEV_ES_R13     (SEV_ES_GPRS_BASE + __VCPU_REGS_R13 * WORD_SIZE)
-#define SEV_ES_R14     (SEV_ES_GPRS_BASE + __VCPU_REGS_R14 * WORD_SIZE)
-#define SEV_ES_R15     (SEV_ES_GPRS_BASE + __VCPU_REGS_R15 * WORD_SIZE)
-#endif
 
 /**
  * __svm_sev_es_vcpu_run - Run a SEV-ES vCPU via a transition to SVM guest mode
@@ -237,19 +226,13 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run)
         * Except for RAX and RSP, all GPRs are restored on #VMEXIT, but not
         * saved on VMRUN.
         */
-       mov %rbp, SEV_ES_RBP (%rdx)
-       mov %r15, SEV_ES_R15 (%rdx)
-       mov %r14, SEV_ES_R14 (%rdx)
-       mov %r13, SEV_ES_R13 (%rdx)
-       mov %r12, SEV_ES_R12 (%rdx)
-       mov %rbx, SEV_ES_RBX (%rdx)
+       STORE_REGS %rdx, SEV_ES_GPRS_BASE, %rbp, %r15, %r14, %r13, %r12, %rbx
 
        /*
         * Save volatile registers that hold arguments that are needed after
         * #VMEXIT (RDI=@svm and RSI=@enter_flags).
         */
-       mov %rdi, SEV_ES_RDI (%rdx)
-       mov %rsi, SEV_ES_RSI (%rdx)
+       STORE_REGS %rdx, SEV_ES_GPRS_BASE, %rdi, %rsi
 
        /* Clobbers RAX, RCX, and RDX (@hostsa), consumes RDI (@svm). */
        RESTORE_GUEST_SPEC_CTRL