From owner-svn-src-user@FreeBSD.ORG Mon Jun 22 20:58:32 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 2756E106566C; Mon, 22 Jun 2009 20:58:32 +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 164878FC17; Mon, 22 Jun 2009 20:58:32 +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 n5MKwVwQ052452; Mon, 22 Jun 2009 20:58:31 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5MKwVpH052450; Mon, 22 Jun 2009 20:58:31 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906222058.n5MKwVpH052450@svn.freebsd.org> From: Kip Macy Date: Mon, 22 Jun 2009 20:58:31 +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: r194657 - user/kmacy/releng_7_2_fcs/sys/amd64/include 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: Mon, 22 Jun 2009 20:58:32 -0000 Author: kmacy Date: Mon Jun 22 20:58:31 2009 New Revision: 194657 URL: http://svn.freebsd.org/changeset/base/194657 Log: increase default kmem_size to reasonable level Modified: user/kmacy/releng_7_2_fcs/sys/amd64/include/vmparam.h Modified: user/kmacy/releng_7_2_fcs/sys/amd64/include/vmparam.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/include/vmparam.h Mon Jun 22 20:57:51 2009 (r194656) +++ user/kmacy/releng_7_2_fcs/sys/amd64/include/vmparam.h Mon Jun 22 20:58:31 2009 (r194657) @@ -184,7 +184,7 @@ /* virtual sizes (bytes) for various kernel submaps */ #ifndef VM_KMEM_SIZE -#define VM_KMEM_SIZE (12 * 1024 * 1024) +#define VM_KMEM_SIZE (256 * 1024 * 1024) #endif /* From owner-svn-src-user@FreeBSD.ORG Mon Jun 22 20:58:56 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 8B410106568A; Mon, 22 Jun 2009 20:58:56 +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 7A4888FC21; Mon, 22 Jun 2009 20:58:56 +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 n5MKwuQZ052494; Mon, 22 Jun 2009 20:58:56 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5MKwuN6052492; Mon, 22 Jun 2009 20:58:56 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906222058.n5MKwuN6052492@svn.freebsd.org> From: Kip Macy Date: Mon, 22 Jun 2009 20:58:56 +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: r194658 - user/kmacy/releng_7_2_fcs/sys/kern 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: Mon, 22 Jun 2009 20:58:56 -0000 Author: kmacy Date: Mon Jun 22 20:58:56 2009 New Revision: 194658 URL: http://svn.freebsd.org/changeset/base/194658 Log: reduce gratuitous diff with HEAD Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_malloc.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_malloc.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/kern_malloc.c Mon Jun 22 20:58:31 2009 (r194657) +++ user/kmacy/releng_7_2_fcs/sys/kern/kern_malloc.c Mon Jun 22 20:58:56 2009 (r194658) @@ -185,15 +185,15 @@ u_long vm_kmem_size; SYSCTL_ULONG(_vm, OID_AUTO, kmem_size, CTLFLAG_RD, &vm_kmem_size, 0, "Size of kernel memory"); -u_long vm_kmem_size_min; +static u_long vm_kmem_size_min; SYSCTL_ULONG(_vm, OID_AUTO, kmem_size_min, CTLFLAG_RD, &vm_kmem_size_min, 0, "Minimum size of kernel memory"); -u_long vm_kmem_size_max; +static u_long vm_kmem_size_max; SYSCTL_ULONG(_vm, OID_AUTO, kmem_size_max, CTLFLAG_RD, &vm_kmem_size_max, 0, "Maximum size of kernel memory"); -u_int vm_kmem_size_scale; +static u_int vm_kmem_size_scale; SYSCTL_ULONG(_vm, OID_AUTO, kmem_size_scale, CTLFLAG_RD, &vm_kmem_size_scale, 0, "Scale factor for kernel memory size"); @@ -435,8 +435,6 @@ free(void *addr, struct malloc_type *mtp addr = redzone_addr_ntor(addr); #endif - size = 0; - slab = vtoslab((vm_offset_t)addr & (~UMA_SLAB_MASK)); if (slab == NULL) From owner-svn-src-user@FreeBSD.ORG Tue Jun 23 16:50:24 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 6C5A21065687; Tue, 23 Jun 2009 16:50:24 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 37CD98FC14; Tue, 23 Jun 2009 16:50:24 +0000 (UTC) (envelope-from mav@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 n5NGoOv1083506; Tue, 23 Jun 2009 16:50:24 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5NGoO8Z083505; Tue, 23 Jun 2009 16:50:24 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <200906231650.n5NGoO8Z083505@svn.freebsd.org> From: Alexander Motin Date: Tue, 23 Jun 2009 16:50:24 +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: r194738 - user/mav 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: Tue, 23 Jun 2009 16:50:32 -0000 Author: mav Date: Tue Jun 23 16:50:23 2009 New Revision: 194738 URL: http://svn.freebsd.org/changeset/base/194738 Log: Delete my user branch. Everything interesting now hapens in P4. Deleted: user/mav/ From owner-svn-src-user@FreeBSD.ORG Tue Jun 23 17:41:51 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 C5AF21065673; Tue, 23 Jun 2009 17:41:51 +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 9A1168FC1B; Tue, 23 Jun 2009 17:41:51 +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 n5NHfpL1084697; Tue, 23 Jun 2009 17:41:51 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5NHfplx084696; Tue, 23 Jun 2009 17:41:51 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906231741.n5NHfplx084696@svn.freebsd.org> From: Kip Macy Date: Tue, 23 Jun 2009 17:41:51 +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: r194742 - user/kmacy/head_zfs_merge 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: Tue, 23 Jun 2009 17:41:52 -0000 Author: kmacy Date: Tue Jun 23 17:41:51 2009 New Revision: 194742 URL: http://svn.freebsd.org/changeset/base/194742 Log: branch for merging zfs changes in to HEAD Added: user/kmacy/head_zfs_merge/ (props changed) - copied from r194741, head/ From owner-svn-src-user@FreeBSD.ORG Wed Jun 24 20:29:11 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 4817D106564A; Wed, 24 Jun 2009 20:29:11 +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 36E778FC1A; Wed, 24 Jun 2009 20:29:11 +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 n5OKTBgp027968; Wed, 24 Jun 2009 20:29:11 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5OKTBqr027966; Wed, 24 Jun 2009 20:29:11 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906242029.n5OKTBqr027966@svn.freebsd.org> From: Kip Macy Date: Wed, 24 Jun 2009 20:29:11 +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: r194898 - user/kmacy/releng_7_2_fcs/sys/net 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: Wed, 24 Jun 2009 20:29:11 -0000 Author: kmacy Date: Wed Jun 24 20:29:10 2009 New Revision: 194898 URL: http://svn.freebsd.org/changeset/base/194898 Log: add further lock asserts Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.h Wed Jun 24 20:22:54 2009 (r194897) +++ user/kmacy/releng_7_2_fcs/sys/net/route.h Wed Jun 24 20:29:10 2009 (r194898) @@ -342,9 +342,10 @@ struct rt_addrinfo { } while (0) #define RTFREE_LOCKED(_rt) do { \ - if ((_rt)->rt_refcnt <= 1) \ + RT_LOCK_ASSERT(_rt); \ + if ((_rt)->rt_refcnt <= 1) { \ rtfree(_rt); \ - else { \ + } else { \ RT_REMREF(_rt); \ RT_UNLOCK(_rt); \ } \ @@ -358,6 +359,7 @@ struct rt_addrinfo { } while (0) #define RT_TEMP_UNLOCK(_rt) do { \ + RT_LOCK_ASSERT(_rt); \ RT_ADDREF(_rt); \ RT_UNLOCK(_rt); \ } while (0) From owner-svn-src-user@FreeBSD.ORG Thu Jun 25 21:59:16 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 A6DAE106564A; Thu, 25 Jun 2009 21:59:16 +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 939DB8FC0C; Thu, 25 Jun 2009 21:59:16 +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 n5PLxGnR065619; Thu, 25 Jun 2009 21:59:16 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5PLxGjL065617; Thu, 25 Jun 2009 21:59:16 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906252159.n5PLxGjL065617@svn.freebsd.org> From: Kip Macy Date: Thu, 25 Jun 2009 21:59:16 +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: r195007 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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: Thu, 25 Jun 2009 21:59:16 -0000 Author: kmacy Date: Thu Jun 25 21:59:16 2009 New Revision: 195007 URL: http://svn.freebsd.org/changeset/base/195007 Log: Parts of vm_page_free_toq need the vm page queue lock held. To avoid a LOR between the pmap lock and the vm page queue mutex in routines calling vm_page_free, we either need to aquire the vm page queue lock in advance (diminishing the value of the vm page lock) or we need to to defer page freeing until the pmap lock is held. This commit takes the latter path with the small but annoying down side that most of the internal routines now need to pass around a page free list. Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 21:50:15 2009 (r195006) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 21:59:16 2009 (r195007) @@ -247,11 +247,11 @@ static void pmap_pvh_free(struct md_page static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap, vm_offset_t va); -static boolean_t pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va); +static boolean_t pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va, vm_page_t *free); static boolean_t pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m, - vm_prot_t prot); + vm_prot_t prot, vm_page_t *free); static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, - vm_page_t m, vm_prot_t prot, vm_page_t mpte); + vm_page_t m, vm_prot_t prot, vm_page_t mpte, vm_page_t *free); static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); @@ -272,12 +272,12 @@ static boolean_t pmap_try_insert_pv_entr vm_page_t m); static vm_page_t pmap_allocpde(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, - int flags); + int flags, vm_page_t *free); static vm_page_t pmap_allocpte(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, - int flags); + int flags, vm_page_t *free); static vm_page_t _pmap_allocpte(pmap_t pmap, vm_paddr_t pa, - vm_pindex_t ptepindex, int flags); + vm_pindex_t ptepindex, int flags, vm_page_t *free); static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t* free); static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, vm_page_t *); @@ -1508,7 +1508,8 @@ pmap_pinit(pmap_t pmap) * race conditions. */ static vm_page_t -_pmap_allocpte(pmap_t pmap, vm_paddr_t pa, vm_pindex_t ptepindex, int flags) +_pmap_allocpte(pmap_t pmap, vm_paddr_t pa, vm_pindex_t ptepindex, int flags, + vm_page_t *free) { vm_page_t m, pdppg, pdpg; @@ -1568,12 +1569,12 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p if ((*pml4 & PG_V) == 0) { /* Have to allocate a new pdp, recurse */ if (_pmap_allocpte(pmap, pa, NUPDE + NUPDPE + pml4index, - flags) == NULL) { + flags, free) == NULL) { KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count)); m->wire_count = 0; atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free(m); + pmap_add_delayed_free_list(m, free, FALSE); return (NULL); } } else { @@ -1603,12 +1604,12 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p if ((*pml4 & PG_V) == 0) { /* Have to allocate a new pd, recurse */ if (_pmap_allocpte(pmap, pa, NUPDE + pdpindex, - flags) == NULL) { + flags, free) == NULL) { KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count)); m->wire_count = 0; atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free(m); + pmap_add_delayed_free_list(m, free, FALSE); return (NULL); } pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME); @@ -1619,12 +1620,13 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p if ((*pdp & PG_V) == 0) { /* Have to allocate a new pd, recurse */ if (_pmap_allocpte(pmap, pa, NUPDE + pdpindex, - flags) == NULL) { + flags, free) == NULL) { KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count)); m->wire_count = 0; + atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free(m); + pmap_add_delayed_free_list(m, free, FALSE); return (NULL); } } else { @@ -1644,7 +1646,8 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p } static vm_page_t -pmap_allocpde(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, int flags) +pmap_allocpde(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, int flags, + vm_page_t *free) { vm_pindex_t pdpindex, ptepindex; pdp_entry_t *pdpe; @@ -1663,7 +1666,7 @@ retry: /* Allocate a pd page. */ ptepindex = pmap_pde_pindex(va); pdpindex = ptepindex >> NPDPEPGSHIFT; - pdpg = _pmap_allocpte(pmap, pa, NUPDE + pdpindex, flags); + pdpg = _pmap_allocpte(pmap, pa, NUPDE + pdpindex, flags, free); if (pdpg == NULL && (flags & M_WAITOK)) goto retry; } @@ -1671,7 +1674,7 @@ retry: } static vm_page_t -pmap_allocpte(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, int flags) +pmap_allocpte(pmap_t pmap, vm_paddr_t pa, vm_offset_t va, int flags, vm_page_t *free) { vm_pindex_t ptepindex; pd_entry_t *pd; @@ -1700,7 +1703,7 @@ retry: if (pd != NULL && (*pd & (PG_PS | PG_V)) == (PG_PS | PG_V)) { if (pa_tryrelock(pmap, *pd & PG_FRAME, &lockedpa)) goto retry; - if (!pmap_demote_pde(pmap, pd, va)) { + if (!pmap_demote_pde(pmap, pd, va, free)) { /* * Invalidation of the 2MB page mapping may have caused * the deallocation of the underlying PD page. @@ -1728,7 +1731,7 @@ retry: * Here if the pte page isn't mapped, or if it has been * deallocated. */ - m = _pmap_allocpte(pmap, pa, ptepindex, flags); + m = _pmap_allocpte(pmap, pa, ptepindex, flags, free); if (m == NULL && (flags & M_WAITOK)) goto retry; } @@ -2312,12 +2315,12 @@ pmap_pv_insert_pde(pmap_t pmap, vm_offse * Tries to demote a 2MB page mapping. */ static boolean_t -pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va) +pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va, vm_page_t *free) { pd_entry_t newpde, oldpde; pt_entry_t *firstpte, newpte, *pte; vm_paddr_t mptepa; - vm_page_t free, mpte; + vm_page_t mpte; PMAP_LOCK_ASSERT(pmap, MA_OWNED); mpte = pmap_lookup_pt_page(pmap, va); @@ -2327,10 +2330,8 @@ pmap_demote_pde(pmap_t pmap, pd_entry_t KASSERT((*pde & PG_W) == 0, ("pmap_demote_pde: page table page for a wired mapping" " is missing")); - free = NULL; - pmap_remove_pde(pmap, pde, trunc_2mpage(va), &free); + pmap_remove_pde(pmap, pde, trunc_2mpage(va), free); pmap_invalidate_page(pmap, trunc_2mpage(va)); - pmap_free_zero_pages(free); CTR2(KTR_PMAP, "pmap_demote_pde: failure for va %#lx" " in pmap %p", va, pmap); return (FALSE); @@ -2437,7 +2438,7 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t } } if (pmap == kernel_pmap) { - if (!pmap_demote_pde(pmap, pdq, sva)) + if (!pmap_demote_pde(pmap, pdq, sva, free)) panic("pmap_remove_pde: failed demotion"); } else { mpte = pmap_lookup_pt_page(pmap, sva); @@ -2618,7 +2619,7 @@ restart: anyvalid = 1; pmap_remove_pde(pmap, pde, sva, &free); continue; - } else if (!pmap_demote_pde(pmap, pde, sva)) { + } else if (!pmap_demote_pde(pmap, pde, sva, &free)) { /* The large page mapping was destroyed. */ continue; } @@ -2689,7 +2690,7 @@ pmap_remove_all(vm_page_t m) pt_entry_t *pte, tpte; pd_entry_t *pde; vm_offset_t va; - vm_page_t free; + vm_page_t free = NULL; KASSERT((m->flags & PG_FICTITIOUS) == 0, ("pmap_remove_all: page %p is fictitious", m)); @@ -2700,7 +2701,7 @@ pmap_remove_all(vm_page_t m) pmap = PV_PMAP(pv); PMAP_LOCK(pmap); pde = pmap_pde(pmap, va); - (void)pmap_demote_pde(pmap, pde, va); + (void)pmap_demote_pde(pmap, pde, va, &free); PMAP_UNLOCK(pmap); } while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { @@ -2722,15 +2723,14 @@ pmap_remove_all(vm_page_t m) */ if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - free = NULL; pmap_unuse_pt(pmap, pv->pv_va, *pde, &free); pmap_invalidate_page(pmap, pv->pv_va); - pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); } vm_page_flag_clear(m, PG_WRITEABLE); + pmap_free_zero_pages(free); } /* @@ -2795,6 +2795,7 @@ pmap_protect(pmap_t pmap, vm_offset_t sv pt_entry_t *pte; int anychanged; vm_paddr_t pa; + vm_page_t free = NULL; if ((prot & VM_PROT_READ) == VM_PROT_NONE) { pmap_remove(pmap, sva, eva); @@ -2856,7 +2857,7 @@ restart: if (pmap_protect_pde(pmap, pde, sva, prot)) anychanged = 1; continue; - } else if (!pmap_demote_pde(pmap, pde, sva)) { + } else if (!pmap_demote_pde(pmap, pde, sva, &free)) { /* The large page mapping was destroyed. */ continue; } @@ -2911,6 +2912,7 @@ retry: if (anychanged) pmap_invalidate_all(pmap); PMAP_UNLOCK(pmap); + pmap_free_zero_pages(free); } /* @@ -3049,6 +3051,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, pt_entry_t origpte, newpte; vm_page_t mpte, om; boolean_t invlva; + vm_page_t free = NULL; va = trunc_page(va); KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); @@ -3066,7 +3069,7 @@ restart: * resident, we are creating it here. */ if (va < VM_MAXUSER_ADDRESS) - mpte = pmap_allocpte(pmap, lockedpa, va, M_WAITOK); + mpte = pmap_allocpte(pmap, lockedpa, va, M_WAITOK, &free); pde = pmap_pde(pmap, va); if (pde != NULL && (*pde & PG_V) != 0) { @@ -3221,6 +3224,7 @@ validate: PA_UNLOCK(pa); PMAP_UNLOCK(pmap); + pmap_free_zero_pages(free); } /* @@ -3230,16 +3234,17 @@ validate: * (3) a pv entry cannot be allocated without reclaiming another pv entry. */ static boolean_t -pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot) +pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, + vm_page_t *free) { pd_entry_t *pde, newpde; - vm_page_t free, mpde; + vm_page_t mpde; vm_paddr_t pa; vm_page_lock_assert(m, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); pa = VM_PAGE_TO_PHYS(m); - if ((mpde = pmap_allocpde(pmap, pa, va, M_NOWAIT)) == NULL) { + if ((mpde = pmap_allocpde(pmap, pa, va, M_NOWAIT, free)) == NULL) { CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx" " in pmap %p", va, pmap); return (FALSE); @@ -3262,11 +3267,9 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t * Abort this mapping if its PV entry could not be created. */ if (!pmap_pv_insert_pde(pmap, va, VM_PAGE_TO_PHYS(m))) { - free = NULL; - if (pmap_unwire_pte_hold(pmap, va, mpde, &free)) { + if (pmap_unwire_pte_hold(pmap, va, mpde, free)) { pmap_invalidate_page(pmap, va); - pmap_free_zero_pages(free); } CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx" " in pmap %p", va, pmap); @@ -3311,7 +3314,7 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m_start, vm_prot_t prot) { vm_offset_t va; - vm_page_t m, mpte; + vm_page_t m, mpte, free = NULL; vm_pindex_t diff, psize; VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED); @@ -3325,15 +3328,16 @@ pmap_enter_object(pmap_t pmap, vm_offset if ((va & PDRMASK) == 0 && va + NBPDR <= end && (VM_PAGE_TO_PHYS(m) & PDRMASK) == 0 && pg_ps_enabled && vm_reserv_level_iffullpop(m) == 0 && - pmap_enter_pde(pmap, va, m, prot)) + pmap_enter_pde(pmap, va, m, prot, &free)) m = &m[NBPDR / PAGE_SIZE - 1]; else mpte = pmap_enter_quick_locked(pmap, va, m, prot, - mpte); + mpte, &free); PMAP_UNLOCK(pmap); vm_page_unlock(m); m = TAILQ_NEXT(m, listq); } + pmap_free_zero_pages(free); } /* @@ -3348,17 +3352,19 @@ pmap_enter_object(pmap_t pmap, vm_offset void pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot) { + vm_page_t free = NULL; PMAP_LOCK(pmap); - (void) pmap_enter_quick_locked(pmap, va, m, prot, NULL); + (void) pmap_enter_quick_locked(pmap, va, m, prot, NULL, &free); PMAP_UNLOCK(pmap); + + pmap_free_zero_pages(free); } static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, - vm_prot_t prot, vm_page_t mpte) + vm_prot_t prot, vm_page_t mpte, vm_page_t *free) { - vm_page_t free; pt_entry_t *pte; vm_paddr_t pa; @@ -3400,7 +3406,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ } else { pa = VM_PAGE_TO_PHYS(m); mpte = _pmap_allocpte(pmap, pa, ptepindex, - M_NOWAIT); + M_NOWAIT, free); if (mpte == NULL) return (mpte); } @@ -3430,10 +3436,8 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0 && !pmap_try_insert_pv_entry(pmap, va, m)) { if (mpte != NULL) { - free = NULL; - if (pmap_unwire_pte_hold(pmap, va, mpte, &free)) { + if (pmap_unwire_pte_hold(pmap, va, mpte, free)) { pmap_invalidate_page(pmap, va); - pmap_free_zero_pages(free); } mpte = NULL; } @@ -3486,7 +3490,8 @@ pmap_object_init_pt(pmap_t pmap, vm_offs vm_offset_t va; vm_page_t p, pdpg; vm_paddr_t pa; - + vm_page_t free = NULL; + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); KASSERT(object->type == OBJT_DEVICE, ("pmap_object_init_pt: non-device object")); @@ -3533,7 +3538,7 @@ retry: for (va = addr; va < addr + size; va += NBPDR) { pa = VM_PAGE_TO_PHYS(p); while ((pdpg = - pmap_allocpde(pmap, pa, va, M_NOWAIT)) == NULL) { + pmap_allocpde(pmap, pa, va, M_NOWAIT, &free)) == NULL) { PMAP_UNLOCK(pmap); vm_page_lock(p); vm_page_busy(p); @@ -3565,6 +3570,7 @@ retry: out: PMAP_UNLOCK(pmap); } + pmap_free_zero_pages(free); } /* @@ -3580,6 +3586,7 @@ pmap_change_wiring(pmap_t pmap, vm_offse pd_entry_t *pde; pt_entry_t *pte; vm_paddr_t pa; + vm_page_t free = NULL; /* * Wiring is not a hardware characteristic so there is no need to @@ -3593,7 +3600,7 @@ retry: if (!wired != ((*pde & PG_W) == 0)) { if (pa_tryrelock(pmap, *pde & PG_FRAME, &pa)) goto retry; - if (!pmap_demote_pde(pmap, pde, va)) + if (!pmap_demote_pde(pmap, pde, va, &free)) panic("pmap_change_wiring: demotion failed"); } else goto out; @@ -3610,6 +3617,8 @@ out: if (pa) PA_UNLOCK(pa); PMAP_UNLOCK(pmap); + + pmap_free_zero_pages(free); } @@ -3638,6 +3647,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm if (!pmap_is_current(src_pmap)) return; + free = NULL; if (dst_pmap < src_pmap) { PMAP_LOCK(dst_pmap); PMAP_LOCK(src_pmap); @@ -3684,7 +3694,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm pa = srcptepaddr & PG_PS_FRAME; if (PA_TRYLOCK(pa) == 0) continue; - dstmpde = pmap_allocpde(dst_pmap, pa, addr, M_NOWAIT); + dstmpde = pmap_allocpde(dst_pmap, pa, addr, M_NOWAIT, &free); if (dstmpde == NULL) break; pde = (pd_entry_t *) @@ -3723,7 +3733,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm break; p = PHYS_TO_VM_PAGE(pa); dstmpte = pmap_allocpte(dst_pmap, pa, addr, - M_NOWAIT); + M_NOWAIT, &free); if (dstmpte == NULL) break; dst_pte = (pt_entry_t *) @@ -3741,12 +3751,10 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm PG_A); dst_pmap->pm_stats.resident_count++; } else { - free = NULL; if (pmap_unwire_pte_hold(dst_pmap, addr, dstmpte, &free)) { pmap_invalidate_page(dst_pmap, addr); - pmap_free_zero_pages(free); } } PA_UNLOCK(pa); @@ -3759,6 +3767,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm } PMAP_UNLOCK(src_pmap); PMAP_UNLOCK(dst_pmap); + pmap_free_zero_pages(free); } /* @@ -4015,12 +4024,12 @@ restart: TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list); m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc)); dump_drop_page(m->phys_addr); + mtx_unlock(&pv_lock); KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count)); m->wire_count = 0; - mtx_unlock(&pv_lock); atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free(m); + pmap_add_delayed_free_list(m, &free, FALSE); } } if (pa) @@ -4110,6 +4119,7 @@ pmap_remove_write(vm_page_t m) pd_entry_t *pde; pt_entry_t oldpte, *pte; vm_offset_t va; + vm_page_t free = NULL; if ((m->flags & PG_FICTITIOUS) != 0 || (m->flags & PG_WRITEABLE) == 0) @@ -4122,9 +4132,11 @@ pmap_remove_write(vm_page_t m) PMAP_LOCK(pmap); pde = pmap_pde(pmap, va); if ((*pde & PG_RW) != 0) - (void)pmap_demote_pde(pmap, pde, va); + (void)pmap_demote_pde(pmap, pde, va, &free); PMAP_UNLOCK(pmap); } + + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4169,6 +4181,7 @@ pmap_ts_referenced(vm_page_t m) pt_entry_t *pte; vm_offset_t va; int rtval = 0; + vm_page_t free = NULL; if (m->flags & PG_FICTITIOUS) return (rtval); @@ -4181,7 +4194,7 @@ pmap_ts_referenced(vm_page_t m) pde = pmap_pde(pmap, va); oldpde = *pde; if ((oldpde & PG_A) != 0) { - if (pmap_demote_pde(pmap, pde, va)) { + if (pmap_demote_pde(pmap, pde, va, &free)) { if ((oldpde & PG_W) == 0) { /* * Remove the mapping to a single page @@ -4204,6 +4217,7 @@ pmap_ts_referenced(vm_page_t m) } PMAP_UNLOCK(pmap); } + pmap_free_zero_pages(free); if ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pvf = pv; do { @@ -4240,6 +4254,7 @@ pmap_clear_modify(vm_page_t m) pv_entry_t next_pv, pv; pd_entry_t oldpde, *pde; pt_entry_t oldpte, *pte; + vm_page_t free = NULL; vm_offset_t va; if ((m->flags & PG_FICTITIOUS) != 0) @@ -4253,7 +4268,7 @@ pmap_clear_modify(vm_page_t m) pde = pmap_pde(pmap, va); oldpde = *pde; if ((oldpde & PG_RW) != 0) { - if (pmap_demote_pde(pmap, pde, va)) { + if (pmap_demote_pde(pmap, pde, va, &free)) { if ((oldpde & PG_W) == 0) { /* * Write protect the mapping to a @@ -4277,6 +4292,7 @@ pmap_clear_modify(vm_page_t m) } PMAP_UNLOCK(pmap); } + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4306,6 +4322,7 @@ pmap_clear_reference(vm_page_t m) pd_entry_t oldpde, *pde; pt_entry_t *pte; vm_offset_t va; + vm_page_t free = NULL; if ((m->flags & PG_FICTITIOUS) != 0) return; @@ -4318,7 +4335,7 @@ pmap_clear_reference(vm_page_t m) pde = pmap_pde(pmap, va); oldpde = *pde; if ((oldpde & PG_A) != 0) { - if (pmap_demote_pde(pmap, pde, va)) { + if (pmap_demote_pde(pmap, pde, va, &free)) { /* * Remove the mapping to a single page so * that a subsequent access may repromote. @@ -4333,6 +4350,7 @@ pmap_clear_reference(vm_page_t m) } PMAP_UNLOCK(pmap); } + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); From owner-svn-src-user@FreeBSD.ORG Thu Jun 25 22:13:46 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 84B7B10656AC; Thu, 25 Jun 2009 22:13:46 +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 B8BE08FC17; Thu, 25 Jun 2009 22:13:44 +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 n5PMDi2Q065953; Thu, 25 Jun 2009 22:13:44 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5PMDiSs065951; Thu, 25 Jun 2009 22:13:44 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906252213.n5PMDiSs065951@svn.freebsd.org> From: Kip Macy Date: Thu, 25 Jun 2009 22:13:44 +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: r195008 - user/kmacy/releng_7_2_fcs/sys/kern 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: Thu, 25 Jun 2009 22:13:47 -0000 Author: kmacy Date: Thu Jun 25 22:13:44 2009 New Revision: 195008 URL: http://svn.freebsd.org/changeset/base/195008 Log: enforce uniform lock acquisition in VM Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Thu Jun 25 21:59:16 2009 (r195007) +++ user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Thu Jun 25 22:13:44 2009 (r195008) @@ -604,6 +604,14 @@ static struct witness_order_list_entry o { "cdev", &lock_class_mtx_sleep }, { NULL, NULL }, /* + * VM + * + */ + { "vm page queue mutex", &lock_class_mtx_sleep }, + { "page lock", &lock_class_mtx_sleep }, + { "pmap", &lock_class_mtx_sleep }, + { NULL, NULL }, + /* * kqueue/VFS interaction */ { "kqueue", &lock_class_mtx_sleep }, From owner-svn-src-user@FreeBSD.ORG Thu Jun 25 22:22:03 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 B402A1065673; Thu, 25 Jun 2009 22:22:03 +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 A20FF8FC19; Thu, 25 Jun 2009 22:22:03 +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 n5PMM3nm066159; Thu, 25 Jun 2009 22:22:03 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5PMM3dg066157; Thu, 25 Jun 2009 22:22:03 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906252222.n5PMM3dg066157@svn.freebsd.org> From: Kip Macy Date: Thu, 25 Jun 2009 22:22:03 +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: r195009 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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: Thu, 25 Jun 2009 22:22:04 -0000 Author: kmacy Date: Thu Jun 25 22:22:03 2009 New Revision: 195009 URL: http://svn.freebsd.org/changeset/base/195009 Log: page wire counts are protected by the pmap lock, back out the use of atomics Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 22:13:44 2009 (r195008) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 22:22:03 2009 (r195009) @@ -1356,7 +1356,7 @@ static __inline int pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free) { - atomic_subtract_int(&m->wire_count, 1); + m->wire_count--; if (m->wire_count == 0) return _pmap_unwire_pte_hold(pmap, va, m, free); else @@ -1580,7 +1580,7 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p } else { /* Add reference to pdp page */ pdppg = PHYS_TO_VM_PAGE(*pml4 & PG_FRAME); - atomic_add_int(&pdppg->wire_count, 1); + pdppg->wire_count++; } pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME); @@ -1632,7 +1632,7 @@ _pmap_allocpte(pmap_t pmap, vm_paddr_t p } else { /* Add reference to the pd page */ pdpg = PHYS_TO_VM_PAGE(*pdp & PG_FRAME); - atomic_add_int(&pdpg->wire_count, 1); + pdpg->wire_count++; } } pd = (pd_entry_t *)PHYS_TO_DMAP(*pdp & PG_FRAME); @@ -1661,7 +1661,7 @@ retry: if (pdpe != NULL && (*pdpe & PG_V) != 0) { /* Add a reference to the pd page. */ pdpg = PHYS_TO_VM_PAGE(*pdpe & PG_FRAME); - atomic_add_int(&pdpg->wire_count, 1); + pdpg->wire_count++; } else { /* Allocate a pd page. */ ptepindex = pmap_pde_pindex(va); @@ -1725,7 +1725,7 @@ retry: */ if (pd != NULL && (*pd & PG_V) != 0) { m = PHYS_TO_VM_PAGE(*pd & PG_FRAME); - atomic_add_int(&m->wire_count, 1); + m->wire_count++; } else { /* * Here if the pte page isn't mapped, or if it has been @@ -3104,7 +3104,7 @@ restart: * Remove extra pte reference */ if (mpte) - atomic_subtract_int(&mpte->wire_count, 1); + mpte->wire_count--; /* * We might be turning off write access to the page, @@ -3135,7 +3135,7 @@ restart: om = NULL; } if (mpte != NULL) { - atomic_subtract_int(&mpte->wire_count, 1); + mpte->wire_count--; KASSERT(mpte->wire_count > 0, ("pmap_enter: missing reference to page table page," " va: 0x%lx", va)); @@ -3254,7 +3254,7 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t if ((*pde & PG_V) != 0) { KASSERT(mpde->wire_count > 1, ("pmap_enter_pde: mpde's wire count is too low")); - atomic_subtract_int(&mpde->wire_count, 1); + mpde->wire_count--; CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx" " in pmap %p", va, pmap); return (FALSE); @@ -3387,7 +3387,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ */ ptepindex = pmap_pde_pindex(va); if (mpte && (mpte->pindex == ptepindex)) { - atomic_add_int(&mpte->wire_count, 1); + mpte->wire_count++; } else { /* * Get the page directory entry @@ -3402,7 +3402,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ if (*ptepa & PG_PS) return (NULL); mpte = PHYS_TO_VM_PAGE(*ptepa & PG_FRAME); - atomic_add_int(&mpte->wire_count, 1); + mpte->wire_count++; } else { pa = VM_PAGE_TO_PHYS(m); mpte = _pmap_allocpte(pmap, pa, ptepindex, @@ -3424,7 +3424,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ pte = vtopte(va); if (*pte) { if (mpte != NULL) { - atomic_subtract_int(&mpte->wire_count, 1); + mpte->wire_count--; mpte = NULL; } return (mpte); @@ -3559,7 +3559,7 @@ retry: pmap->pm_stats.resident_count += NBPDR / PAGE_SIZE; } else { - atomic_subtract_int(&pdpg->wire_count, 1); + pdpg->wire_count--; KASSERT(pdpg->wire_count > 0, ("pmap_object_init_pt: missing reference " "to page directory page, va: 0x%lx", va)); @@ -3705,8 +3705,8 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm *pde = srcptepaddr & ~PG_W; dst_pmap->pm_stats.resident_count += NBPDR / PAGE_SIZE; - } else - atomic_subtract_int(&dstmpde->wire_count, 1); + } else + dstmpde->wire_count--; PA_UNLOCK(pa); continue; } From owner-svn-src-user@FreeBSD.ORG Thu Jun 25 22:24:14 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 3C1D9106566C; Thu, 25 Jun 2009 22:24:14 +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 2ACB78FC18; Thu, 25 Jun 2009 22:24:14 +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 n5PMOEqj066234; Thu, 25 Jun 2009 22:24:14 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5PMOELp066232; Thu, 25 Jun 2009 22:24:14 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906252224.n5PMOELp066232@svn.freebsd.org> From: Kip Macy Date: Thu, 25 Jun 2009 22:24:14 +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: r195010 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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: Thu, 25 Jun 2009 22:24:14 -0000 Author: kmacy Date: Thu Jun 25 22:24:13 2009 New Revision: 195010 URL: http://svn.freebsd.org/changeset/base/195010 Log: guarantee absence of false sharing on pv_lock and page locks Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 22:22:03 2009 (r195009) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 22:24:13 2009 (r195010) @@ -184,8 +184,9 @@ struct vp_lock { #define PA_LOCK_COUNT 64 -struct vp_lock pa_lock[PA_LOCK_COUNT]; -struct mtx pv_lock; +struct mtx pv_lock __aligned(128); +struct vp_lock pa_lock[PA_LOCK_COUNT] __aligned(128); + struct pmap kernel_pmap_store; From owner-svn-src-user@FreeBSD.ORG Thu Jun 25 22:55:02 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 13F4C106564A; Thu, 25 Jun 2009 22:55:02 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.241]) by mx1.freebsd.org (Postfix) with ESMTP id A52CC8FC2F; Thu, 25 Jun 2009 22:55:01 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: by an-out-0708.google.com with SMTP id d14so253947and.13 for ; Thu, 25 Jun 2009 15:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to :content-type:content-transfer-encoding; bh=DYQUaClJIgG2YsfXg8nsaLLGsqKCr9ePCK5hDw4aCTc=; b=Jnj2cd75JpQJNaz6TQRgND36F/BDlCok0VmkZESJMvbjh8A2LzIqKyFLOB8RMF+nrd akdAqW52tnFXiNI9AZJ7rOrBeBbo6qdDShFhSxzzvs7O2iLwrfU9Ast7FUTZESvTPlC7 WYQtdiWMojUBFUD8DhVvfThvQ6Qg9cQqvXWpQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; b=xbiW+RgIiA4rsfMy+EZgQlbsASQKDQDCwa7CLPOXEHfaok6u9pjFrRTiJ1yW3Mn1IR d8ingV04EU/mhFXjqxUMKkHnzN36pTKVUfCgsjYot8WaKCZ2VxcF3pV/6yxR+P0Nmcdp GO5QMIV3oU46ENTN8gZyUJboV8bIMM/OIKirQ= MIME-Version: 1.0 Sender: mat.macy@gmail.com Received: by 10.100.123.12 with SMTP id v12mr4126534anc.21.1245970498945; Thu, 25 Jun 2009 15:54:58 -0700 (PDT) In-Reply-To: <200906252159.n5PLxGjL065617@svn.freebsd.org> References: <200906252159.n5PLxGjL065617@svn.freebsd.org> Date: Thu, 25 Jun 2009 15:54:55 -0700 X-Google-Sender-Auth: e13413352df08ec8 Message-ID: <3c1674c90906251554r3c7fed3alb4bd7c6cf241a101@mail.gmail.com> From: Kip Macy To: src-committers@freebsd.org, svn-src-user@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Subject: Re: svn commit: r195007 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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: Thu, 25 Jun 2009 22:55:02 -0000 On Thu, Jun 25, 2009 at 2:59 PM, Kip Macy wrote: > Author: kmacy > Date: Thu Jun 25 21:59:16 2009 > New Revision: 195007 > URL: http://svn.freebsd.org/changeset/base/195007 > > Log: > =A0Parts of vm_page_free_toq need the vm page queue lock held. To avoid a > =A0LOR between the pmap lock and the vm page queue mutex in routines call= ing > =A0vm_page_free, we either need to aquire the vm page queue lock in advan= ce > =A0(diminishing the value of the vm page lock) or we need to to defer pag= e > =A0freeing until the pmap lock is held. This Defer until the pmap lock is not held. From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 00:03:11 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 605991065673; Fri, 26 Jun 2009 00:03:11 +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 44F928FC18; Fri, 26 Jun 2009 00:03:11 +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 n5Q03BnT068460; Fri, 26 Jun 2009 00:03:11 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q03BM0068458; Fri, 26 Jun 2009 00:03:11 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260003.n5Q03BM0068458@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 00:03:11 +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: r195016 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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, 26 Jun 2009 00:03:11 -0000 Author: kmacy Date: Fri Jun 26 00:03:10 2009 New Revision: 195016 URL: http://svn.freebsd.org/changeset/base/195016 Log: add passing of free list to additional places - free_pv_entry is called with the pmap lock held Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Thu Jun 25 23:59:23 2009 (r195015) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 00:03:10 2009 (r195016) @@ -239,12 +239,14 @@ struct msgbuf *msgbufp = 0; */ static caddr_t crashdumpmap; -static void free_pv_entry(pmap_t pmap, pv_entry_t pv); +static void free_pv_entry(pmap_t pmap, pv_entry_t pv, vm_page_t *free); static pv_entry_t get_pv_entry(pmap_t locked_pmap, int try); static void pmap_pv_demote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa); static boolean_t pmap_pv_insert_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa); -static void pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa); -static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va); +static void pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa, + vm_page_t *free); +static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va, + vm_page_t *free); static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap, vm_offset_t va); @@ -256,7 +258,8 @@ static vm_page_t pmap_enter_quick_locked static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); -static void pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va); +static void pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va, + vm_page_t *free); static boolean_t pmap_protect_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t sva, vm_prot_t prot); static int pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offset_t sva, @@ -267,7 +270,7 @@ static void pmap_remove_pt_page(pmap_t p static void pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, vm_page_t *free); static void pmap_remove_entry(struct pmap *pmap, vm_page_t m, - vm_offset_t va); + vm_offset_t va, vm_page_t *free); static void pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t m); static boolean_t pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va, vm_page_t m); @@ -1981,16 +1984,16 @@ pmap_collect(pmap_t locked_pmap, struct free = NULL; pmap_unuse_pt(pmap, va, *pde, &free); pmap_invalidate_page(pmap, va); - pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) { pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); if (TAILQ_EMPTY(&pvh->pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); } - free_pv_entry(pmap, pv); + free_pv_entry(pmap, pv, &free); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); + pmap_free_zero_pages(free); } vm_page_unlock(m); } @@ -2002,7 +2005,7 @@ pmap_collect(pmap_t locked_pmap, struct * free the pv_entry back to the free list */ static void -free_pv_entry(pmap_t pmap, pv_entry_t pv) +free_pv_entry(pmap_t pmap, pv_entry_t pv, vm_page_t *free) { vm_page_t m; struct pv_chunk *pc; @@ -2036,7 +2039,7 @@ free_pv_entry(pmap_t pmap, pv_entry_t pv KASSERT(m->wire_count == 1, ("wire_count == %d", m->wire_count)); m->wire_count = 0; atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free(m); + pmap_add_delayed_free_list(m, free, FALSE); } /* @@ -2195,7 +2198,8 @@ pmap_pv_demote_pde(pmap_t pmap, vm_offse * for the 2MB page mapping. */ static void -pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa) +pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa, + vm_page_t *free) { struct md_page *pvh; pv_entry_t pv; @@ -2224,7 +2228,7 @@ pmap_pv_promote_pde(pmap_t pmap, vm_offs do { m++; va += PAGE_SIZE; - pmap_pvh_free(&m->md, pmap, va); + pmap_pvh_free(&m->md, pmap, va, free); } while (va < va_last); } @@ -2234,22 +2238,22 @@ pmap_pv_promote_pde(pmap_t pmap, vm_offs * page mappings. */ static void -pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va) +pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va, vm_page_t *free) { pv_entry_t pv; pv = pmap_pvh_remove(pvh, pmap, va); KASSERT(pv != NULL, ("pmap_pvh_free: pv not found")); - free_pv_entry(pmap, pv); + free_pv_entry(pmap, pv, free); } static void -pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va) +pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va, vm_page_t *free) { struct md_page *pvh; vm_page_lock_assert(m, MA_OWNED); - pmap_pvh_free(&m->md, pmap, va); + pmap_pvh_free(&m->md, pmap, va, free); if (TAILQ_EMPTY(&m->md.pv_list)) { pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); if (TAILQ_EMPTY(&pvh->pv_list)) @@ -2425,7 +2429,7 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t if (oldpde & PG_MANAGED) { PA_LOCK_ASSERT(oldpde & PG_PS_FRAME, MA_OWNED); pvh = pa_to_pvh(oldpde & PG_PS_FRAME); - pmap_pvh_free(pvh, pmap, sva); + pmap_pvh_free(pvh, pmap, sva, free); eva = sva + NBPDR; for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); va < eva; va += PAGE_SIZE, m++) { @@ -2495,7 +2499,7 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t vm_page_dirty(m); if (oldpte & PG_A) vm_page_flag_set(m, PG_REFERENCED); - pmap_remove_entry(pmap, m, va); + pmap_remove_entry(pmap, m, va, free); vm_page_unlock(m); } return (ret); @@ -2727,7 +2731,7 @@ pmap_remove_all(vm_page_t m) pmap_unuse_pt(pmap, pv->pv_va, *pde, &free); pmap_invalidate_page(pmap, pv->pv_va); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); - free_pv_entry(pmap, pv); + free_pv_entry(pmap, pv, &free); PMAP_UNLOCK(pmap); } vm_page_flag_clear(m, PG_WRITEABLE); @@ -2924,7 +2928,8 @@ retry: * identical characteristics. */ static void -pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va) +pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va, + vm_page_t *free) { pd_entry_t newpde; pt_entry_t *firstpte, oldpte, pa, *pte; @@ -3011,7 +3016,7 @@ setpte: * Promote the pv entries. */ if ((newpde & PG_MANAGED) != 0) - pmap_pv_promote_pde(pmap, va, newpde & PG_PS_FRAME); + pmap_pv_promote_pde(pmap, va, newpde & PG_PS_FRAME, free); /* * Propagate the PAT index to its proper position. @@ -3128,7 +3133,7 @@ restart: if (origpte & PG_MANAGED) { om = PHYS_TO_VM_PAGE(opa); vm_page_lock_assert(om, MA_OWNED); - pmap_remove_entry(pmap, om, va); + pmap_remove_entry(pmap, om, va, &free); if (origpte & PG_A) vm_page_flag_set(om, PG_REFERENCED); if ((origpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) @@ -3221,7 +3226,7 @@ validate: */ if ((mpte == NULL || mpte->wire_count == NPTEPG) && pg_ps_enabled && vm_reserv_level_iffullpop(m) == 0) - pmap_promote_pde(pmap, pde, va); + pmap_promote_pde(pmap, pde, va, &free); PA_UNLOCK(pa); PMAP_UNLOCK(pmap); From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 00:14:46 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 AE90F1065678; Fri, 26 Jun 2009 00:14:46 +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 9C5738FC2D; Fri, 26 Jun 2009 00:14:46 +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 n5Q0EkDv068761; Fri, 26 Jun 2009 00:14:46 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q0EkiE068759; Fri, 26 Jun 2009 00:14:46 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260014.n5Q0EkiE068759@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 00:14:46 +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: r195017 - user/kmacy/releng_7_2_fcs/sys/net 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, 26 Jun 2009 00:14:47 -0000 Author: kmacy Date: Fri Jun 26 00:14:46 2009 New Revision: 195017 URL: http://svn.freebsd.org/changeset/base/195017 Log: clarify panic Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.c Fri Jun 26 00:03:10 2009 (r195016) +++ user/kmacy/releng_7_2_fcs/sys/net/route.c Fri Jun 26 00:14:46 2009 (r195017) @@ -372,8 +372,11 @@ rtfree(struct rtentry *rt) * with the route. */ if ((rt->rt_flags & RTF_UP) == 0) { - if (rt->rt_nodes->rn_flags & (RNF_ACTIVE | RNF_ROOT)) + if (rt->rt_nodes->rn_flags & (RNF_ACTIVE | RNF_ROOT)) { + printf("rn_flags=0x%x\n", rt->rt_nodes->rn_flags); panic("rtfree 2"); + } + /* * the rtentry must have been removed from the routing table * so it is represented in rttrash.. remove that now. @@ -756,14 +759,6 @@ rtexpunge(struct rtentry *rt) if (rnh == NULL) return (EAFNOSUPPORT); RADIX_NODE_HEAD_LOCK_ASSERT(rnh); -#if 0 - /* - * We cannot assume anything about the reference count - * because protocols call us in many situations; often - * before unwinding references to the table entry. - */ - KASSERT(rt->rt_refcnt <= 1, ("bogus refcnt %ld", rt->rt_refcnt)); -#endif /* * Remove the item from the tree; it should be there, * but when callers invoke us blindly it may not (sigh). From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 00:15:26 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 CBD481065679; Fri, 26 Jun 2009 00:15:26 +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 BA2EE8FC18; Fri, 26 Jun 2009 00:15:26 +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 n5Q0FQeR068818; Fri, 26 Jun 2009 00:15:26 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q0FQtu068816; Fri, 26 Jun 2009 00:15:26 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260015.n5Q0FQtu068816@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 00:15:26 +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: r195018 - user/kmacy/releng_7_2_fcs/sys/net 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, 26 Jun 2009 00:15:27 -0000 Author: kmacy Date: Fri Jun 26 00:15:26 2009 New Revision: 195018 URL: http://svn.freebsd.org/changeset/base/195018 Log: add to bad refcount assert Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.h Fri Jun 26 00:14:46 2009 (r195017) +++ user/kmacy/releng_7_2_fcs/sys/net/route.h Fri Jun 26 00:15:26 2009 (r195018) @@ -337,7 +337,8 @@ struct rt_addrinfo { #define RT_REMREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \ KASSERT((_rt)->rt_refcnt > 0, \ - ("bogus refcnt %d", (_rt)->rt_refcnt)); \ + ("invalid refcnt %d at %s:%d", (_rt)->rt_refcnt, \ + __FILE__, __LINE__)); \ (_rt)->rt_refcnt--; \ } while (0) From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 02:27:58 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 56BE6106564A; Fri, 26 Jun 2009 02:27:58 +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 4583F8FC15; Fri, 26 Jun 2009 02:27:58 +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 n5Q2Rwaa071873; Fri, 26 Jun 2009 02:27:58 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q2Rw5J071871; Fri, 26 Jun 2009 02:27:58 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260227.n5Q2Rw5J071871@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 02:27:58 +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: r195032 - user/kmacy/releng_7_2_fcs/sys/net 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, 26 Jun 2009 02:27:58 -0000 Author: kmacy Date: Fri Jun 26 02:27:57 2009 New Revision: 195032 URL: http://svn.freebsd.org/changeset/base/195032 Log: allow for losing a race with RT_REMREF Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.c Fri Jun 26 01:42:41 2009 (r195031) +++ user/kmacy/releng_7_2_fcs/sys/net/route.c Fri Jun 26 02:27:57 2009 (r195032) @@ -348,8 +348,7 @@ rtfree(struct rtentry *rt) * The callers should use RTFREE_LOCKED() or RTFREE(), so * we should come here exactly with the last reference. */ - RT_REMREF(rt); - if (rt->rt_refcnt > 0) { + if (rt->rt_refcnt > 1) { log(LOG_DEBUG, "%s: %p has %d refs\n", __func__, rt, rt->rt_refcnt); goto done; } @@ -363,7 +362,7 @@ rtfree(struct rtentry *rt) * typically calls rtexpunge which clears the RTF_UP flag * on the entry so that the code below reclaims the storage. */ - if (rt->rt_refcnt == 0 && rnh->rnh_close) + if (rt->rt_refcnt == 1 && rnh->rnh_close) rnh->rnh_close((struct radix_node *)rt, rnh); /* From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 04:59:56 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 26067106564A; Fri, 26 Jun 2009 04:59:56 +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 098FD8FC12; Fri, 26 Jun 2009 04:59:56 +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 n5Q4xtXu075243; Fri, 26 Jun 2009 04:59:55 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q4xtxs075241; Fri, 26 Jun 2009 04:59:55 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260459.n5Q4xtxs075241@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 04:59:55 +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: r195034 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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, 26 Jun 2009 04:59:56 -0000 Author: kmacy Date: Fri Jun 26 04:59:55 2009 New Revision: 195034 URL: http://svn.freebsd.org/changeset/base/195034 Log: when page lock is held defer freeing pages to another context Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 04:47:43 2009 (r195033) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 04:59:55 2009 (r195034) @@ -184,6 +184,7 @@ struct vp_lock { #define PA_LOCK_COUNT 64 +static vm_page_t global_free __aligned(128); struct mtx pv_lock __aligned(128); struct vp_lock pa_lock[PA_LOCK_COUNT] __aligned(128); @@ -1242,19 +1243,7 @@ pmap_qremove(vm_offset_t sva, int count) /*************************************************** * Page table page management routines..... - ***************************************************/ -static __inline void -pmap_free_zero_pages(vm_page_t free) -{ - vm_page_t m; - - while (free != NULL) { - m = free; - free = m->right; - /* Preserve the page's PG_ZERO setting. */ - vm_page_free_toq(m); - } -} +***************************************************/ /* * Schedule the specified unused page table page to be freed. Specifically, @@ -1273,6 +1262,36 @@ pmap_add_delayed_free_list(vm_page_t m, *free = m; } +static __inline void +pmap_free_zero_pages(vm_page_t free) +{ + vm_page_t m; + + if (free == NULL) + return; + /* + * transfer global free list to local free list + * + */ + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(global_free, &free, FALSE); + global_free = NULL; + mtx_unlock(&pv_lock); + + /* + * Avoid contention from repeated acquisition + * we know we're going to need it for every page in the list + */ + vm_page_lock_queues(); + while (free != NULL) { + m = free; + free = m->right; + /* Preserve the page's PG_ZERO setting. */ + vm_page_free_toq_locked(m); + } + vm_page_unlock_queues(); +} + /* * Inserts the specified page table page into the specified pmap's collection * of idle page table pages. Each of a pmap's page table pages is responsible @@ -1943,7 +1962,7 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, pmap_coll * exacerbating the shortage of free pv entries. */ static void -pmap_collect(pmap_t locked_pmap, struct vpgqueues *vpq) +pmap_collect(pmap_t locked_pmap, struct vpgqueues *vpq, vm_page_t *free) { struct md_page *pvh; pd_entry_t *pde; @@ -1951,7 +1970,7 @@ pmap_collect(pmap_t locked_pmap, struct pt_entry_t *pte, tpte; pv_entry_t next_pv, pv; vm_offset_t va; - vm_page_t m, free; + vm_page_t m; vm_page_lock_queues(); TAILQ_FOREACH(m, &vpq->pl, pageq) { @@ -1982,7 +2001,7 @@ pmap_collect(pmap_t locked_pmap, struct if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); free = NULL; - pmap_unuse_pt(pmap, va, *pde, &free); + pmap_unuse_pt(pmap, va, *pde, free); pmap_invalidate_page(pmap, va); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) { @@ -1990,10 +2009,9 @@ pmap_collect(pmap_t locked_pmap, struct if (TAILQ_EMPTY(&pvh->pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); } - free_pv_entry(pmap, pv, &free); + free_pv_entry(pmap, pv, free); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); - pmap_free_zero_pages(free); } vm_page_unlock(m); } @@ -2056,7 +2074,7 @@ get_pv_entry(pmap_t pmap, int try) int bit, field; pv_entry_t pv; struct pv_chunk *pc; - vm_page_t m; + vm_page_t m, free = NULL; PMAP_LOCK_ASSERT(pmap, MA_OWNED); mtx_lock(&pv_lock); @@ -2088,7 +2106,7 @@ retry: } PV_STAT(pv_entry_spare--); mtx_unlock(&pv_lock); - return (pv); + goto done; } } /* No free items, allocate another chunk */ @@ -2100,7 +2118,8 @@ retry: pv_entry_count--; PV_STAT(pc_chunk_tryfail++); mtx_unlock(&pv_lock); - return (NULL); + pv = NULL; + goto done; } /* * Reclaim pv entries: At first, destroy mappings to inactive @@ -2115,7 +2134,7 @@ retry: pq = &vm_page_queues[PQ_ACTIVE]; } else panic("get_pv_entry: increase vm.pmap.shpgperproc"); - pmap_collect(pmap, pq); + pmap_collect(pmap, pq, &free); goto retry; } PV_STAT(pc_chunk_count++); @@ -2131,6 +2150,8 @@ retry: TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list); PV_STAT(pv_entry_spare += _NPCPV - 1); mtx_unlock(&pv_lock); +done: + pmap_free_zero_pages(free); return (pv); } @@ -2735,7 +2756,9 @@ pmap_remove_all(vm_page_t m) PMAP_UNLOCK(pmap); } vm_page_flag_clear(m, PG_WRITEABLE); - pmap_free_zero_pages(free); + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); } /* @@ -3230,7 +3253,9 @@ validate: PA_UNLOCK(pa); PMAP_UNLOCK(pmap); - pmap_free_zero_pages(free); + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); } /* @@ -3623,7 +3648,6 @@ out: if (pa) PA_UNLOCK(pa); PMAP_UNLOCK(pmap); - pmap_free_zero_pages(free); } @@ -4113,6 +4137,7 @@ pmap_is_prefaultable(pmap_t pmap, vm_off return (rv); } + /* * Clear the write and modified bits in each of the given page's mappings. */ @@ -4142,7 +4167,9 @@ pmap_remove_write(vm_page_t m) PMAP_UNLOCK(pmap); } - pmap_free_zero_pages(free); + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4223,7 +4250,9 @@ pmap_ts_referenced(vm_page_t m) } PMAP_UNLOCK(pmap); } - pmap_free_zero_pages(free); + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); if ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pvf = pv; do { @@ -4298,7 +4327,10 @@ pmap_clear_modify(vm_page_t m) } PMAP_UNLOCK(pmap); } - pmap_free_zero_pages(free); + + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4356,7 +4388,9 @@ pmap_clear_reference(vm_page_t m) } PMAP_UNLOCK(pmap); } - pmap_free_zero_pages(free); + mtx_lock(&pv_lock); + pmap_add_delayed_free_list(free, &global_free, FALSE); + mtx_unlock(&pv_lock); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 05:08:33 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 6341D1065670; Fri, 26 Jun 2009 05:08:33 +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 BCD278FC0C; Fri, 26 Jun 2009 05:08:32 +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 n5Q58Ww3075488; Fri, 26 Jun 2009 05:08:32 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q58WLg075486; Fri, 26 Jun 2009 05:08:32 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260508.n5Q58WLg075486@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 05:08:32 +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: r195035 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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, 26 Jun 2009 05:08:33 -0000 Author: kmacy Date: Fri Jun 26 05:08:32 2009 New Revision: 195035 URL: http://svn.freebsd.org/changeset/base/195035 Log: the previous change doesn't address the LOR in vm_object.c - revert Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 04:59:55 2009 (r195034) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 05:08:32 2009 (r195035) @@ -184,7 +184,6 @@ struct vp_lock { #define PA_LOCK_COUNT 64 -static vm_page_t global_free __aligned(128); struct mtx pv_lock __aligned(128); struct vp_lock pa_lock[PA_LOCK_COUNT] __aligned(128); @@ -1243,7 +1242,19 @@ pmap_qremove(vm_offset_t sva, int count) /*************************************************** * Page table page management routines..... -***************************************************/ + ***************************************************/ +static __inline void +pmap_free_zero_pages(vm_page_t free) +{ + vm_page_t m; + + while (free != NULL) { + m = free; + free = m->right; + /* Preserve the page's PG_ZERO setting. */ + vm_page_free_toq(m); + } +} /* * Schedule the specified unused page table page to be freed. Specifically, @@ -1262,36 +1273,6 @@ pmap_add_delayed_free_list(vm_page_t m, *free = m; } -static __inline void -pmap_free_zero_pages(vm_page_t free) -{ - vm_page_t m; - - if (free == NULL) - return; - /* - * transfer global free list to local free list - * - */ - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(global_free, &free, FALSE); - global_free = NULL; - mtx_unlock(&pv_lock); - - /* - * Avoid contention from repeated acquisition - * we know we're going to need it for every page in the list - */ - vm_page_lock_queues(); - while (free != NULL) { - m = free; - free = m->right; - /* Preserve the page's PG_ZERO setting. */ - vm_page_free_toq_locked(m); - } - vm_page_unlock_queues(); -} - /* * Inserts the specified page table page into the specified pmap's collection * of idle page table pages. Each of a pmap's page table pages is responsible @@ -1962,7 +1943,7 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, pmap_coll * exacerbating the shortage of free pv entries. */ static void -pmap_collect(pmap_t locked_pmap, struct vpgqueues *vpq, vm_page_t *free) +pmap_collect(pmap_t locked_pmap, struct vpgqueues *vpq) { struct md_page *pvh; pd_entry_t *pde; @@ -1970,7 +1951,7 @@ pmap_collect(pmap_t locked_pmap, struct pt_entry_t *pte, tpte; pv_entry_t next_pv, pv; vm_offset_t va; - vm_page_t m; + vm_page_t m, free; vm_page_lock_queues(); TAILQ_FOREACH(m, &vpq->pl, pageq) { @@ -2001,7 +1982,7 @@ pmap_collect(pmap_t locked_pmap, struct if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); free = NULL; - pmap_unuse_pt(pmap, va, *pde, free); + pmap_unuse_pt(pmap, va, *pde, &free); pmap_invalidate_page(pmap, va); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) { @@ -2009,9 +1990,10 @@ pmap_collect(pmap_t locked_pmap, struct if (TAILQ_EMPTY(&pvh->pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); } - free_pv_entry(pmap, pv, free); + free_pv_entry(pmap, pv, &free); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); + pmap_free_zero_pages(free); } vm_page_unlock(m); } @@ -2074,7 +2056,7 @@ get_pv_entry(pmap_t pmap, int try) int bit, field; pv_entry_t pv; struct pv_chunk *pc; - vm_page_t m, free = NULL; + vm_page_t m; PMAP_LOCK_ASSERT(pmap, MA_OWNED); mtx_lock(&pv_lock); @@ -2106,7 +2088,7 @@ retry: } PV_STAT(pv_entry_spare--); mtx_unlock(&pv_lock); - goto done; + return (pv); } } /* No free items, allocate another chunk */ @@ -2118,8 +2100,7 @@ retry: pv_entry_count--; PV_STAT(pc_chunk_tryfail++); mtx_unlock(&pv_lock); - pv = NULL; - goto done; + return (NULL); } /* * Reclaim pv entries: At first, destroy mappings to inactive @@ -2134,7 +2115,7 @@ retry: pq = &vm_page_queues[PQ_ACTIVE]; } else panic("get_pv_entry: increase vm.pmap.shpgperproc"); - pmap_collect(pmap, pq, &free); + pmap_collect(pmap, pq); goto retry; } PV_STAT(pc_chunk_count++); @@ -2150,8 +2131,6 @@ retry: TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list); PV_STAT(pv_entry_spare += _NPCPV - 1); mtx_unlock(&pv_lock); -done: - pmap_free_zero_pages(free); return (pv); } @@ -2756,9 +2735,7 @@ pmap_remove_all(vm_page_t m) PMAP_UNLOCK(pmap); } vm_page_flag_clear(m, PG_WRITEABLE); - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); } /* @@ -3253,9 +3230,7 @@ validate: PA_UNLOCK(pa); PMAP_UNLOCK(pmap); - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); } /* @@ -3648,6 +3623,7 @@ out: if (pa) PA_UNLOCK(pa); PMAP_UNLOCK(pmap); + pmap_free_zero_pages(free); } @@ -4137,7 +4113,6 @@ pmap_is_prefaultable(pmap_t pmap, vm_off return (rv); } - /* * Clear the write and modified bits in each of the given page's mappings. */ @@ -4167,9 +4142,7 @@ pmap_remove_write(vm_page_t m) PMAP_UNLOCK(pmap); } - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4250,9 +4223,7 @@ pmap_ts_referenced(vm_page_t m) } PMAP_UNLOCK(pmap); } - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); if ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pvf = pv; do { @@ -4327,10 +4298,7 @@ pmap_clear_modify(vm_page_t m) } PMAP_UNLOCK(pmap); } - - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -4388,9 +4356,7 @@ pmap_clear_reference(vm_page_t m) } PMAP_UNLOCK(pmap); } - mtx_lock(&pv_lock); - pmap_add_delayed_free_list(free, &global_free, FALSE); - mtx_unlock(&pv_lock); + pmap_free_zero_pages(free); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 05:29: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 A6DF31065670; Fri, 26 Jun 2009 05:29: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 95E998FC18; Fri, 26 Jun 2009 05:29: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 n5Q5TeMD075945; Fri, 26 Jun 2009 05:29:40 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q5TeMW075943; Fri, 26 Jun 2009 05:29:40 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260529.n5Q5TeMW075943@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 05:29: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: r195037 - user/kmacy/releng_7_2_fcs/sys/kern 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, 26 Jun 2009 05:29:40 -0000 Author: kmacy Date: Fri Jun 26 05:29:40 2009 New Revision: 195037 URL: http://svn.freebsd.org/changeset/base/195037 Log: fix expected lock ordering to match actual convention Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Fri Jun 26 05:09:00 2009 (r195036) +++ user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Fri Jun 26 05:29:40 2009 (r195037) @@ -607,8 +607,8 @@ static struct witness_order_list_entry o * VM * */ - { "vm page queue mutex", &lock_class_mtx_sleep }, { "page lock", &lock_class_mtx_sleep }, + { "vm page queue mutex", &lock_class_mtx_sleep }, { "pmap", &lock_class_mtx_sleep }, { NULL, NULL }, /* From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 05:41:02 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 DF486106564A; Fri, 26 Jun 2009 05:41:02 +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 CE5818FC08; Fri, 26 Jun 2009 05:41:02 +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 n5Q5f2MG076206; Fri, 26 Jun 2009 05:41:02 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q5f2ls076204; Fri, 26 Jun 2009 05:41:02 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260541.n5Q5f2ls076204@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 05:41:02 +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: r195038 - user/kmacy/releng_7_2_fcs/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, 26 Jun 2009 05:41:03 -0000 Author: kmacy Date: Fri Jun 26 05:41:02 2009 New Revision: 195038 URL: http://svn.freebsd.org/changeset/base/195038 Log: fix lock ordering and avoid duplicate acquisition of page queue lock Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Fri Jun 26 05:29:40 2009 (r195037) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Fri Jun 26 05:41:02 2009 (r195038) @@ -743,19 +743,18 @@ vm_pageout_scan(int pass) maxlaunder = 1; if (pass) maxlaunder = 10000; + vm_page_lock_queues(); rescan0: addl_page_shortage = addl_page_shortage_init; maxscan = cnt.v_inactive_count; - vm_page_lock_queues(); for (m = TAILQ_FIRST(&vm_page_queues[PQ_INACTIVE].pl); m != NULL && maxscan-- > 0 && page_shortage > 0; m = next) { cnt.v_pdpages++; - if (VM_PAGE_GETQUEUE(m) != PQ_INACTIVE) { + if (VM_PAGE_GETQUEUE(m) != PQ_INACTIVE) goto rescan0; - } next = TAILQ_NEXT(m, pageq); object = m->object; @@ -987,8 +986,8 @@ rescan0: goto unlock_and_continue; } VM_OBJECT_LOCK(object); - vm_page_lock_queues(); vm_page_lock(m); + vm_page_lock_queues(); /* * The page might have been moved to another * queue during potential blocking in vget() From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 06:11: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 2E3F61065672; Fri, 26 Jun 2009 06:11: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 1D2258FC12; Fri, 26 Jun 2009 06:11: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 n5Q6Be7i076921; Fri, 26 Jun 2009 06:11:40 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q6Bd6R076919; Fri, 26 Jun 2009 06:11:39 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260611.n5Q6Bd6R076919@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 06:11:39 +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: r195040 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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, 26 Jun 2009 06:11:40 -0000 Author: kmacy Date: Fri Jun 26 06:11:39 2009 New Revision: 195040 URL: http://svn.freebsd.org/changeset/base/195040 Log: hold page queue lock across freeing of all pages in the list Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 05:58:52 2009 (r195039) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 06:11:39 2009 (r195040) @@ -1248,12 +1248,16 @@ pmap_free_zero_pages(vm_page_t free) { vm_page_t m; + if (free == NULL) + return; + vm_page_lock_queues(); while (free != NULL) { m = free; free = m->right; /* Preserve the page's PG_ZERO setting. */ - vm_page_free_toq(m); + vm_page_free_toq_locked(m); } + vm_page_unlock_queues(); } /* @@ -1951,7 +1955,7 @@ pmap_collect(pmap_t locked_pmap, struct pt_entry_t *pte, tpte; pv_entry_t next_pv, pv; vm_offset_t va; - vm_page_t m, free; + vm_page_t m, free = NULL; vm_page_lock_queues(); TAILQ_FOREACH(m, &vpq->pl, pageq) { @@ -1981,7 +1985,6 @@ pmap_collect(pmap_t locked_pmap, struct vm_page_flag_set(m, PG_REFERENCED); if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - free = NULL; pmap_unuse_pt(pmap, va, *pde, &free); pmap_invalidate_page(pmap, va); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); @@ -1993,10 +1996,10 @@ pmap_collect(pmap_t locked_pmap, struct free_pv_entry(pmap, pv, &free); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); - pmap_free_zero_pages(free); } vm_page_unlock(m); } + pmap_free_zero_pages(free); vm_page_unlock_queues(); } From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 06:38:50 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 00F171065673; Fri, 26 Jun 2009 06:38:50 +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 E43FE8FC19; Fri, 26 Jun 2009 06:38:49 +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 n5Q6cnXI077544; Fri, 26 Jun 2009 06:38:49 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q6cntE077542; Fri, 26 Jun 2009 06:38:49 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260638.n5Q6cntE077542@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 06:38:49 +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: r195041 - user/kmacy/releng_7_2_fcs/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, 26 Jun 2009 06:38:50 -0000 Author: kmacy Date: Fri Jun 26 06:38:49 2009 New Revision: 195041 URL: http://svn.freebsd.org/changeset/base/195041 Log: don't acquire global page queues lock in _vm_pageq_remove unless queue != PQ_NONE Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_page.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_page.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_page.c Fri Jun 26 06:11:39 2009 (r195040) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_page.c Fri Jun 26 06:38:49 2009 (r195041) @@ -1259,9 +1259,9 @@ vm_page_requeue_locked(vm_page_t m) int queue; struct vpgqueues *vpq; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); queue = VM_PAGE_GETQUEUE(m); if (queue != PQ_NONE) { + mtx_assert(&vm_page_queue_mtx, MA_OWNED); vpq = &vm_page_queues[queue]; TAILQ_REMOVE(&vpq->pl, m, pageq); TAILQ_INSERT_TAIL(&vpq->pl, m, pageq); @@ -1290,18 +1290,17 @@ _vm_pageq_remove(vm_page_t m, int locked int queue; struct vpgqueues *pq; - if (locked == 0) - vm_page_lock_queues(); - queue = VM_PAGE_GETQUEUE(m); if (queue != PQ_NONE) { + if (locked == 0) + vm_page_lock_queues(); VM_PAGE_SETQUEUE2(m, PQ_NONE); pq = &vm_page_queues[queue]; TAILQ_REMOVE(&pq->pl, m, pageq); (*pq->cnt)--; + if (locked == 0) + vm_page_unlock_queues(); } - if (locked == 0) - vm_page_unlock_queues(); } void From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 06:40:12 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 9415C1065673; Fri, 26 Jun 2009 06:40:12 +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 830288FC18; Fri, 26 Jun 2009 06:40:12 +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 n5Q6eCLf077615; Fri, 26 Jun 2009 06:40:12 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5Q6eCJp077613; Fri, 26 Jun 2009 06:40:12 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906260640.n5Q6eCJp077613@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 06:40:12 +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: r195042 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64 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, 26 Jun 2009 06:40:12 -0000 Author: kmacy Date: Fri Jun 26 06:40:12 2009 New Revision: 195042 URL: http://svn.freebsd.org/changeset/base/195042 Log: alc points out that page table pages are unmanaged - we don't need the global page queue mutex Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 06:38:49 2009 (r195041) +++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Fri Jun 26 06:40:12 2009 (r195042) @@ -1248,16 +1248,12 @@ pmap_free_zero_pages(vm_page_t free) { vm_page_t m; - if (free == NULL) - return; - vm_page_lock_queues(); while (free != NULL) { m = free; free = m->right; /* Preserve the page's PG_ZERO setting. */ - vm_page_free_toq_locked(m); + vm_page_free_toq(m); } - vm_page_unlock_queues(); } /* @@ -1999,8 +1995,8 @@ pmap_collect(pmap_t locked_pmap, struct } vm_page_unlock(m); } - pmap_free_zero_pages(free); vm_page_unlock_queues(); + pmap_free_zero_pages(free); } From owner-svn-src-user@FreeBSD.ORG Fri Jun 26 18:40:30 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 5367E1065670; Fri, 26 Jun 2009 18:40:30 +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 428038FC16; Fri, 26 Jun 2009 18:40:30 +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 n5QIeUOl094691; Fri, 26 Jun 2009 18:40:30 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5QIeUQK094689; Fri, 26 Jun 2009 18:40:30 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906261840.n5QIeUQK094689@svn.freebsd.org> From: Kip Macy Date: Fri, 26 Jun 2009 18:40:30 +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: r195069 - user/kmacy/releng_7_2_fcs/sys/kern 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, 26 Jun 2009 18:40:30 -0000 Author: kmacy Date: Fri Jun 26 18:40:29 2009 New Revision: 195069 URL: http://svn.freebsd.org/changeset/base/195069 Log: increase FULLGRAPH_SBUF_SIZE 4x Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Fri Jun 26 18:38:21 2009 (r195068) +++ user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Fri Jun 26 18:40:29 2009 (r195069) @@ -155,7 +155,7 @@ __FBSDID("$FreeBSD$"); #define BADSTACK_SBUF_SIZE (256 * WITNESS_COUNT) #define CYCLEGRAPH_SBUF_SIZE 8192 -#define FULLGRAPH_SBUF_SIZE 32768 +#define FULLGRAPH_SBUF_SIZE 131072 /* * These flags go in the witness relationship matrix and describe the From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 00:38:38 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 D67011065672; Sat, 27 Jun 2009 00:38:38 +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 C52658FC16; Sat, 27 Jun 2009 00:38:38 +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 n5R0ccKu020787; Sat, 27 Jun 2009 00:38:38 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R0ccog020785; Sat, 27 Jun 2009 00:38:38 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270038.n5R0ccog020785@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 00:38:38 +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: r195084 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 00:38:39 -0000 Author: kmacy Date: Sat Jun 27 00:38:38 2009 New Revision: 195084 URL: http://svn.freebsd.org/changeset/base/195084 Log: make sure that we aren't calling RT_REMREF when the refcount will go to zero Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.h Fri Jun 26 22:58:22 2009 (r195083) +++ user/kmacy/releng_7_2_fcs/sys/net/route.h Sat Jun 27 00:38:38 2009 (r195084) @@ -336,7 +336,7 @@ struct rt_addrinfo { #define RT_REMREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \ - KASSERT((_rt)->rt_refcnt > 0, \ + KASSERT((_rt)->rt_refcnt > 1, \ ("invalid refcnt %d at %s:%d", (_rt)->rt_refcnt, \ __FILE__, __LINE__)); \ (_rt)->rt_refcnt--; \ From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 00:40:56 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 17225106564A; Sat, 27 Jun 2009 00:40:56 +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 05E308FC12; Sat, 27 Jun 2009 00:40:56 +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 n5R0etVj021011; Sat, 27 Jun 2009 00:40:55 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R0et5j021009; Sat, 27 Jun 2009 00:40:55 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270040.n5R0et5j021009@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 00:40:55 +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: r195085 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 00:40:56 -0000 Author: kmacy Date: Sat Jun 27 00:40:55 2009 New Revision: 195085 URL: http://svn.freebsd.org/changeset/base/195085 Log: strengthen reference count checks Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.h Sat Jun 27 00:38:38 2009 (r195084) +++ user/kmacy/releng_7_2_fcs/sys/net/route.h Sat Jun 27 00:40:55 2009 (r195085) @@ -329,7 +329,7 @@ struct rt_addrinfo { #define RT_ADDREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \ - KASSERT((_rt)->rt_refcnt >= 0, \ + KASSERT((_rt)->rt_refcnt >= 1, \ ("negative refcnt %d", (_rt)->rt_refcnt)); \ (_rt)->rt_refcnt++; \ } while (0) @@ -344,7 +344,7 @@ struct rt_addrinfo { #define RTFREE_LOCKED(_rt) do { \ RT_LOCK_ASSERT(_rt); \ - if ((_rt)->rt_refcnt <= 1) { \ + if ((_rt)->rt_refcnt == 1) { \ rtfree(_rt); \ } else { \ RT_REMREF(_rt); \ From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 00:52:16 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 374311065670; Sat, 27 Jun 2009 00:52:16 +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 25E628FC08; Sat, 27 Jun 2009 00:52:16 +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 n5R0qFJg021953; Sat, 27 Jun 2009 00:52:15 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R0qFWp021951; Sat, 27 Jun 2009 00:52:15 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270052.n5R0qFWp021951@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 00:52:15 +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: r195086 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 00:52:16 -0000 Author: kmacy Date: Sat Jun 27 00:52:15 2009 New Revision: 195086 URL: http://svn.freebsd.org/changeset/base/195086 Log: RT_ADDREF may be called on an rtentry referenced only from the tree Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h Modified: user/kmacy/releng_7_2_fcs/sys/net/route.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.h Sat Jun 27 00:40:55 2009 (r195085) +++ user/kmacy/releng_7_2_fcs/sys/net/route.h Sat Jun 27 00:52:15 2009 (r195086) @@ -329,7 +329,7 @@ struct rt_addrinfo { #define RT_ADDREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \ - KASSERT((_rt)->rt_refcnt >= 1, \ + KASSERT((_rt)->rt_refcnt >= 0, \ ("negative refcnt %d", (_rt)->rt_refcnt)); \ (_rt)->rt_refcnt++; \ } while (0) From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 01:01:07 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 308BF106564A; Sat, 27 Jun 2009 01:01:07 +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 1EF458FC0C; Sat, 27 Jun 2009 01:01:07 +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 n5R117gg022782; Sat, 27 Jun 2009 01:01:07 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R116ZA022780; Sat, 27 Jun 2009 01:01:07 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270101.n5R116ZA022780@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 01:01:06 +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: r195088 - user/kmacy/releng_7_2_fcs/sys/netinet6 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: Sat, 27 Jun 2009 01:01:07 -0000 Author: kmacy Date: Sat Jun 27 01:01:06 2009 New Revision: 195088 URL: http://svn.freebsd.org/changeset/base/195088 Log: don't call RT_REMREF when we may hold the only reference Modified: user/kmacy/releng_7_2_fcs/sys/netinet6/nd6_rtr.c Modified: user/kmacy/releng_7_2_fcs/sys/netinet6/nd6_rtr.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/netinet6/nd6_rtr.c Sat Jun 27 00:52:28 2009 (r195087) +++ user/kmacy/releng_7_2_fcs/sys/netinet6/nd6_rtr.c Sat Jun 27 01:01:06 2009 (r195088) @@ -1650,11 +1650,8 @@ nd6_prefix_onlink(struct nd_prefix *pr) ip6_sprintf(ip6bufm, &mask6.sin6_addr), rtflags, error)); } - if (rt != NULL) { - RT_LOCK(rt); - RT_REMREF(rt); - RT_UNLOCK(rt); - } + if (rt != NULL) + RTFREE(rt); return (error); } From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 04:56:35 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 C7863106564A; Sat, 27 Jun 2009 04:56:35 +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 B64638FC17; Sat, 27 Jun 2009 04:56:35 +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 n5R4uZfj042016; Sat, 27 Jun 2009 04:56:35 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R4uZMT042014; Sat, 27 Jun 2009 04:56:35 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270456.n5R4uZMT042014@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 04:56:35 +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: r195090 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 04:56:36 -0000 Author: kmacy Date: Sat Jun 27 04:56:35 2009 New Revision: 195090 URL: http://svn.freebsd.org/changeset/base/195090 Log: replace tree internal RT_REMREF with KASSERT + explicit assignment Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c Modified: user/kmacy/releng_7_2_fcs/sys/net/route.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/route.c Sat Jun 27 02:20:31 2009 (r195089) +++ user/kmacy/releng_7_2_fcs/sys/net/route.c Sat Jun 27 04:56:35 2009 (r195090) @@ -1343,7 +1343,9 @@ rtinit1(struct ifaddr *ifa, int cmd, int * We just wanted to add it.. * we don't actually need a reference. */ - RT_REMREF(rt); + KASSERT(rt->rt_refcnt == 1, + ("invalid refcnt %d", rt->rt_refcnt)); + rt->rt_refcnt = 0; } RT_UNLOCK(rt); } From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 05:05:44 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 486921065673; Sat, 27 Jun 2009 05:05:44 +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 269658FC08; Sat, 27 Jun 2009 05:05:44 +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 n5R55isl042881; Sat, 27 Jun 2009 05:05:44 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R55iH1042879; Sat, 27 Jun 2009 05:05:44 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270505.n5R55iH1042879@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 05:05:44 +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: r195091 - user/kmacy/releng_7_2_fcs/sys/netinet 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: Sat, 27 Jun 2009 05:05:44 -0000 Author: kmacy Date: Sat Jun 27 05:05:43 2009 New Revision: 195091 URL: http://svn.freebsd.org/changeset/base/195091 Log: add explicit refcount check in place of RT_REMREF Modified: user/kmacy/releng_7_2_fcs/sys/netinet/in.c Modified: user/kmacy/releng_7_2_fcs/sys/netinet/in.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/netinet/in.c Sat Jun 27 04:56:35 2009 (r195090) +++ user/kmacy/releng_7_2_fcs/sys/netinet/in.c Sat Jun 27 05:05:43 2009 (r195091) @@ -842,7 +842,9 @@ in_ifinit(struct ifnet *ifp, struct in_i rt->rt_ifp->if_type; ((struct sockaddr_dl *)rt->rt_gateway)->sdl_index = rt->rt_ifp->if_index; - RT_REMREF(rt); + KASSERT(rt->rt_refcnt == 1, + ("invalid refcnt %d", rt->rt_refcnt)); + rt->rt_refcnt = 0; RT_UNLOCK(rt); } else if (error != 0) log(LOG_INFO, "in_ifinit: insertion failed\n"); From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 05:13:53 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 C59441065670; Sat, 27 Jun 2009 05:13:52 +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 B44DF8FC08; Sat, 27 Jun 2009 05:13:52 +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 n5R5DqP9043576; Sat, 27 Jun 2009 05:13:52 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R5Dqm1043574; Sat, 27 Jun 2009 05:13:52 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270513.n5R5Dqm1043574@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 05:13:52 +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: r195092 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 05:13:53 -0000 Author: kmacy Date: Sat Jun 27 05:13:52 2009 New Revision: 195092 URL: http://svn.freebsd.org/changeset/base/195092 Log: replace generic RT_REMREF Modified: user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Modified: user/kmacy/releng_7_2_fcs/sys/net/rtsock.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Sat Jun 27 05:05:43 2009 (r195091) +++ user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Sat Jun 27 05:13:52 2009 (r195092) @@ -509,7 +509,9 @@ route_output(struct mbuf *m, struct sock rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx, &saved_nrt->rt_rmx); rtm->rtm_index = saved_nrt->rt_ifp->if_index; - RT_REMREF(saved_nrt); + KASSERT(rt->rt_refcnt == 1, + ("invalid refcnt %d", rt->rt_refcnt)); + rt->rt_refcnt = 0; RT_UNLOCK(saved_nrt); } break; From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 05:27:35 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 2ABB3106566C; Sat, 27 Jun 2009 05:27:35 +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 199928FC0A; Sat, 27 Jun 2009 05:27:35 +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 n5R5RYis044735; Sat, 27 Jun 2009 05:27:34 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R5RYb8044733; Sat, 27 Jun 2009 05:27:34 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270527.n5R5RYb8044733@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 05:27:34 +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: r195093 - user/kmacy/releng_7_2_fcs/sys/net 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: Sat, 27 Jun 2009 05:27:35 -0000 Author: kmacy Date: Sat Jun 27 05:27:34 2009 New Revision: 195093 URL: http://svn.freebsd.org/changeset/base/195093 Log: fix reference to saved_nrt Modified: user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Modified: user/kmacy/releng_7_2_fcs/sys/net/rtsock.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Sat Jun 27 05:13:52 2009 (r195092) +++ user/kmacy/releng_7_2_fcs/sys/net/rtsock.c Sat Jun 27 05:27:34 2009 (r195093) @@ -509,9 +509,9 @@ route_output(struct mbuf *m, struct sock rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx, &saved_nrt->rt_rmx); rtm->rtm_index = saved_nrt->rt_ifp->if_index; - KASSERT(rt->rt_refcnt == 1, - ("invalid refcnt %d", rt->rt_refcnt)); - rt->rt_refcnt = 0; + KASSERT(saved_nrt->rt_refcnt == 1, + ("invalid refcnt %d", saved_nrt->rt_refcnt)); + saved_nrt->rt_refcnt = 0; RT_UNLOCK(saved_nrt); } break; From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 06:05:10 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 89B4B106566C; Sat, 27 Jun 2009 06:05:10 +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 78C228FC19; Sat, 27 Jun 2009 06:05:10 +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 n5R65AM1047782; Sat, 27 Jun 2009 06:05:10 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R65ArM047780; Sat, 27 Jun 2009 06:05:10 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270605.n5R65ArM047780@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 06:05:10 +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: r195094 - user/kmacy/releng_7_2_fcs/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: Sat, 27 Jun 2009 06:05:10 -0000 Author: kmacy Date: Sat Jun 27 06:05:10 2009 New Revision: 195094 URL: http://svn.freebsd.org/changeset/base/195094 Log: verify that the page has a corresponding object before trying to grab the object lock for it Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 05:27:34 2009 (r195093) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 06:05:10 2009 (r195094) @@ -1089,7 +1089,7 @@ unlock_and_continue: next = TAILQ_NEXT(m, pageq); object = m->object; - if ((m->flags & PG_MARKER) != 0) { + if ((object == NULL) || (m->flags & PG_MARKER) != 0) { m = next; continue; } From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 06:37:09 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 37F0E1065673; Sat, 27 Jun 2009 06:37:09 +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 26B948FC14; Sat, 27 Jun 2009 06:37:09 +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 n5R6b8Vt050355; Sat, 27 Jun 2009 06:37:08 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5R6b8rC050353; Sat, 27 Jun 2009 06:37:08 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906270637.n5R6b8rC050353@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 06:37:08 +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: r195095 - user/kmacy/releng_7_2_fcs/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: Sat, 27 Jun 2009 06:37:09 -0000 Author: kmacy Date: Sat Jun 27 06:37:08 2009 New Revision: 195095 URL: http://svn.freebsd.org/changeset/base/195095 Log: add note that change is a band-aid Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 06:05:10 2009 (r195094) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 06:37:08 2009 (r195095) @@ -1089,6 +1089,15 @@ unlock_and_continue: next = TAILQ_NEXT(m, pageq); object = m->object; + + /* + * XXX note that the object == NULL check is a band-aid + * that narrows the race - but really we need to acquire the + * page lock before checking the validity of the object pointer + * this in turn requires that we trylock the page before + * trylocking the object which in turn complicates error + * handling slightly + */ if ((object == NULL) || (m->flags & PG_MARKER) != 0) { m = next; continue; From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 19:57:55 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 CE51D1065672; Sat, 27 Jun 2009 19:57:55 +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 BD39D8FC14; Sat, 27 Jun 2009 19:57:55 +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 n5RJvtMl086718; Sat, 27 Jun 2009 19:57:55 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RJvtIS086716; Sat, 27 Jun 2009 19:57:55 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906271957.n5RJvtIS086716@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 19:57:55 +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: r195113 - user/kmacy/releng_7_2_fcs/sys/sys 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: Sat, 27 Jun 2009 19:57:56 -0000 Author: kmacy Date: Sat Jun 27 19:57:55 2009 New Revision: 195113 URL: http://svn.freebsd.org/changeset/base/195113 Log: bump version to trigger new btxld install Modified: user/kmacy/releng_7_2_fcs/sys/sys/param.h Modified: user/kmacy/releng_7_2_fcs/sys/sys/param.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/sys/param.h Sat Jun 27 17:01:34 2009 (r195112) +++ user/kmacy/releng_7_2_fcs/sys/sys/param.h Sat Jun 27 19:57:55 2009 (r195113) @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 702000 /* Master, propagated to newvers */ +#define __FreeBSD_version 702001 /* Master, propagated to newvers */ #ifndef LOCORE #include From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 20:26:16 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 EA1A2106567A; Sat, 27 Jun 2009 20:26:16 +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 BE1BF8FC24; Sat, 27 Jun 2009 20:26:16 +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 n5RKQG5n087325; Sat, 27 Jun 2009 20:26:16 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RKQGbs087323; Sat, 27 Jun 2009 20:26:16 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272026.n5RKQGbs087323@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 20:26:16 +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: r195115 - user/kmacy/releng_7_2_fcs/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: Sat, 27 Jun 2009 20:26:17 -0000 Author: kmacy Date: Sat Jun 27 20:26:16 2009 New Revision: 195115 URL: http://svn.freebsd.org/changeset/base/195115 Log: The page object association is now protected by the page lock and not the global page queue lock, thus we need to acquire the page lock before validating the object and acquiring the object lock. Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 20:06:56 2009 (r195114) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 20:26:16 2009 (r195115) @@ -254,6 +254,8 @@ vm_pageout_fallback_object_lock(vm_page_ TAILQ_INSERT_AFTER(&vm_page_queues[queue].pl, m, &marker, pageq); vm_page_unlock_queues(); + vm_page_unlock(m); + vm_page_lock(m); VM_OBJECT_LOCK(object); vm_page_lock_queues(); @@ -757,7 +759,6 @@ rescan0: goto rescan0; next = TAILQ_NEXT(m, pageq); - object = m->object; /* * skip marker pages @@ -774,6 +775,10 @@ rescan0: continue; } + if (vm_page_trylock(m) == 0 || (object = m->object) == NULL) { + addl_page_shortage++; + continue; + } /* * Don't mess with busy pages, keep in the front of the * queue, most likely are being paged out. @@ -781,12 +786,7 @@ rescan0: if (!VM_OBJECT_TRYLOCK(object) && !vm_pageout_fallback_object_lock(m, &next)) { VM_OBJECT_UNLOCK(object); - addl_page_shortage++; - continue; - } - vm_page_lock_assert(m, MA_NOTOWNED); - if (vm_page_trylock(m) == 0) { - VM_OBJECT_UNLOCK(object); + vm_page_unlock(m); addl_page_shortage++; continue; } @@ -1088,7 +1088,6 @@ unlock_and_continue: ("vm_pageout_scan: page %p isn't active", m)); next = TAILQ_NEXT(m, pageq); - object = m->object; /* * XXX note that the object == NULL check is a band-aid @@ -1098,19 +1097,19 @@ unlock_and_continue: * trylocking the object which in turn complicates error * handling slightly */ - if ((object == NULL) || (m->flags & PG_MARKER) != 0) { + if ((m->flags & PG_MARKER) != 0) { m = next; continue; } - if (!VM_OBJECT_TRYLOCK(object) && - !vm_pageout_fallback_object_lock(m, &next)) { - VM_OBJECT_UNLOCK(object); + + if (vm_page_trylock(m) == 0 || (object = m->object) == NULL) { m = next; continue; } - - if (vm_page_trylock(m) == 0) { + if (!VM_OBJECT_TRYLOCK(object) && + !vm_pageout_fallback_object_lock(m, &next)) { VM_OBJECT_UNLOCK(object); + vm_page_unlock(m); m = next; continue; } From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 20:48:01 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 41A0F1065680; Sat, 27 Jun 2009 20:48:01 +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 3062D8FC12; Sat, 27 Jun 2009 20:48:01 +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 n5RKlx4X087797; Sat, 27 Jun 2009 20:47:59 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RKlx6d087795; Sat, 27 Jun 2009 20:47:59 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272047.n5RKlx6d087795@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 20:47:59 +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: r195116 - user/kmacy/releng_7_2_fcs/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: Sat, 27 Jun 2009 20:48:01 -0000 Author: kmacy Date: Sat Jun 27 20:47:59 2009 New Revision: 195116 URL: http://svn.freebsd.org/changeset/base/195116 Log: - make page trylock acquisition style the same as object trylock - fix missed re-ordering of page and object lock Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 20:26:16 2009 (r195115) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 20:47:59 2009 (r195116) @@ -775,7 +775,7 @@ rescan0: continue; } - if (vm_page_trylock(m) == 0 || (object = m->object) == NULL) { + if (!vm_page_trylock(m) || (object = m->object) == NULL) { addl_page_shortage++; continue; } @@ -1102,7 +1102,7 @@ unlock_and_continue: continue; } - if (vm_page_trylock(m) == 0 || (object = m->object) == NULL) { + if (!vm_page_trylock(m) || (object = m->object) == NULL) { m = next; continue; } @@ -1344,15 +1344,15 @@ vm_pageout_page_stats() m = next; continue; } - if (!VM_OBJECT_TRYLOCK(object) && - !vm_pageout_fallback_object_lock(m, &next)) { - VM_OBJECT_UNLOCK(object); + vm_page_lock_assert(m, MA_NOTOWNED); + if (!vm_page_trylock(m) || (object = m->object) == NULL) { m = next; continue; } - vm_page_lock_assert(m, MA_NOTOWNED); - if (vm_page_trylock(m) == 0) { + if (!VM_OBJECT_TRYLOCK(object) && + !vm_pageout_fallback_object_lock(m, &next)) { VM_OBJECT_UNLOCK(object); + vm_page_unlock(m); m = next; continue; } From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 20:53:08 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 06F041065672; Sat, 27 Jun 2009 20:53:08 +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 E95568FC14; Sat, 27 Jun 2009 20:53:07 +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 n5RKr7ag087921; Sat, 27 Jun 2009 20:53:07 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RKr7Em087919; Sat, 27 Jun 2009 20:53:07 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272053.n5RKr7Em087919@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 20:53:07 +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: r195117 - user/kmacy/releng_7_2_fcs/sys/netinet 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: Sat, 27 Jun 2009 20:53:08 -0000 Author: kmacy Date: Sat Jun 27 20:53:07 2009 New Revision: 195117 URL: http://svn.freebsd.org/changeset/base/195117 Log: don't cache per-packet balanced routes Modified: user/kmacy/releng_7_2_fcs/sys/netinet/in_pcb.c Modified: user/kmacy/releng_7_2_fcs/sys/netinet/in_pcb.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/netinet/in_pcb.c Sat Jun 27 20:47:59 2009 (r195116) +++ user/kmacy/releng_7_2_fcs/sys/netinet/in_pcb.c Sat Jun 27 20:53:07 2009 (r195117) @@ -537,7 +537,11 @@ in_pcbrtalloc(struct inpcb *inp, in_addr } rt = sro->ro_rt; - if (rt == NULL) + /* + * Don't cache route in pcb if this is a per-packet + * route + */ + if (rt == NULL || (rt->rt_flags & RTF_PPACKET)) return; inp->inp_rt = rt; From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 20:55:07 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 38CCE106564A; Sat, 27 Jun 2009 20:55:07 +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 26FF78FC3C; Sat, 27 Jun 2009 20:55:06 +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 n5RKt6be088013; Sat, 27 Jun 2009 20:55:06 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RKt6nY088010; Sat, 27 Jun 2009 20:55:06 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272055.n5RKt6nY088010@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 20:55:06 +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: r195118 - in user/kmacy/releng_7_2_fcs/sys/modules: . netgraph 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: Sat, 27 Jun 2009 20:55:07 -0000 Author: kmacy Date: Sat Jun 27 20:55:06 2009 New Revision: 195118 URL: http://svn.freebsd.org/changeset/base/195118 Log: don't compile net80211 and other modules broken by partial backport of HEAD networking Modified: user/kmacy/releng_7_2_fcs/sys/modules/Makefile user/kmacy/releng_7_2_fcs/sys/modules/netgraph/Makefile Modified: user/kmacy/releng_7_2_fcs/sys/modules/Makefile ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/modules/Makefile Sat Jun 27 20:53:07 2009 (r195117) +++ user/kmacy/releng_7_2_fcs/sys/modules/Makefile Sat Jun 27 20:55:06 2009 (r195118) @@ -14,12 +14,10 @@ SUBDIR= ${_3dfx} \ aha \ ${_ahb} \ ${_aic} \ - aic7xxx \ aio \ ${_amd} \ ale \ amr \ - ${_an} \ ${_aout} \ ${_apm} \ ${_ar} \ @@ -28,7 +26,6 @@ SUBDIR= ${_3dfx} \ ${_arl} \ ${_asr} \ ata \ - ath \ aue \ ${_auxio} \ ${_awi} \ @@ -96,7 +93,6 @@ SUBDIR= ${_3dfx} \ gem \ geom \ ${_glxsb} \ - hatm \ hifn \ hme \ ${_hptiop} \ @@ -116,9 +112,6 @@ SUBDIR= ${_3dfx} \ if_gif \ if_gre \ if_lagg \ - ${_if_ndis} \ - if_ppp \ - if_sl \ if_stf \ if_tap \ if_tun \ @@ -133,12 +126,9 @@ SUBDIR= ${_3dfx} \ ip_mroute_mod \ ${_ipmi} \ ${_ips} \ - ${_ipw} \ ${_ipwfw} \ - iscsi \ isp \ ispfw \ - ${_iwi} \ ${_iwifw} \ ${_ixgb} \ jme \ @@ -169,7 +159,6 @@ SUBDIR= ${_3dfx} \ mac_seeotheruids \ mac_stub \ mac_test \ - malo \ mcd \ md \ mem \ @@ -184,12 +173,10 @@ SUBDIR= ${_3dfx} \ msdosfs \ msdosfs_iconv \ ${_mse} \ - msk \ mxge \ my \ ${_ncp} \ ${_ncv} \ - ${_ndis} \ netgraph \ ${_nfe} \ nfsclient \ @@ -226,18 +213,15 @@ SUBDIR= ${_3dfx} \ pseudofs \ ${_pst} \ puc \ - ral \ ${_random} \ ${_ray} \ rc \ rc4 \ - ${_rdma} \ re \ reiserfs \ rl \ rp \ rue \ - rum \ ${_s3} \ ${_safe} \ ${_sbni} \ @@ -250,7 +234,6 @@ SUBDIR= ${_3dfx} \ sf \ ${_sio} \ sis \ - sk \ ${_smbfs} \ sn \ ${_snc} \ @@ -301,7 +284,6 @@ SUBDIR= ${_3dfx} \ ums \ unionfs \ uplcom \ - ural \ urio \ usb \ uscanner \ @@ -316,24 +298,52 @@ SUBDIR= ${_3dfx} \ vr \ vx \ wb \ - ${_wi} \ - wlan \ - wlan_scan_ap \ - wlan_scan_sta \ - wlan_acl \ - wlan_amrr \ - wlan_ccmp \ - wlan_tkip \ - wlan_wep \ - wlan_xauth \ - ${_wpi} \ ${_wpifw} \ ${_xe} \ - xfs \ xl \ ${_zfs} \ - zlib \ - zyd + zlib + +# ddb changes +# aic7xxx \ +# xfs \ + +# wireless API changes resulting from HEAD networking backport +# ${_wpi} \ +# ${_an} \ +# ath \ +# zyd +# ural \ +# ${_wi} \ +# ${_ndis} \ +# ${_if_ndis} \ +# ${_ipw} \ +# ${_iwi} \ +# malo \ +# ral \ +# rum \ + +# wlan \ +# wlan_scan_ap \ +# wlan_scan_sta \ +# wlan_acl \ +# wlan_amrr \ +# wlan_ccmp \ +# wlan_tkip \ +# wlan_wep \ +# wlan_xauth \ + + +# EXTREF removal (not updated since 6 to use new jumbo cluster allocation) +# hatm \ +# iscsi \ +# msk \ +# sk \ + + +# arpresolve changed +# ${_rdma} \ + .if ${MACHINE_ARCH} != "powerpc" _syscons= syscons Modified: user/kmacy/releng_7_2_fcs/sys/modules/netgraph/Makefile ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/modules/netgraph/Makefile Sat Jun 27 20:53:07 2009 (r195117) +++ user/kmacy/releng_7_2_fcs/sys/modules/netgraph/Makefile Sat Jun 27 20:55:06 2009 (r195118) @@ -11,7 +11,6 @@ SUBDIR= async \ bridge \ car \ cisco \ - deflate \ device \ echo \ eiface \ @@ -31,7 +30,6 @@ SUBDIR= async \ lmi \ ${_mppc} \ nat \ - netflow \ netgraph \ one2many \ ppp \ @@ -48,11 +46,26 @@ SUBDIR= async \ tag \ tcpmss \ tee \ - tty \ UI \ vjc \ vlan + + + + +# netgraph breakage + +# zlib changes +# deflate \ + +# RTF_CLONING removal (arpv2) +# netflow \ + +# unclear +# tty \ + + .if ${MACHINE_ARCH} == "i386" _sync_ar= sync_ar _sync_sr= sync_sr From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 21:19:09 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 B726D1065673; Sat, 27 Jun 2009 21:19:09 +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 8BAC18FC1B; Sat, 27 Jun 2009 21:19:09 +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 n5RLJ9FY088521; Sat, 27 Jun 2009 21:19:09 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RLJ9Zm088520; Sat, 27 Jun 2009 21:19:09 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272119.n5RLJ9Zm088520@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 21:19:09 +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: r195119 - user/kmacy/head_ppacket 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: Sat, 27 Jun 2009 21:19:10 -0000 Author: kmacy Date: Sat Jun 27 21:19:09 2009 New Revision: 195119 URL: http://svn.freebsd.org/changeset/base/195119 Log: create HEAD branch for per-packet routing support Added: user/kmacy/head_ppacket/ (props changed) - copied from r195118, head/ From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 21:38:47 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 5C8F8106567B; Sat, 27 Jun 2009 21:38:47 +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 4A8EE8FC2D; Sat, 27 Jun 2009 21:38:47 +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 n5RLclpU089107; Sat, 27 Jun 2009 21:38:47 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RLcl1u089103; Sat, 27 Jun 2009 21:38:47 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272138.n5RLcl1u089103@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 21:38:47 +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: r195123 - in user/kmacy/head_ppacket/sys: . net 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: Sat, 27 Jun 2009 21:38:47 -0000 Author: kmacy Date: Sat Jun 27 21:38:46 2009 New Revision: 195123 URL: http://svn.freebsd.org/changeset/base/195123 Log: merge ppacket changes Modified: user/kmacy/head_ppacket/sys/ (props changed) user/kmacy/head_ppacket/sys/net/ (props changed) user/kmacy/head_ppacket/sys/net/radix_mpath.c user/kmacy/head_ppacket/sys/net/radix_mpath.h user/kmacy/head_ppacket/sys/net/route.h Modified: user/kmacy/head_ppacket/sys/net/radix_mpath.c ============================================================================== --- user/kmacy/head_ppacket/sys/net/radix_mpath.c Sat Jun 27 21:37:36 2009 (r195122) +++ user/kmacy/head_ppacket/sys/net/radix_mpath.c Sat Jun 27 21:38:46 2009 (r195123) @@ -258,8 +258,11 @@ different: return 0; } -void -rtalloc_mpath_fib(struct route *ro, uint32_t hash, u_int fibnum) +#define RT_MP_NORMAL 0 +#define RT_MP_LIST 1 + +static void +rtalloc_mpath_fib_(struct route *ro, uint32_t hash, u_int fibnum, int type) { struct radix_node *rn0, *rn; u_int32_t n; @@ -277,15 +280,19 @@ rtalloc_mpath_fib(struct route *ro, uint /* if the route does not exist or it is not multipath, don't care */ if (ro->ro_rt == NULL) return; - if (rn_mpath_next((struct radix_node *)ro->ro_rt) == NULL) { + if (rn_mpath_next((struct radix_node *)ro->ro_rt) == NULL || + ((type == RT_MP_LIST) && (ro->ro_rt->rt_flags & RTF_PPACKET))) { RT_UNLOCK(ro->ro_rt); return; } - + /* beyond here, we use rn as the master copy */ rn0 = rn = (struct radix_node *)ro->ro_rt; n = rn_mpath_count(rn0); + if (ro->ro_rt->rt_flags & RTF_PPACKET) + hash = arc4random(); + /* gw selection by Modulo-N Hash (RFC2991) XXX need improvement? */ hash += hashjitter; hash %= n; @@ -317,6 +324,21 @@ rtalloc_mpath_fib(struct route *ro, uint RT_UNLOCK(ro->ro_rt); } +void +rtalloc_mpath_fib_list(struct route *ro, uint32_t hash, u_int fibnum) +{ + + rtalloc_mpath_fib_(ro, hash, fibnum, RT_MP_LIST); +} + + +void +rtalloc_mpath_fib(struct route *ro, uint32_t hash, u_int fibnum) +{ + + rtalloc_mpath_fib_(ro, hash, fibnum, RT_MP_NORMAL); +} + extern int in6_inithead(void **head, int off); extern int in_inithead(void **head, int off); Modified: user/kmacy/head_ppacket/sys/net/radix_mpath.h ============================================================================== --- user/kmacy/head_ppacket/sys/net/radix_mpath.h Sat Jun 27 21:37:36 2009 (r195122) +++ user/kmacy/head_ppacket/sys/net/radix_mpath.h Sat Jun 27 21:38:46 2009 (r195123) @@ -51,6 +51,7 @@ struct rtentry *rt_mpath_matchgate(struc int rt_mpath_conflict(struct radix_node_head *, struct rtentry *, struct sockaddr *); void rtalloc_mpath_fib(struct route *, u_int32_t, u_int); +void rtalloc_mpath_fib_list(struct route *ro, uint32_t hash, u_int fibnum); #define rtalloc_mpath(_route, _hash) rtalloc_mpath_fib((_route), (_hash), 0) struct radix_node *rn_mpath_lookup(void *, void *, struct radix_node_head *); Modified: user/kmacy/head_ppacket/sys/net/route.h ============================================================================== --- user/kmacy/head_ppacket/sys/net/route.h Sat Jun 27 21:37:36 2009 (r195122) +++ user/kmacy/head_ppacket/sys/net/route.h Sat Jun 27 21:38:46 2009 (r195123) @@ -192,7 +192,7 @@ struct ortentry { /* 0x20000 unused, was RTF_WASCLONED */ #define RTF_PROTO3 0x40000 /* protocol specific routing flag */ -/* 0x80000 unused */ +#define RTF_PPACKET 0x80000 /* per-packet load balancing */ #define RTF_PINNED 0x100000 /* future use */ #define RTF_LOCAL 0x200000 /* route represents a local address */ #define RTF_BROADCAST 0x400000 /* route represents a bcast address */ From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 21:41:21 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 1E9A21065670; Sat, 27 Jun 2009 21:41:21 +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 0D2A88FC27; Sat, 27 Jun 2009 21:41:21 +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 n5RLfKCd089214; Sat, 27 Jun 2009 21:41:20 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RLfKNi089211; Sat, 27 Jun 2009 21:41:20 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272141.n5RLfKNi089211@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 21:41:20 +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: r195124 - user/kmacy/head_ppacket/sbin/route 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: Sat, 27 Jun 2009 21:41:21 -0000 Author: kmacy Date: Sat Jun 27 21:41:20 2009 New Revision: 195124 URL: http://svn.freebsd.org/changeset/base/195124 Log: add ppacket support to route Modified: user/kmacy/head_ppacket/sbin/route/ (props changed) user/kmacy/head_ppacket/sbin/route/keywords user/kmacy/head_ppacket/sbin/route/route.c Modified: user/kmacy/head_ppacket/sbin/route/keywords ============================================================================== --- user/kmacy/head_ppacket/sbin/route/keywords Sat Jun 27 21:38:46 2009 (r195123) +++ user/kmacy/head_ppacket/sbin/route/keywords Sat Jun 27 21:41:20 2009 (r195124) @@ -34,7 +34,9 @@ net netmask nostatic nostick +noppacket osi +ppacket prefixlen proto1 proto2 Modified: user/kmacy/head_ppacket/sbin/route/route.c ============================================================================== --- user/kmacy/head_ppacket/sbin/route/route.c Sat Jun 27 21:38:46 2009 (r195123) +++ user/kmacy/head_ppacket/sbin/route/route.c Sat Jun 27 21:41:20 2009 (r195124) @@ -644,6 +644,12 @@ newroute(argc, argv) case K_NOSTICK: flags &= ~RTF_STICKY; break; + case K_PPACKET: + flags |= RTF_PPACKET; + break; + case K_NOPPACKET: + flags &= ~RTF_PPACKET; + break; case K_IFA: if (!--argc) usage((char *)NULL); @@ -1312,7 +1318,7 @@ char metricnames[] = char routeflags[] = "\1UP\2GATEWAY\3HOST\4REJECT\5DYNAMIC\6MODIFIED\7DONE" "\012XRESOLVE\013LLINFO\014STATIC\015BLACKHOLE" -"\017PROTO2\020PROTO1\021PRCLONING\022WASCLONED\023PROTO3" +"\017PROTO2\020PROTO1\021PRCLONING\022WASCLONED\023PROTO3\024PPACKET" "\025PINNED\026LOCAL\027BROADCAST\030MULTICAST\035STICKY"; char ifnetflags[] = "\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5PTP\6b6\7RUNNING\010NOARP" From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 21:59:48 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 21B26106564A; Sat, 27 Jun 2009 21:59:48 +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 1053D8FC13; Sat, 27 Jun 2009 21:59:48 +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 n5RLxlkq089598; Sat, 27 Jun 2009 21:59:47 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RLxlYa089596; Sat, 27 Jun 2009 21:59:47 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272159.n5RLxlYa089596@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 21:59:47 +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: r195125 - user/kmacy/releng_7_2_fcs/sys/kern 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: Sat, 27 Jun 2009 21:59:48 -0000 Author: kmacy Date: Sat Jun 27 21:59:47 2009 New Revision: 195125 URL: http://svn.freebsd.org/changeset/base/195125 Log: add "vm object" to lock ordering Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Sat Jun 27 21:41:20 2009 (r195124) +++ user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Sat Jun 27 21:59:47 2009 (r195125) @@ -609,6 +609,7 @@ static struct witness_order_list_entry o */ { "page lock", &lock_class_mtx_sleep }, { "vm page queue mutex", &lock_class_mtx_sleep }, + { "vm object", &lock_class_mtx_sleep }, { "pmap", &lock_class_mtx_sleep }, { NULL, NULL }, /* From owner-svn-src-user@FreeBSD.ORG Sat Jun 27 22:23:07 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 02FC11065672; Sat, 27 Jun 2009 22:23:07 +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 E56258FC0C; Sat, 27 Jun 2009 22:23:06 +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 n5RMN6Iq090187; Sat, 27 Jun 2009 22:23:06 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5RMN6PI090184; Sat, 27 Jun 2009 22:23:06 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906272223.n5RMN6PI090184@svn.freebsd.org> From: Kip Macy Date: Sat, 27 Jun 2009 22:23:06 +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: r195126 - in user/kmacy/releng_7_2_fcs/sys: kern 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: Sat, 27 Jun 2009 22:23:07 -0000 Author: kmacy Date: Sat Jun 27 22:23:06 2009 New Revision: 195126 URL: http://svn.freebsd.org/changeset/base/195126 Log: object lock needs to held prior to page lock Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Sat Jun 27 21:59:47 2009 (r195125) +++ user/kmacy/releng_7_2_fcs/sys/kern/subr_witness.c Sat Jun 27 22:23:06 2009 (r195126) @@ -607,9 +607,9 @@ static struct witness_order_list_entry o * VM * */ + { "vm object", &lock_class_mtx_sleep }, { "page lock", &lock_class_mtx_sleep }, { "vm page queue mutex", &lock_class_mtx_sleep }, - { "vm object", &lock_class_mtx_sleep }, { "pmap", &lock_class_mtx_sleep }, { NULL, NULL }, /* Modified: user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 21:59:47 2009 (r195125) +++ user/kmacy/releng_7_2_fcs/sys/vm/vm_pageout.c Sat Jun 27 22:23:06 2009 (r195126) @@ -255,8 +255,8 @@ vm_pageout_fallback_object_lock(vm_page_ m, &marker, pageq); vm_page_unlock_queues(); vm_page_unlock(m); - vm_page_lock(m); VM_OBJECT_LOCK(object); + vm_page_lock(m); vm_page_lock_queues(); /* Page queue might have changed. */