Lines 269-274
static int
Link Here
|
269 |
vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, |
269 |
vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot, |
270 |
int fault_type, int fault_flags, boolean_t wired, vm_page_t *m_hold) |
270 |
int fault_type, int fault_flags, boolean_t wired, vm_page_t *m_hold) |
271 |
{ |
271 |
{ |
|
|
272 |
pmap_t pmap; |
272 |
vm_page_t m, m_map; |
273 |
vm_page_t m, m_map; |
273 |
#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ |
274 |
#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ |
274 |
__ARM_ARCH >= 6) || defined(__i386__)) && VM_NRESERVLEVEL > 0 |
275 |
__ARM_ARCH >= 6) || defined(__i386__)) && VM_NRESERVLEVEL > 0 |
Lines 284-289
vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot,
Link Here
|
284 |
vm_page_busied(m)) || m->valid != VM_PAGE_BITS_ALL) |
285 |
vm_page_busied(m)) || m->valid != VM_PAGE_BITS_ALL) |
285 |
return (KERN_FAILURE); |
286 |
return (KERN_FAILURE); |
286 |
m_map = m; |
287 |
m_map = m; |
|
|
288 |
pmap = fs->map->pmap; |
287 |
psind = 0; |
289 |
psind = 0; |
288 |
#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ |
290 |
#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ |
289 |
__ARM_ARCH >= 6) || defined(__i386__)) && VM_NRESERVLEVEL > 0 |
291 |
__ARM_ARCH >= 6) || defined(__i386__)) && VM_NRESERVLEVEL > 0 |
Lines 292-299
vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot,
Link Here
|
292 |
rounddown2(vaddr, pagesizes[m_super->psind]) >= fs->entry->start && |
294 |
rounddown2(vaddr, pagesizes[m_super->psind]) >= fs->entry->start && |
293 |
roundup2(vaddr + 1, pagesizes[m_super->psind]) <= fs->entry->end && |
295 |
roundup2(vaddr + 1, pagesizes[m_super->psind]) <= fs->entry->end && |
294 |
(vaddr & (pagesizes[m_super->psind] - 1)) == (VM_PAGE_TO_PHYS(m) & |
296 |
(vaddr & (pagesizes[m_super->psind] - 1)) == (VM_PAGE_TO_PHYS(m) & |
295 |
(pagesizes[m_super->psind] - 1)) && |
297 |
(pagesizes[m_super->psind] - 1)) && pmap != kernel_pmap && |
296 |
pmap_ps_enabled(fs->map->pmap)) { |
298 |
pmap_ps_enabled(pmap)) { |
297 |
flags = PS_ALL_VALID; |
299 |
flags = PS_ALL_VALID; |
298 |
if ((prot & VM_PROT_WRITE) != 0) { |
300 |
if ((prot & VM_PROT_WRITE) != 0) { |
299 |
/* |
301 |
/* |
Lines 316-322
vm_fault_soft_fast(struct faultstate *fs, vm_offset_t vaddr, vm_prot_t prot,
Link Here
|
316 |
} |
318 |
} |
317 |
} |
319 |
} |
318 |
#endif |
320 |
#endif |
319 |
rv = pmap_enter(fs->map->pmap, vaddr, m_map, prot, fault_type | |
321 |
rv = pmap_enter(pmap, vaddr, m_map, prot, fault_type | |
320 |
PMAP_ENTER_NOSLEEP | (wired ? PMAP_ENTER_WIRED : 0), psind); |
322 |
PMAP_ENTER_NOSLEEP | (wired ? PMAP_ENTER_WIRED : 0), psind); |
321 |
if (rv != KERN_SUCCESS) |
323 |
if (rv != KERN_SUCCESS) |
322 |
return (rv); |
324 |
return (rv); |