Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_fault.c
Show First 20 Lines • Show All 481 Lines • ▼ Show 20 Lines | vm_fault_populate(struct faultstate *fs) | ||||
/* | /* | ||||
* The map is unchanged after our last unlock. Process the fault. | * The map is unchanged after our last unlock. Process the fault. | ||||
* | * | ||||
* First, the special case of largepage mappings, where | * First, the special case of largepage mappings, where | ||||
* populate only busies the first page in superpage run. | * populate only busies the first page in superpage run. | ||||
*/ | */ | ||||
if (bdry_idx != 0) { | if (bdry_idx != 0) { | ||||
KASSERT(PMAP_HAS_LARGEPAGES, | |||||
("missing pmap support for large pages")); | |||||
m = vm_page_lookup(fs->first_object, pager_first); | m = vm_page_lookup(fs->first_object, pager_first); | ||||
vm_fault_populate_check_page(m); | vm_fault_populate_check_page(m); | ||||
VM_OBJECT_WUNLOCK(fs->first_object); | VM_OBJECT_WUNLOCK(fs->first_object); | ||||
vaddr = fs->entry->start + IDX_TO_OFF(pager_first) - | vaddr = fs->entry->start + IDX_TO_OFF(pager_first) - | ||||
fs->entry->offset; | fs->entry->offset; | ||||
/* assert alignment for entry */ | /* assert alignment for entry */ | ||||
KASSERT((vaddr & (pagesizes[bdry_idx] - 1)) == 0, | KASSERT((vaddr & (pagesizes[bdry_idx] - 1)) == 0, | ||||
("unaligned superpage start %#jx pager_first %#jx offset %#jx vaddr %#jx", | ("unaligned superpage start %#jx pager_first %#jx offset %#jx vaddr %#jx", | ||||
▲ Show 20 Lines • Show All 1,574 Lines • Show Last 20 Lines |