mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
KVM: SEV: Macrofy GPR swapping in __svm_sev_es_vcpu_run()
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>
This commit is contained in:
parent
8d4fb56794
commit
e2e664812f
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -11,17 +11,6 @@
|
|||
#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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user