Date: Fri, 10 Jul 2009 21:36:40 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r195590 - in user/kmacy/releng_7_2_fcs_1/sys: sys vm Message-ID: <200907102136.n6ALaeQN032802@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907102136.n6ALaeQN032802>