Date: Mon, 15 Jul 2002 15:29:35 -0400 (EDT) From: John Baldwin <jhb@FreeBSD.org> To: "Alan L. Cox" <alc@imimic.com> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, Alan Cox <alc@FreeBSD.org> Subject: Re: cvs commit: src/sys/alpha/alpha pmap.c src/sys/vm vm_page.c Message-ID: <XFMail.20020715152935.jhb@FreeBSD.org> In-Reply-To: <3D331F9E.3D48367B@imimic.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <jhb@FreeBSD.org> <>< 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20020715152935.jhb>