Date: Sat, 18 Dec 2010 03:17:03 -0600 From: Alan Cox <alc@rice.edu> To: Joel Dahl <joel@FreeBSD.org> Cc: Alan Cox <alc@FreeBSD.org>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r216333 - head/sys/i386/i386 Message-ID: <4D0C7C0F.4000703@rice.edu> In-Reply-To: <20101218070800.GA59878@pluto.vnode.local> References: <201012092016.oB9KG05P049565@svn.freebsd.org> <20101218070800.GA59878@pluto.vnode.local>
next in thread | previous in thread | raw e-mail | index | archive | help
Joel Dahl wrote: > On 09-12-2010 20:16, Alan Cox wrote: > >> Author: alc >> Date: Thu Dec 9 20:16:00 2010 >> New Revision: 216333 >> URL: http://svn.freebsd.org/changeset/base/216333 >> >> Log: >> When r207410 eliminated the acquisition and release of the page queues >> lock from pmap_extract_and_hold(), it didn't take into account that >> pmap_pte_quick() sometimes requires the page queues lock to be held. >> This change reimplements pmap_extract_and_hold() such that it no >> longer uses pmap_pte_quick(), and thus never requires the page queues >> lock. >> >> For consistency, adopt the same idiom as used by the new >> implementation of pmap_extract_and_hold() in pmap_extract() and >> pmap_mincore(). It also happens to make these functions shorter. >> > > Hi Alan, > > This commit makes my laptop hang everytime I quit X. I just get a black > screen and the machine won't respond to any keys. Everything works if I > go back to r216330. > > Can you please try the following change? Index: i386/i386/pmap.c =================================================================== --- i386/i386/pmap.c (revision 216509) +++ i386/i386/pmap.c (working copy) @@ -1342,7 +1342,8 @@ retry: m = PHYS_TO_VM_PAGE(pa); vm_page_hold(m); PA_UNLOCK(locked_pa); - } + } else + PA_UNLOCK_COND(locked_pa); PMAP_UNLOCK(pmap); return (m); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D0C7C0F.4000703>