#define pr_fmt(fmt) …
#include <linux/errno.h>
#include <linux/smp.h>
#include "../cpuid.h"
#include "hyperv.h"
#include "nested.h"
#include "vmcs.h"
#include "vmx.h"
#include "trace.h"
#define CC …
u64 nested_get_evmptr(struct kvm_vcpu *vcpu)
{ … }
uint16_t nested_get_evmcs_version(struct kvm_vcpu *vcpu)
{ … }
enum evmcs_revision { … };
enum evmcs_ctrl_type { … };
static const u32 evmcs_supported_ctrls[NR_EVMCS_CTRLS][NR_EVMCS_REVISIONS] = …;
static u32 evmcs_get_supported_ctls(enum evmcs_ctrl_type ctrl_type)
{ … }
static bool evmcs_has_perf_global_ctrl(struct kvm_vcpu *vcpu)
{ … }
void nested_evmcs_filter_control_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
{ … }
static bool nested_evmcs_is_valid_controls(enum evmcs_ctrl_type ctrl_type,
u32 val)
{ … }
int nested_evmcs_check_controls(struct vmcs12 *vmcs12)
{ … }
int nested_enable_evmcs(struct kvm_vcpu *vcpu,
uint16_t *vmcs_version)
{ … }
bool nested_evmcs_l2_tlb_flush_enabled(struct kvm_vcpu *vcpu)
{ … }
void vmx_hv_inject_synthetic_vmexit_post_tlb_flush(struct kvm_vcpu *vcpu)
{ … }