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-all mailing list