From owner-cvs-all Mon Jul 15 12:29:40 2002 Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C26E337B400 for ; Mon, 15 Jul 2002 12:29:33 -0700 (PDT) Received: from mail.speakeasy.net (mail17.speakeasy.net [216.254.0.217]) by mx1.FreeBSD.org (Postfix) with ESMTP id E4C9343E42 for ; Mon, 15 Jul 2002 12:29:32 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Received: (qmail 14641 invoked from network); 15 Jul 2002 19:29:31 -0000 Received: from unknown (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) by mail17.speakeasy.net (qmail-ldap-1.03) with DES-CBC3-SHA encrypted SMTP for ; 15 Jul 2002 19:29:31 -0000 Received: from laptop.baldwin.cx (gw1.twc.weather.com [216.133.140.1]) by server.baldwin.cx (8.11.6/8.11.6) with ESMTP id g6FJTT049729; Mon, 15 Jul 2002 15:29:29 -0400 (EDT) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.5.2 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <3D331F9E.3D48367B@imimic.com> Date: Mon, 15 Jul 2002 15:29:35 -0400 (EDT) From: John Baldwin To: "Alan L. Cox" Subject: Re: cvs commit: src/sys/alpha/alpha pmap.c src/sys/vm vm_page.c Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, Alan Cox Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On 15-Jul-2002 Alan L. Cox wrote: > John Baldwin wrote: >> >> On 14-Jul-2002 Alan Cox wrote: >> > alc 2002/07/14 16:51:55 PDT >> > >> > Modified files: >> > sys/alpha/alpha pmap.c >> > sys/vm vm_page.c >> > Log: >> > o Lock page queue accesses by vm_page_wire() that aren't >> > within a critical section. >> > o Assert that the page queues lock is held in vm_page_wire() >> > unless an Alpha. >> >> Even in a critical section you still need the lock to ensure you >> don't read stale data and to prevent others from writing to them >> out from under you. > > Yes, I agree. > >> If the critical section in question is for pmap_growkernel(), then >> I think you can actually remove it anyways. > > It is. The solution that I have in mind is to introduce a new flag, > VM_ALLOC_WIRED, to vm_page_alloc() that requests allocation of a wired > page. Thus, the page's wired count can be initialized to 1 before the > (spin) mutex on the free queues is released. > > In addition to addressing this particular problem, VM_ALLOC_WIRED will > find general use in replacing code that looks like: > > m = vm_page_alloc(...); > ... > vm_page_lock_queues(); > vm_page_wire(m); > vm_page_unlock_queues(); > > Regards, > Alan > > P.S. The scattered placement of wired pages in the physical memory is > the chief reason why large contigmalloc()s fail on long-running > systems. This flag could be used to help address that. Sounds great! -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message