mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
KVM: SVM: Move SEV code to separate file
Move the SEV specific parts of svm.c into the new sev.c file. Signed-off-by: Joerg Roedel <jroedel@suse.de> Message-Id: <20200324094154.32352-5-joro@8bytes.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ef0f64960d
commit
eaf78265a4
@ -14,7 +14,7 @@ kvm-y += x86.o emulate.o i8259.o irq.o lapic.o \
|
||||
hyperv.o debugfs.o mmu/mmu.o mmu/page_track.o
|
||||
|
||||
kvm-intel-y += vmx/vmx.o vmx/vmenter.o vmx/pmu_intel.o vmx/vmcs12.o vmx/evmcs.o vmx/nested.o
|
||||
kvm-amd-y += svm/svm.o svm/pmu.o svm/nested.o svm/avic.o
|
||||
kvm-amd-y += svm/svm.o svm/pmu.o svm/nested.o svm/avic.o svm/sev.o
|
||||
|
||||
obj-$(CONFIG_KVM) += kvm.o
|
||||
obj-$(CONFIG_KVM_INTEL) += kvm-intel.o
|
||||
|
1187
arch/x86/kvm/svm/sev.c
Normal file
1187
arch/x86/kvm/svm/sev.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -171,6 +171,24 @@ struct vcpu_svm {
|
||||
unsigned int last_cpu;
|
||||
};
|
||||
|
||||
struct svm_cpu_data {
|
||||
int cpu;
|
||||
|
||||
u64 asid_generation;
|
||||
u32 max_asid;
|
||||
u32 next_asid;
|
||||
u32 min_asid;
|
||||
struct kvm_ldttss_desc *tss_desc;
|
||||
|
||||
struct page *save_area;
|
||||
struct vmcb *current_vmcb;
|
||||
|
||||
/* index = sev_asid, value = vmcb pointer */
|
||||
struct vmcb **sev_vmcbs;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct svm_cpu_data *, svm_data);
|
||||
|
||||
void recalc_intercepts(struct vcpu_svm *svm);
|
||||
|
||||
static inline struct kvm_svm *to_kvm_svm(struct kvm *kvm)
|
||||
@ -440,4 +458,34 @@ int svm_update_pi_irte(struct kvm *kvm, unsigned int host_irq,
|
||||
void svm_vcpu_blocking(struct kvm_vcpu *vcpu);
|
||||
void svm_vcpu_unblocking(struct kvm_vcpu *vcpu);
|
||||
|
||||
/* sev.c */
|
||||
|
||||
extern unsigned int max_sev_asid;
|
||||
|
||||
static inline bool sev_guest(struct kvm *kvm)
|
||||
{
|
||||
#ifdef CONFIG_KVM_AMD_SEV
|
||||
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
|
||||
|
||||
return sev->active;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool svm_sev_enabled(void)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_KVM_AMD_SEV) ? max_sev_asid : 0;
|
||||
}
|
||||
|
||||
void sev_vm_destroy(struct kvm *kvm);
|
||||
int svm_mem_enc_op(struct kvm *kvm, void __user *argp);
|
||||
int svm_register_enc_region(struct kvm *kvm,
|
||||
struct kvm_enc_region *range);
|
||||
int svm_unregister_enc_region(struct kvm *kvm,
|
||||
struct kvm_enc_region *range);
|
||||
void pre_sev_run(struct vcpu_svm *svm, int cpu);
|
||||
int __init sev_hardware_setup(void);
|
||||
void sev_hardware_teardown(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user