Lines Matching full:vm

46 int vcpu_enable_evmcs(struct kvm_vm *vm, int vcpu_id)  in vcpu_enable_evmcs()  argument
55 vcpu_ioctl(vm, vcpu_id, KVM_ENABLE_CAP, &enable_evmcs_cap); in vcpu_enable_evmcs()
69 * vm - The VM to allocate guest-virtual addresses in.
78 vcpu_alloc_vmx(struct kvm_vm *vm, vm_vaddr_t *p_vmx_gva) in vcpu_alloc_vmx() argument
80 vm_vaddr_t vmx_gva = vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
81 struct vmx_pages *vmx = addr_gva2hva(vm, vmx_gva); in vcpu_alloc_vmx()
84 vmx->vmxon = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
85 vmx->vmxon_hva = addr_gva2hva(vm, (uintptr_t)vmx->vmxon); in vcpu_alloc_vmx()
86 vmx->vmxon_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->vmxon); in vcpu_alloc_vmx()
89 vmx->vmcs = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
90 vmx->vmcs_hva = addr_gva2hva(vm, (uintptr_t)vmx->vmcs); in vcpu_alloc_vmx()
91 vmx->vmcs_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->vmcs); in vcpu_alloc_vmx()
94 vmx->msr = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
95 vmx->msr_hva = addr_gva2hva(vm, (uintptr_t)vmx->msr); in vcpu_alloc_vmx()
96 vmx->msr_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->msr); in vcpu_alloc_vmx()
100 vmx->shadow_vmcs = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
101 vmx->shadow_vmcs_hva = addr_gva2hva(vm, (uintptr_t)vmx->shadow_vmcs); in vcpu_alloc_vmx()
102 vmx->shadow_vmcs_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->shadow_vmcs); in vcpu_alloc_vmx()
105 vmx->vmread = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
106 vmx->vmread_hva = addr_gva2hva(vm, (uintptr_t)vmx->vmread); in vcpu_alloc_vmx()
107 vmx->vmread_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->vmread); in vcpu_alloc_vmx()
110 vmx->vmwrite = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
111 vmx->vmwrite_hva = addr_gva2hva(vm, (uintptr_t)vmx->vmwrite); in vcpu_alloc_vmx()
112 vmx->vmwrite_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->vmwrite); in vcpu_alloc_vmx()
116 vmx->vp_assist = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
117 vmx->vp_assist_hva = addr_gva2hva(vm, (uintptr_t)vmx->vp_assist); in vcpu_alloc_vmx()
118 vmx->vp_assist_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->vp_assist); in vcpu_alloc_vmx()
121 vmx->enlightened_vmcs = (void *)vm_vaddr_alloc_page(vm); in vcpu_alloc_vmx()
123 addr_gva2hva(vm, (uintptr_t)vmx->enlightened_vmcs); in vcpu_alloc_vmx()
125 addr_gva2gpa(vm, (uintptr_t)vmx->enlightened_vmcs); in vcpu_alloc_vmx()
395 void nested_pg_map(struct vmx_pages *vmx, struct kvm_vm *vm, in nested_pg_map() argument
401 TEST_ASSERT(vm->mode == VM_MODE_PXXV48_4K, "Attempt to use " in nested_pg_map()
402 "unknown or unsupported guest mode, mode: 0x%x", vm->mode); in nested_pg_map()
404 TEST_ASSERT((nested_paddr % vm->page_size) == 0, in nested_pg_map()
406 " nested_paddr: 0x%lx vm->page_size: 0x%x", in nested_pg_map()
407 nested_paddr, vm->page_size); in nested_pg_map()
408 TEST_ASSERT((nested_paddr >> vm->page_shift) <= vm->max_gfn, in nested_pg_map()
410 " nested_paddr: 0x%lx vm->max_gfn: 0x%lx vm->page_size: 0x%x", in nested_pg_map()
411 paddr, vm->max_gfn, vm->page_size); in nested_pg_map()
412 TEST_ASSERT((paddr % vm->page_size) == 0, in nested_pg_map()
414 " paddr: 0x%lx vm->page_size: 0x%x", in nested_pg_map()
415 paddr, vm->page_size); in nested_pg_map()
416 TEST_ASSERT((paddr >> vm->page_shift) <= vm->max_gfn, in nested_pg_map()
418 " paddr: 0x%lx vm->max_gfn: 0x%lx vm->page_size: 0x%x", in nested_pg_map()
419 paddr, vm->max_gfn, vm->page_size); in nested_pg_map()
429 pml4e[index[3]].address = vm_alloc_page_table(vm) >> vm->page_shift; in nested_pg_map()
437 pdpe = addr_gpa2hva(vm, pml4e[index[3]].address * vm->page_size); in nested_pg_map()
439 pdpe[index[2]].address = vm_alloc_page_table(vm) >> vm->page_shift; in nested_pg_map()
447 pde = addr_gpa2hva(vm, pdpe[index[2]].address * vm->page_size); in nested_pg_map()
449 pde[index[1]].address = vm_alloc_page_table(vm) >> vm->page_shift; in nested_pg_map()
457 pte = addr_gpa2hva(vm, pde[index[1]].address * vm->page_size); in nested_pg_map()
458 pte[index[0]].address = paddr >> vm->page_shift; in nested_pg_map()
472 * Map a range of EPT guest physical addresses to the VM's physical address
475 * vm - Virtual Machine
477 * paddr - VM Physical Address
485 * Within the VM given by vm, creates a nested guest translation for the
488 void nested_map(struct vmx_pages *vmx, struct kvm_vm *vm, in nested_map() argument
491 size_t page_size = vm->page_size; in nested_map()
498 nested_pg_map(vmx, vm, nested_paddr, paddr); in nested_map()
505 * physical pages in VM.
507 void nested_map_memslot(struct vmx_pages *vmx, struct kvm_vm *vm, in nested_map_memslot() argument
512 memslot2region(vm, memslot); in nested_map_memslot()
514 i = (region->region.guest_phys_addr >> vm->page_shift) - 1; in nested_map_memslot()
515 last = i + (region->region.memory_size >> vm->page_shift); in nested_map_memslot()
521 nested_map(vmx, vm, in nested_map_memslot()
522 (uint64_t)i << vm->page_shift, in nested_map_memslot()
523 (uint64_t)i << vm->page_shift, in nested_map_memslot()
524 1 << vm->page_shift); in nested_map_memslot()
528 void prepare_eptp(struct vmx_pages *vmx, struct kvm_vm *vm, in prepare_eptp() argument
531 vmx->eptp = (void *)vm_vaddr_alloc_page(vm); in prepare_eptp()
532 vmx->eptp_hva = addr_gva2hva(vm, (uintptr_t)vmx->eptp); in prepare_eptp()
533 vmx->eptp_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->eptp); in prepare_eptp()
536 void prepare_virtualize_apic_accesses(struct vmx_pages *vmx, struct kvm_vm *vm) in prepare_virtualize_apic_accesses() argument
538 vmx->apic_access = (void *)vm_vaddr_alloc_page(vm); in prepare_virtualize_apic_accesses()
539 vmx->apic_access_hva = addr_gva2hva(vm, (uintptr_t)vmx->apic_access); in prepare_virtualize_apic_accesses()
540 vmx->apic_access_gpa = addr_gva2gpa(vm, (uintptr_t)vmx->apic_access); in prepare_virtualize_apic_accesses()