svn commit: r207649 - head/sys/sparc64/sparc64

Alan Cox alc at FreeBSD.org
Wed May 5 07:47:41 UTC 2010


Author: alc
Date: Wed May  5 07:47:40 2010
New Revision: 207649
URL: http://svn.freebsd.org/changeset/base/207649

Log:
  Use an OBJT_PHYS object and thus PG_UNMANAGED pages to implement the TSB.
  The TSB is not a pageable structure, so there is no point in using managed
  pages.
  
  Reviewed by:	kib

Modified:
  head/sys/sparc64/sparc64/pmap.c

Modified: head/sys/sparc64/sparc64/pmap.c
==============================================================================
--- head/sys/sparc64/sparc64/pmap.c	Wed May  5 07:40:54 2010	(r207648)
+++ head/sys/sparc64/sparc64/pmap.c	Wed May  5 07:47:40 2010	(r207649)
@@ -1091,7 +1091,7 @@ pmap_pinit(pmap_t pm)
 	 * Allocate an object for it.
 	 */
 	if (pm->pm_tsb_obj == NULL)
-		pm->pm_tsb_obj = vm_object_allocate(OBJT_DEFAULT, TSB_PAGES);
+		pm->pm_tsb_obj = vm_object_allocate(OBJT_PHYS, TSB_PAGES);
 
 	VM_OBJECT_LOCK(pm->pm_tsb_obj);
 	for (i = 0; i < TSB_PAGES; i++) {
@@ -1152,16 +1152,10 @@ pmap_release(pmap_t pm)
 	KASSERT(obj->ref_count == 1, ("pmap_release: tsbobj ref count != 1"));
 	while (!TAILQ_EMPTY(&obj->memq)) {
 		m = TAILQ_FIRST(&obj->memq);
-		vm_page_lock_queues();
-		if (vm_page_sleep_if_busy(m, FALSE, "pmaprl"))
-			continue;
-		KASSERT(m->hold_count == 0,
-		    ("pmap_release: freeing held tsb page"));
 		m->md.pmap = NULL;
 		m->wire_count--;
 		atomic_subtract_int(&cnt.v_wire_count, 1);
 		vm_page_free_zero(m);
-		vm_page_unlock_queues();
 	}
 	VM_OBJECT_UNLOCK(obj);
 	pmap_qremove((vm_offset_t)pm->pm_tsb, TSB_PAGES);


More information about the svn-src-all mailing list