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