From owner-svn-src-user@FreeBSD.ORG Fri Jul 10 21:36:40 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3152106566B; Fri, 10 Jul 2009 21:36:40 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A84BA8FC27; Fri, 10 Jul 2009 21:36:40 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6ALaeTp032807; Fri, 10 Jul 2009 21:36:40 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6ALaeQN032802; Fri, 10 Jul 2009 21:36:40 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200907102136.n6ALaeQN032802@svn.freebsd.org> From: Kip Macy Date: Fri, 10 Jul 2009 21:36:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195590 - in user/kmacy/releng_7_2_fcs_1/sys: sys vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2009 21:36:41 -0000 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 #include +#ifdef VM_MD_MINIDUMP +#include +#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));