svn commit: r207576 - head/sys/vm

Alan Cox alc at FreeBSD.org
Mon May 3 17:35:32 UTC 2010


Author: alc
Date: Mon May  3 17:35:31 2010
New Revision: 207576
URL: http://svn.freebsd.org/changeset/base/207576

Log:
  It makes more sense for the object-based backend allocator to use OBJT_PHYS
  objects instead of OBJT_DEFAULT objects because we never reclaim or pageout
  the allocated pages.  Moreover, they are mapped with pmap_qenter(), which
  creates unmanaged mappings.
  
  Reviewed by:	kib

Modified:
  head/sys/vm/uma_core.c

Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c	Mon May  3 17:34:12 2010	(r207575)
+++ head/sys/vm/uma_core.c	Mon May  3 17:35:31 2010	(r207576)
@@ -1022,12 +1022,8 @@ obj_alloc(uma_zone_t zone, int bytes, u_
 			while (pages != startpages) {
 				pages--;
 				p = TAILQ_LAST(&object->memq, pglist);
-				vm_page_lock(p);
-				vm_page_lock_queues();
 				vm_page_unwire(p, 0);
 				vm_page_free(p);
-				vm_page_unlock_queues();
-				vm_page_unlock(p);
 			}
 			retkva = 0;
 			goto done;
@@ -2893,13 +2889,11 @@ uma_zone_set_obj(uma_zone_t zone, struct
 
 	if (kva == 0)
 		return (0);
-	if (obj == NULL) {
-		obj = vm_object_allocate(OBJT_DEFAULT,
-		    pages);
-	} else {
+	if (obj == NULL)
+		obj = vm_object_allocate(OBJT_PHYS, pages);
+	else {
 		VM_OBJECT_LOCK_INIT(obj, "uma object");
-		_vm_object_allocate(OBJT_DEFAULT,
-		    pages, obj);
+		_vm_object_allocate(OBJT_PHYS, pages, obj);
 	}
 	ZONE_LOCK(zone);
 	keg->uk_kva = kva;


More information about the svn-src-head mailing list