Lines Matching refs:vm

13 void virt_arch_pgd_alloc(struct kvm_vm *vm)
17 TEST_ASSERT(vm->page_size == 4096, "Unsupported page size: 0x%x",
18 vm->page_size);
20 if (vm->pgd_created)
23 paddr = vm_phy_pages_alloc(vm, PAGES_PER_REGION,
25 vm->memslots[MEM_REGION_PT]);
26 memset(addr_gpa2hva(vm, paddr), 0xff, PAGES_PER_REGION * vm->page_size);
28 vm->pgd = paddr;
29 vm->pgd_created = true;
37 static uint64_t virt_alloc_region(struct kvm_vm *vm, int ri)
41 taddr = vm_phy_pages_alloc(vm, ri < 4 ? PAGES_PER_REGION : 1,
43 memset(addr_gpa2hva(vm, taddr), 0xff, PAGES_PER_REGION * vm->page_size);
50 void virt_arch_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_t gpa)
55 TEST_ASSERT((gva % vm->page_size) == 0,
57 " vaddr: 0x%lx vm->page_size: 0x%x",
58 gva, vm->page_size);
59 TEST_ASSERT(sparsebit_is_set(vm->vpages_valid,
60 (gva >> vm->page_shift)),
63 TEST_ASSERT((gpa % vm->page_size) == 0,
65 " paddr: 0x%lx vm->page_size: 0x%x",
66 gva, vm->page_size);
67 TEST_ASSERT((gpa >> vm->page_shift) <= vm->max_gfn,
69 " paddr: 0x%lx vm->max_gfn: 0x%lx vm->page_size: 0x%x",
70 gva, vm->max_gfn, vm->page_size);
73 entry = addr_gpa2hva(vm, vm->pgd);
77 entry[idx] = virt_alloc_region(vm, ri);
78 entry = addr_gpa2hva(vm, entry[idx] & REGION_ENTRY_ORIGIN);
89 vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
94 TEST_ASSERT(vm->page_size == 4096, "Unsupported page size: 0x%x",
95 vm->page_size);
97 entry = addr_gpa2hva(vm, vm->pgd);
101 "No region mapping for vm virtual address 0x%lx",
103 entry = addr_gpa2hva(vm, entry[idx] & REGION_ENTRY_ORIGIN);
109 "No page mapping for vm virtual address 0x%lx", gva);
114 static void virt_dump_ptes(FILE *stream, struct kvm_vm *vm, uint8_t indent,
120 pte = addr_gpa2hva(vm, ptea);
128 static void virt_dump_region(FILE *stream, struct kvm_vm *vm, uint8_t indent,
134 entry = addr_gpa2hva(vm, addr);
141 virt_dump_region(stream, vm, indent + 2,
144 virt_dump_ptes(stream, vm, indent + 2,
150 void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent)
152 if (!vm->pgd_created)
155 virt_dump_region(stream, vm, indent, vm->pgd);
163 struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id)
171 TEST_ASSERT(vm->page_size == 4096, "Unsupported page size: 0x%x",
172 vm->page_size);
174 stack_vaddr = __vm_vaddr_alloc(vm, stack_size,
178 vcpu = __vm_vcpu_add(vm, vcpu_id);
187 sregs.crs[1] = vm->pgd | 0xf; /* Primary region table */