svn commit: r195590 - in user/kmacy/releng_7_2_fcs_1/sys: sys vm

Kip Macy kmacy at FreeBSD.org
Fri Jul 10 21:36:41 UTC 2009


Author: kmacy
Date: Fri Jul 10 21:36:40 2009
New Revision: 195590
URL: http://svn.freebsd.org/changeset/base/195590

Log:
  add *_NODUMP flags to uma and malloc to enable caller to specify excluding memory from
  the dump

Modified:
  user/kmacy/releng_7_2_fcs_1/sys/sys/malloc.h
  user/kmacy/releng_7_2_fcs_1/sys/vm/uma.h
  user/kmacy/releng_7_2_fcs_1/sys/vm/uma_core.c
  user/kmacy/releng_7_2_fcs_1/sys/vm/vm_kern.c

Modified: user/kmacy/releng_7_2_fcs_1/sys/sys/malloc.h
==============================================================================
--- user/kmacy/releng_7_2_fcs_1/sys/sys/malloc.h	Fri Jul 10 21:28:39 2009	(r195589)
+++ user/kmacy/releng_7_2_fcs_1/sys/sys/malloc.h	Fri Jul 10 21:36:40 2009	(r195590)
@@ -50,6 +50,7 @@
 #define	M_ZERO		0x0100		/* bzero the allocation */
 #define	M_NOVM		0x0200		/* don't ask VM for pages */
 #define	M_USE_RESERVE	0x0400		/* can alloc out of reserve memory */
+#define	M_NODUMP	0x0800		/* don't dump pages in this allocation */
 
 #define	M_MAGIC		877983977	/* time when first defined :-) */
 

Modified: user/kmacy/releng_7_2_fcs_1/sys/vm/uma.h
==============================================================================
--- user/kmacy/releng_7_2_fcs_1/sys/vm/uma.h	Fri Jul 10 21:28:39 2009	(r195589)
+++ user/kmacy/releng_7_2_fcs_1/sys/vm/uma.h	Fri Jul 10 21:36:40 2009	(r195590)
@@ -246,6 +246,9 @@ int uma_zsecond_add(uma_zone_t zone, uma
 					 * backend pages and can fail early.
 					 */
 #define	UMA_ZONE_VTOSLAB	0x2000	/* Zone uses vtoslab for lookup. */
+#define	UMA_ZONE_NODUMP		0x4000	/* Zone's pages will not be included in
+					 * mini-dumps
+					 */
 
 /*
  * These flags are shared between the keg and zone.  In zones wishing to add

Modified: user/kmacy/releng_7_2_fcs_1/sys/vm/uma_core.c
==============================================================================
--- user/kmacy/releng_7_2_fcs_1/sys/vm/uma_core.c	Fri Jul 10 21:28:39 2009	(r195589)
+++ user/kmacy/releng_7_2_fcs_1/sys/vm/uma_core.c	Fri Jul 10 21:36:40 2009	(r195590)
@@ -839,6 +839,9 @@ keg_alloc_slab(uma_keg_t keg, uma_zone_t
 	else
 		wait &= ~M_ZERO;
 
+	if (keg->uk_flags & UMA_ZONE_NODUMP)
+		wait |= M_NODUMP;
+	
 	/* zone is passed for legacy reasons. */
 	mem = allocf(zone, keg->uk_ppera * UMA_SLAB_SIZE, &flags, wait);
 	if (mem == NULL) {

Modified: user/kmacy/releng_7_2_fcs_1/sys/vm/vm_kern.c
==============================================================================
--- user/kmacy/releng_7_2_fcs_1/sys/vm/vm_kern.c	Fri Jul 10 21:28:39 2009	(r195589)
+++ user/kmacy/releng_7_2_fcs_1/sys/vm/vm_kern.c	Fri Jul 10 21:36:40 2009	(r195590)
@@ -84,6 +84,10 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/uma.h>
 
+#ifdef	VM_MD_MINIDUMP
+#include <machine/md_var.h>
+#endif
+
 vm_map_t kernel_map=0;
 vm_map_t kmem_map=0;
 vm_map_t exec_map=0;
@@ -206,8 +210,15 @@ kmem_free(map, addr, size)
 	vm_offset_t addr;
 	vm_size_t size;
 {
-
-	(void) vm_map_remove(map, trunc_page(addr), round_page(addr + size));
+	vm_offset_t start = trunc_page(addr);
+	vm_offset_t end = round_page(addr + size);
+#ifdef VM_MD_MINIDUMP
+	vm_offset_t temp = start;
+
+	for (; temp < end; temp += PAGE_SIZE)
+		dump_add_page(pmap_kextract(temp));
+#endif	
+	(void) vm_map_remove(map, start, end);
 }
 
 /*
@@ -363,6 +374,10 @@ retry:
 		}
 		if (flags & M_ZERO && (m->flags & PG_ZERO) == 0)
 			pmap_zero_page(m);
+#ifdef VM_MD_MINIDUMP
+		if (flags & M_NODUMP)
+			dump_drop_page(VM_PAGE_TO_PHYS(m));
+#endif		
 		m->valid = VM_PAGE_BITS_ALL;
 		KASSERT((m->flags & PG_UNMANAGED) != 0,
 		    ("kmem_malloc: page %p is managed", m));


More information about the svn-src-user mailing list