#define pr_fmt(fmt) …
#include <asm/sgx.h>
#include "cpuid.h"
#include "kvm_cache_regs.h"
#include "nested.h"
#include "sgx.h"
#include "vmx.h"
#include "x86.h"
bool __read_mostly enable_sgx = …;
module_param_named(sgx, enable_sgx, bool, 0444);
static u64 sgx_pubkey_hash[4] __ro_after_init;
static int sgx_get_encls_gva(struct kvm_vcpu *vcpu, unsigned long offset,
int size, int alignment, gva_t *gva)
{ … }
static void sgx_handle_emulation_failure(struct kvm_vcpu *vcpu, u64 addr,
unsigned int size)
{ … }
static int sgx_read_hva(struct kvm_vcpu *vcpu, unsigned long hva, void *data,
unsigned int size)
{ … }
static int sgx_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t gva, bool write,
gpa_t *gpa)
{ … }
static int sgx_gpa_to_hva(struct kvm_vcpu *vcpu, gpa_t gpa, unsigned long *hva)
{ … }
static int sgx_inject_fault(struct kvm_vcpu *vcpu, gva_t gva, int trapnr)
{ … }
static int __handle_encls_ecreate(struct kvm_vcpu *vcpu,
struct sgx_pageinfo *pageinfo,
unsigned long secs_hva,
gva_t secs_gva)
{ … }
static int handle_encls_ecreate(struct kvm_vcpu *vcpu)
{ … }
static int handle_encls_einit(struct kvm_vcpu *vcpu)
{ … }
static inline bool encls_leaf_enabled_in_guest(struct kvm_vcpu *vcpu, u32 leaf)
{ … }
static inline bool sgx_enabled_in_guest_bios(struct kvm_vcpu *vcpu)
{ … }
int handle_encls(struct kvm_vcpu *vcpu)
{ … }
void setup_default_sgx_lepubkeyhash(void)
{ … }
void vcpu_setup_sgx_lepubkeyhash(struct kvm_vcpu *vcpu)
{ … }
static bool sgx_intercept_encls_ecreate(struct kvm_vcpu *vcpu)
{ … }
void vmx_write_encls_bitmap(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12)
{ … }