From 2053c127059ce623bbe6033b59aaa76ebe729d64 Mon Sep 17 00:00:00 2001 From: Stephan Uphoff Date: Thu, 15 Jun 2006 01:01:06 +0000 Subject: Remove mpte optimization from pmap_enter_quick(). There is a race with the current locking scheme and removing it should have no measurable performance impact. This fixes page faults leading to panics in pmap_enter_quick_locked() on amd64/i386. Reviewed by: alc,jhb,peter,ps --- sys/vm/pmap.h | 4 ++-- sys/vm/vm_fault.c | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) (limited to 'sys/vm') diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index 937fc7145ca2..57d62aa2cbf3 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -97,8 +97,8 @@ void pmap_copy(pmap_t, pmap_t, vm_offset_t, vm_size_t, vm_offset_t); void pmap_copy_page(vm_page_t, vm_page_t); void pmap_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, boolean_t); -vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, - vm_prot_t prot, vm_page_t mpte); +void pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, + vm_prot_t prot); void pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end, vm_page_t m_start, vm_prot_t prot); vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va); diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 2484af192ab4..938757517521 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -953,7 +953,7 @@ vm_fault_prefault(pmap_t pmap, vm_offset_t addra, vm_map_entry_t entry) int i; vm_offset_t addr, starta; vm_pindex_t pindex; - vm_page_t m, mpte; + vm_page_t m; vm_object_t object; if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) @@ -968,7 +968,6 @@ vm_fault_prefault(pmap_t pmap, vm_offset_t addra, vm_map_entry_t entry) starta = 0; } - mpte = NULL; for (i = 0; i < PAGEORDER_SIZE; i++) { vm_object_t backing_object, lobject; @@ -1009,8 +1008,7 @@ vm_fault_prefault(pmap_t pmap, vm_offset_t addra, vm_map_entry_t entry) vm_page_lock_queues(); if (VM_PAGE_INQUEUE1(m, PQ_CACHE)) vm_page_deactivate(m); - mpte = pmap_enter_quick(pmap, addr, m, - entry->protection, mpte); + pmap_enter_quick(pmap, addr, m, entry->protection); vm_page_unlock_queues(); } VM_OBJECT_UNLOCK(lobject); -- cgit v1.3