Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/vmm.c
Show First 20 Lines • Show All 993 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
pageoff = gpa & PAGE_MASK; | pageoff = gpa & PAGE_MASK; | ||||
if (len > PAGE_SIZE - pageoff) | if (len > PAGE_SIZE - pageoff) | ||||
panic("vm_gpa_hold: invalid gpa/len: 0x%016lx/%lu", gpa, len); | panic("vm_gpa_hold: invalid gpa/len: 0x%016lx/%lu", gpa, len); | ||||
count = 0; | count = 0; | ||||
for (i = 0; i < VM_MAX_MEMMAPS; i++) { | for (i = 0; i < VM_MAX_MEMMAPS; i++) { | ||||
mm = &vm->mem_maps[i]; | mm = &vm->mem_maps[i]; | ||||
if (sysmem_mapping(vm, mm) && gpa >= mm->gpa && | if (gpa >= mm->gpa && gpa < mm->gpa + mm->len) { | ||||
gpa < mm->gpa + mm->len) { | |||||
count = vm_fault_quick_hold_pages(&vm->vmspace->vm_map, | count = vm_fault_quick_hold_pages(&vm->vmspace->vm_map, | ||||
trunc_page(gpa), PAGE_SIZE, reqprot, &m, 1); | trunc_page(gpa), PAGE_SIZE, reqprot, &m, 1); | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
if (count == 1) { | if (count == 1) { | ||||
*cookie = m; | *cookie = m; | ||||
▲ Show 20 Lines • Show All 1,913 Lines • Show Last 20 Lines |