svn commit: r193080 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64

Kip Macy kmacy at FreeBSD.org
Sat May 30 04:46:24 UTC 2009


Author: kmacy
Date: Sat May 30 04:46:24 2009
New Revision: 193080
URL: http://svn.freebsd.org/changeset/base/193080

Log:
  when freeing a page that was wired decrement the global wire_count

Modified:
  user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c

Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c	Sat May 30 01:33:05 2009	(r193079)
+++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c	Sat May 30 04:46:24 2009	(r193080)
@@ -1563,7 +1563,8 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p
 			    flags) == NULL) {
 				KASSERT(m->wire_count == 1,
 				    ("wire_count == %d", m->wire_count));
-				m->wire_count = 0;
+				m->wire_count = 0;	
+				atomic_subtract_int(&cnt.v_wire_count, 1);
 				vm_page_free(m);
 				return (NULL);
 			}
@@ -1598,6 +1599,7 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p
 				KASSERT(m->wire_count == 1,
 				    ("wire_count == %d", m->wire_count));
 				m->wire_count = 0;
+				atomic_subtract_int(&cnt.v_wire_count, 1);
 				vm_page_free(m);
 				return (NULL);
 			}
@@ -1613,6 +1615,7 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p
 					KASSERT(m->wire_count == 1,
 					    ("wire_count == %d", m->wire_count));
 					m->wire_count = 0;
+					atomic_subtract_int(&cnt.v_wire_count, 1);
 					vm_page_free(m);
 					return (NULL);
 				}
@@ -2017,9 +2020,10 @@ free_pv_entry(pmap_t pmap, pv_entry_t pv
 	/* entire chunk is free, return it */
 	m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
 	dump_drop_page(m->phys_addr);
+	mtx_unlock(&pv_lock);
 	KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count));
 	m->wire_count = 0;
-	mtx_unlock(&pv_lock);
+	atomic_subtract_int(&cnt.v_wire_count, 1);
 	vm_page_free(m);
 }
 
@@ -4007,6 +4011,7 @@ restart:
 			    ("wire_count == %d", m->wire_count));
 			m->wire_count = 0;
 			mtx_unlock(&pv_lock);
+			atomic_subtract_int(&cnt.v_wire_count, 1);
 			vm_page_free(m);
 		}
 	}


More information about the svn-src-user mailing list