svn commit: r255311 - head/sys/amd64/amd64
Konstantin Belousov
kib at FreeBSD.org
Fri Sep 6 16:48:35 UTC 2013
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;
}
}
More information about the svn-src-head
mailing list