mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Allow access to the percpu area via the GS segment base, which is
needed in order to access the saved host spec_ctrl value. In linux-next
FILL_RETURN_BUFFER also needs to access percpu data.
For simplicity, the physical address of the save area is added to struct
svm_cpu_data.
Cc: stable@vger.kernel.org
Fixes: a149180fbc
("x86: Add magic AMD return-thunk")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Analyzed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
28 lines
732 B
C
28 lines
732 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Generate definitions needed by assembly language modules.
|
|
* This code generates raw asm output which is post-processed to extract
|
|
* and format the required data.
|
|
*/
|
|
#define COMPILE_OFFSETS
|
|
|
|
#include <linux/kbuild.h>
|
|
#include "vmx/vmx.h"
|
|
#include "svm/svm.h"
|
|
|
|
static void __used common(void)
|
|
{
|
|
if (IS_ENABLED(CONFIG_KVM_AMD)) {
|
|
BLANK();
|
|
OFFSET(SVM_vcpu_arch_regs, vcpu_svm, vcpu.arch.regs);
|
|
OFFSET(SVM_current_vmcb, vcpu_svm, current_vmcb);
|
|
OFFSET(SVM_vmcb01, vcpu_svm, vmcb01);
|
|
OFFSET(KVM_VMCB_pa, kvm_vmcb_info, pa);
|
|
OFFSET(SD_save_area_pa, svm_cpu_data, save_area_pa);
|
|
}
|
|
|
|
if (IS_ENABLED(CONFIG_KVM_INTEL)) {
|
|
BLANK();
|
|
OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl);
|
|
}
|
|
}
|