vm_vaddr_t
vm_vaddr_t kvm_args_gva;
vm_vaddr_t args_gva;
vm_vaddr_t args_gva;
uint64_t *virt_get_pte_hva_at_level(struct kvm_vm *vm, vm_vaddr_t gva, int level);
uint64_t *virt_get_pte_hva(struct kvm_vm *vm, vm_vaddr_t gva);
extern vm_vaddr_t *ucall_exit_mmio_addr;
static inline void ucall_arch_do_ucall(vm_vaddr_t uc)
typeof(g) *_p = addr_gva2hva(vm, (vm_vaddr_t)&(g)); \
typeof(g) *_p = addr_gva2hva(vm, (vm_vaddr_t)&(g)); \
vm_vaddr_t handlers;
typeof(g) *_p = addr_gva2hva(vm, (vm_vaddr_t)&(g)); \
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva);
static inline vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
vm_vaddr_t vm_vaddr_unused_gap(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min);
vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min);
vm_vaddr_t __vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min,
vm_vaddr_t vm_vaddr_alloc_shared(struct kvm_vm *vm, size_t sz,
vm_vaddr_t vaddr_min,
vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages);
vm_vaddr_t __vm_vaddr_alloc_page(struct kvm_vm *vm,
vm_vaddr_t vm_vaddr_alloc_page(struct kvm_vm *vm);
void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva);
extern vm_vaddr_t *ucall_exit_mmio_addr;
static inline void ucall_arch_do_ucall(vm_vaddr_t uc)
static inline void ucall_arch_do_ucall(vm_vaddr_t uc)
static inline void ucall_arch_do_ucall(vm_vaddr_t uc)
void ucall_arch_do_ucall(vm_vaddr_t uc);
#define GUEST_UCALL_NONE() ucall_arch_do_ucall((vm_vaddr_t)NULL)
static inline uint8_t __hyperv_hypercall(u64 control, vm_vaddr_t input_address,
vm_vaddr_t output_address,
static inline void hyperv_hypercall(u64 control, vm_vaddr_t input_address,
vm_vaddr_t output_address)
vm_vaddr_t *p_hv_pages_gva);
vm_vaddr_t gdt;
vm_vaddr_t tss;
vm_vaddr_t idt;
struct svm_test_data *vcpu_alloc_svm(struct kvm_vm *vm, vm_vaddr_t *p_svm_gva);
struct vmx_pages *vcpu_alloc_vmx(struct kvm_vm *vm, vm_vaddr_t *p_vmx_gva);
current_stage = addr_gva2hva(vm, (vm_vaddr_t)(&guest_test_stage));
uint64_t *virt_get_pte_hva_at_level(struct kvm_vm *vm, vm_vaddr_t gva, int level)
static vm_vaddr_t exception_handlers;
uint64_t *virt_get_pte_hva(struct kvm_vm *vm, vm_vaddr_t gva)
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
static uint64_t pgd_index(struct kvm_vm *vm, vm_vaddr_t gva)
static uint64_t pud_index(struct kvm_vm *vm, vm_vaddr_t gva)
static uint64_t pmd_index(struct kvm_vm *vm, vm_vaddr_t gva)
static uint64_t pte_index(struct kvm_vm *vm, vm_vaddr_t gva)
*(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)) = vm->handlers;
vm_vaddr_t mmio_gva = vm_vaddr_unused_gap(vm, vm->page_size, KVM_UTIL_MIN_VADDR);
write_guest_global(vm, ucall_exit_mmio_addr, (vm_vaddr_t *)mmio_gva);
vm_vaddr_t *ucall_exit_mmio_addr;
vm_vaddr_t seg_vstart = align_down(phdr.p_vaddr, vm->page_size);
vm_vaddr_t seg_vend = phdr.p_vaddr + phdr.p_memsz - 1;
vm_vaddr_t vaddr = __vm_vaddr_alloc(vm, seg_size, seg_vstart,
vm_vaddr_t vm_vaddr_unused_gap(struct kvm_vm *vm, size_t sz,
vm_vaddr_t vaddr_min)
static vm_vaddr_t ____vm_vaddr_alloc(struct kvm_vm *vm, size_t sz,
vm_vaddr_t vaddr_min,
vm_vaddr_t vaddr_start = vm_vaddr_unused_gap(vm, sz, vaddr_min);
for (vm_vaddr_t vaddr = vaddr_start; pages > 0;
vm_vaddr_t __vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min,
vm_vaddr_t vm_vaddr_alloc_shared(struct kvm_vm *vm, size_t sz,
vm_vaddr_t vaddr_min,
vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min)
vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages)
vm_vaddr_t __vm_vaddr_alloc_page(struct kvm_vm *vm, enum kvm_mem_region_type type)
vm_vaddr_t vm_vaddr_alloc_page(struct kvm_vm *vm)
void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva)
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
static vm_vaddr_t exception_handlers;
static uint64_t virt_pte_index(struct kvm_vm *vm, vm_vaddr_t gva, int level)
static uint64_t *virt_populate_pte(struct kvm_vm *vm, vm_vaddr_t gva, int alloc)
vm_vaddr_t *ucall_exit_mmio_addr;
vm_vaddr_t mmio_gva = vm_vaddr_unused_gap(vm, vm->page_size, KVM_UTIL_MIN_VADDR);
write_guest_global(vm, ucall_exit_mmio_addr, (vm_vaddr_t *)mmio_gva);
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
static vm_vaddr_t exception_handlers;
*(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)) = vm->handlers;
static uint64_t pte_index(struct kvm_vm *vm, vm_vaddr_t gva, int level)
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
ucall_arch_do_ucall((vm_vaddr_t)uc->hva);
ucall_arch_do_ucall((vm_vaddr_t)uc->hva);
vm_vaddr_t vaddr;
ucall_arch_do_ucall((vm_vaddr_t)uc->hva);
vm_vaddr_t *p_hv_pages_gva)
vm_vaddr_t hv_pages_gva = vm_vaddr_alloc_page(vm);
vm_vaddr_t nested_gva;
vm_vaddr_t exception_handlers;
vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
static void kvm_seg_set_tss_64bit(vm_vaddr_t base, struct kvm_segment *segp)
*(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)) = vm->handlers;
vm_vaddr_t *handlers = (vm_vaddr_t *)addr_gva2hva(vm, vm->handlers);
handlers[vector] = (vm_vaddr_t)handler;
vm_vaddr_t stack_vaddr;
vcpu_alloc_svm(struct kvm_vm *vm, vm_vaddr_t *p_svm_gva)
vm_vaddr_t svm_gva = vm_vaddr_alloc_page(vm);
void ucall_arch_do_ucall(vm_vaddr_t uc)
vcpu_alloc_vmx(struct kvm_vm *vm, vm_vaddr_t *p_vmx_gva)
vm_vaddr_t vmx_gva = vm_vaddr_alloc_page(vm);
snapshot_gpa = addr_gva2gpa(vcpu->vm, (vm_vaddr_t)snapshot_gva);
vm_vaddr_t guest_0_page, guest_last_page;
vm_vaddr_t guest_0_page, guest_last_page;
vm_vaddr_t guest_0_page, guest_last_page;
vm_vaddr_t guest_0_page;
mprotect(addr_gva2hva(vm, (vm_vaddr_t)pages), PAGE_SIZE * 2, PROT_READ);
mprotect(addr_gva2hva(vm, (vm_vaddr_t)0), PAGE_SIZE, PROT_READ);
st_gpa[i] = addr_gva2gpa(vcpu->vm, (vm_vaddr_t)st_gva[i]);
vm_vaddr_t amx_cfg, tiledata, xstate;
vm_vaddr_t nested_test_data_gva;
struct kvm_cpuid2 *vcpu_alloc_cpuid(struct kvm_vm *vm, vm_vaddr_t *p_gva, struct kvm_cpuid2 *cpuid)
vm_vaddr_t gva = vm_vaddr_alloc(vm, size, KVM_UTIL_MIN_VADDR);
vm_vaddr_t cpuid_gva;
vm_vaddr_t vmx_pages_gva = 0, hv_pages_gva = 0;
vm_vaddr_t tsc_page_gva;
vm_vaddr_t vmx_pages_gva = 0, hv_pages_gva = 0;
vm_vaddr_t hcall_page;
vm_vaddr_t hv_hcall_page_gpa)
vm_vaddr_t out_pg_gva)
vm_vaddr_t hcall_out_page;
vm_vaddr_t hcall_in_page;
vm_vaddr_t msr_gva;
vm_vaddr_t hcall_page, hcall_params;
static void guest_hcall(vm_vaddr_t pgs_gpa, struct hcall_data *hcall)
vm_vaddr_t hcall_page;
static inline void hv_init(vm_vaddr_t pgs_gpa)
static void receiver_code(void *hcall_page, vm_vaddr_t pgs_gpa)
static void sender_guest_code(void *hcall_page, vm_vaddr_t pgs_gpa)
vm_vaddr_t nested_gva = 0, hv_pages_gva = 0;
vm_vaddr_t hcall_page;
vm_vaddr_t pgs_gpa)
static void sender_guest_code(vm_vaddr_t test_data)
vm_vaddr_t test_data_page, gva;
vm_vaddr_t hcall_gva;
vm_vaddr_t test_pages;
vm_vaddr_t test_pages_pte[NTEST_PAGES];
static void worker_guest_code(vm_vaddr_t test_data)
vm_vaddr_t nested_test_data_gva;
vm_vaddr_t pvti_gva;
vm_vaddr_t guest_gva;
vm_vaddr_t gva = arg & ~(PAGE_SIZE - 1);
vm_vaddr_t nested_gva = 0;
static void l2_guest_code(vm_vaddr_t base)
vm_vaddr_t page0 = TEST_GUEST_ADDR(base, 0);
vm_vaddr_t page1 = TEST_GUEST_ADDR(base, 1);
vm_vaddr_t nested_test_data_gva;
vm_vaddr_t nested_test_data_gva;
vm_vaddr_t guest_gva = 0;
vm_vaddr_t nested_gva;
vm_vaddr_t guest_gva = 0;
vm_vaddr_t nested_gva = 0;
vm_vaddr_t gva;
vm_vaddr_t nested_gva = 0;
vm_vaddr_t nested_gva = 0;
vm_vaddr_t svm_gva;
vm_vaddr_t svm_gva;
vm_vaddr_t svm_gva;
vm_vaddr_t idt_alt_vm;
vm_vaddr_t svm_gva;
vm_vaddr_t vmx_pages_gva;
vm_vaddr_t svm_gva;
vm_vaddr_t vmx_pages_gva;
vm_vaddr_t vmx_pages_gva;
vm_vaddr_t vmx_pages_gva;
vm_vaddr_t vmx_pages_gva = 0;
vm_vaddr_t vmx_pages_gva = 0;
vm_vaddr_t test_data_page_vaddr;