View | Details | Raw Unified | Return to bug 233088 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/vm/vm_fault.c (-3 / +5 lines)
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);

Return to bug 233088