From owner-svn-src-head@FreeBSD.ORG Fri May 3 20:54:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B92CA4B0; Fri, 3 May 2013 20:54:51 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) by mx1.freebsd.org (Postfix) with ESMTP id 97B9613B9; Fri, 3 May 2013 20:54:51 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id DB876B939; Fri, 3 May 2013 16:54:50 -0400 (EDT) From: John Baldwin To: src-committers@freebsd.org Subject: Re: svn commit: r250219 - head/sys/vm Date: Fri, 3 May 2013 16:47:11 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p25; KDE/4.5.5; amd64; ; ) References: <201305031858.r43IwcAv090426@svn.freebsd.org> In-Reply-To: <201305031858.r43IwcAv090426@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201305031647.11408.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 03 May 2013 16:54:51 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 May 2013 20:54:51 -0000 On Friday, May 03, 2013 2:58:38 pm John Baldwin wrote: > Author: jhb > Date: Fri May 3 18:58:37 2013 > New Revision: 250219 > URL: http://svnweb.freebsd.org/changeset/base/250219 > > Log: > Fix two bugs in the current NUMA-aware allocation code: > - vm_phys_alloc_freelist_pages() can be called by vm_page_alloc_freelist() > to allocate a page from a specific freelist. In the NUMA case it did not > properly map the public VM_FREELIST_* constants to the correct backing > freelists, nor did it try all NUMA domains for allocations from > VM_FREELIST_DEFAULT. In practice this should never occur as only mips uses this function and the mips code doesn't support multiple domains yet. > - vm_phys_alloc_pages() did not pin the thread and each call to > vm_phys_alloc_freelist_pages() fetched the current domain to choose > which freelist to use. If a thread migrated domains during the loop > in vm_phys_alloc_pages() it could skip one of the freelists. If the > other freelists were out of memory then it is possible that > vm_phys_alloc_pages() would fail to allocate a page even though pages > were available resulting in a panic in vm_page_alloc(). I have seen multiple instances of this panic in production loads however. -- John Baldwin