Lines Matching refs:region

176 	struct userspace_mem_region *region;  in kvm_vm_restart()  local
182 for (region = vmp->userspace_mem_region_head; region; in kvm_vm_restart()
183 region = region->next) { in kvm_vm_restart()
184 int ret = ioctl(vmp->fd, KVM_SET_USER_MEMORY_REGION, &region->region); in kvm_vm_restart()
189 ret, errno, region->region.slot, region->region.flags, in kvm_vm_restart()
190 region->region.guest_phys_addr, in kvm_vm_restart()
191 region->region.memory_size); in kvm_vm_restart()
226 struct userspace_mem_region *region; in userspace_mem_region_find() local
228 for (region = vm->userspace_mem_region_head; region; in userspace_mem_region_find()
229 region = region->next) { in userspace_mem_region_find()
230 uint64_t existing_start = region->region.guest_phys_addr; in userspace_mem_region_find()
231 uint64_t existing_end = region->region.guest_phys_addr in userspace_mem_region_find()
232 + region->region.memory_size - 1; in userspace_mem_region_find()
234 return region; in userspace_mem_region_find()
259 struct userspace_mem_region *region; in kvm_userspace_memory_region_find() local
261 region = userspace_mem_region_find(vm, start, end); in kvm_userspace_memory_region_find()
262 if (!region) in kvm_userspace_memory_region_find()
265 return &region->region; in kvm_userspace_memory_region_find()
358 struct userspace_mem_region *region in kvm_vm_free() local
361 region->region.memory_size = 0; in kvm_vm_free()
363 &region->region); in kvm_vm_free()
367 vmp->userspace_mem_region_head = region->next; in kvm_vm_free()
368 sparsebit_free(&region->unused_phy_pages); in kvm_vm_free()
369 ret = munmap(region->mmap_start, region->mmap_size); in kvm_vm_free()
373 free(region); in kvm_vm_free()
575 struct userspace_mem_region *region; in vm_userspace_mem_region_add() local
592 region = (struct userspace_mem_region *) userspace_mem_region_find( in vm_userspace_mem_region_add()
594 if (region != NULL) in vm_userspace_mem_region_add()
601 (uint64_t) region->region.guest_phys_addr, in vm_userspace_mem_region_add()
602 (uint64_t) region->region.memory_size); in vm_userspace_mem_region_add()
605 for (region = vm->userspace_mem_region_head; region; in vm_userspace_mem_region_add()
606 region = region->next) { in vm_userspace_mem_region_add()
607 if (region->region.slot == slot) in vm_userspace_mem_region_add()
609 if ((guest_paddr <= (region->region.guest_phys_addr in vm_userspace_mem_region_add()
610 + region->region.memory_size)) in vm_userspace_mem_region_add()
612 >= region->region.guest_phys_addr)) in vm_userspace_mem_region_add()
615 if (region != NULL) in vm_userspace_mem_region_add()
621 region->region.slot, in vm_userspace_mem_region_add()
622 (uint64_t) region->region.guest_phys_addr, in vm_userspace_mem_region_add()
623 (uint64_t) region->region.memory_size); in vm_userspace_mem_region_add()
626 region = calloc(1, sizeof(*region)); in vm_userspace_mem_region_add()
627 TEST_ASSERT(region != NULL, "Insufficient Memory"); in vm_userspace_mem_region_add()
628 region->mmap_size = npages * vm->page_size; in vm_userspace_mem_region_add()
632 region->mmap_size += huge_page_size; in vm_userspace_mem_region_add()
633 region->mmap_start = mmap(NULL, region->mmap_size, in vm_userspace_mem_region_add()
638 TEST_ASSERT(region->mmap_start != MAP_FAILED, in vm_userspace_mem_region_add()
640 region->mmap_start, errno); in vm_userspace_mem_region_add()
643 region->host_mem = align(region->mmap_start, in vm_userspace_mem_region_add()
648 ret = madvise(region->host_mem, npages * vm->page_size, in vm_userspace_mem_region_add()
654 region->host_mem, npages * vm->page_size, src_type); in vm_userspace_mem_region_add()
657 region->unused_phy_pages = sparsebit_alloc(); in vm_userspace_mem_region_add()
658 sparsebit_set_num(region->unused_phy_pages, in vm_userspace_mem_region_add()
660 region->region.slot = slot; in vm_userspace_mem_region_add()
661 region->region.flags = flags; in vm_userspace_mem_region_add()
662 region->region.guest_phys_addr = guest_paddr; in vm_userspace_mem_region_add()
663 region->region.memory_size = npages * vm->page_size; in vm_userspace_mem_region_add()
664 region->region.userspace_addr = (uintptr_t) region->host_mem; in vm_userspace_mem_region_add()
665 ret = ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, &region->region); in vm_userspace_mem_region_add()
671 guest_paddr, (uint64_t) region->region.memory_size); in vm_userspace_mem_region_add()
675 vm->userspace_mem_region_head->prev = region; in vm_userspace_mem_region_add()
676 region->next = vm->userspace_mem_region_head; in vm_userspace_mem_region_add()
677 vm->userspace_mem_region_head = region; in vm_userspace_mem_region_add()
697 struct userspace_mem_region *region; in memslot2region() local
699 for (region = vm->userspace_mem_region_head; region; in memslot2region()
700 region = region->next) { in memslot2region()
701 if (region->region.slot == memslot) in memslot2region()
704 if (region == NULL) { in memslot2region()
712 return region; in memslot2region()
731 struct userspace_mem_region *region; in vm_mem_region_set_flags() local
734 region = memslot2region(vm, slot); in vm_mem_region_set_flags()
736 region->region.flags = flags; in vm_mem_region_set_flags()
738 ret = ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, &region->region); in vm_mem_region_set_flags()
1011 struct userspace_mem_region *region; in addr_gpa2hva() local
1012 for (region = vm->userspace_mem_region_head; region; in addr_gpa2hva()
1013 region = region->next) { in addr_gpa2hva()
1014 if ((gpa >= region->region.guest_phys_addr) in addr_gpa2hva()
1015 && (gpa <= (region->region.guest_phys_addr in addr_gpa2hva()
1016 + region->region.memory_size - 1))) in addr_gpa2hva()
1017 return (void *) ((uintptr_t) region->host_mem in addr_gpa2hva()
1018 + (gpa - region->region.guest_phys_addr)); in addr_gpa2hva()
1043 struct userspace_mem_region *region; in addr_hva2gpa() local
1044 for (region = vm->userspace_mem_region_head; region; in addr_hva2gpa()
1045 region = region->next) { in addr_hva2gpa()
1046 if ((hva >= region->host_mem) in addr_hva2gpa()
1047 && (hva <= (region->host_mem in addr_hva2gpa()
1048 + region->region.memory_size - 1))) in addr_hva2gpa()
1050 region->region.guest_phys_addr in addr_hva2gpa()
1051 + (hva - (uintptr_t) region->host_mem)); in addr_hva2gpa()
1486 struct userspace_mem_region *region; in vm_dump() local
1493 for (region = vm->userspace_mem_region_head; region; in vm_dump()
1494 region = region->next) { in vm_dump()
1497 (uint64_t) region->region.guest_phys_addr, in vm_dump()
1498 (uint64_t) region->region.memory_size, in vm_dump()
1499 region->host_mem); in vm_dump()
1501 sparsebit_dump(stream, region->unused_phy_pages, 0); in vm_dump()
1625 struct userspace_mem_region *region; in vm_phy_page_alloc() local
1634 region = memslot2region(vm, memslot); in vm_phy_page_alloc()
1639 if (!sparsebit_is_set(region->unused_phy_pages, pg)) { in vm_phy_page_alloc()
1640 pg = sparsebit_next_set(region->unused_phy_pages, pg); in vm_phy_page_alloc()
1652 sparsebit_clear(region->unused_phy_pages, pg); in vm_phy_page_alloc()