Author: kib
Date: Fri Sep  6 16:48:34 2013
New Revision: 255311
URL: http://svnweb.freebsd.org/changeset/base/255311

Log:
  In pmap_ts_referenced(), when restarting the loop due to pv list
  generation changed, do not drop and immediately relock the pv list.
  
  Suggested and reviewed by:    alc
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/amd64/amd64/pmap.c

Modified: head/sys/amd64/amd64/pmap.c
==============================================================================
--- head/sys/amd64/amd64/pmap.c Fri Sep  6 16:34:09 2013        (r255310)
+++ head/sys/amd64/amd64/pmap.c Fri Sep  6 16:48:34 2013        (r255311)
@@ -5086,8 +5086,8 @@ pmap_ts_referenced(vm_page_t m)
        lock = VM_PAGE_TO_PV_LIST_LOCK(m);
        pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
        rtval = 0;
-retry:
        rw_wlock(lock);
+retry:
        if ((m->flags & PG_FICTITIOUS) != 0)
                goto small_mappings;
        TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_next, pvn) {
@@ -5099,7 +5099,6 @@ retry:
                        rw_wlock(lock);
                        if (pvh_gen != pvh->pv_gen) {
                                PMAP_UNLOCK(pmap);
-                               rw_wunlock(lock);
                                goto retry;
                        }
                }
@@ -5154,7 +5153,6 @@ small_mappings:
                                if (pvh_gen != pvh->pv_gen ||
                                    md_gen != m->md.pv_gen) {
                                        PMAP_UNLOCK(pmap);
-                                       rw_wunlock(lock);
                                        goto retry;
                                }
                        }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to