#include <linux/kvm_host.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/mmu_context.h>
#include <linux/sched/mm.h>
#include "async_pf.h"
#include <trace/events/kvm.h>
static struct kmem_cache *async_pf_cache;
int kvm_async_pf_init(void)
{ … }
void kvm_async_pf_deinit(void)
{ … }
void kvm_async_pf_vcpu_init(struct kvm_vcpu *vcpu)
{ … }
static void async_pf_execute(struct work_struct *work)
{ … }
static void kvm_flush_and_free_async_pf_work(struct kvm_async_pf *work)
{ … }
void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu)
{ … }
void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu)
{ … }
bool kvm_setup_async_pf(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
unsigned long hva, struct kvm_arch_async_pf *arch)
{ … }
int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu)
{ … }