svn commit: r216333 - head/sys/i386/i386
Alan Cox
alc at rice.edu
Sat Dec 18 09:17:08 UTC 2010
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);
}
More information about the svn-src-head
mailing list