In get_pv_entry() use PMAP_LOCK() instead of PMAP_TRYLOCK() when deadlock
cannot possibly occur.
This commit is contained in:
parent
f06d169763
commit
65336314cf
@ -1338,7 +1338,10 @@ retry:
|
||||
TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
|
||||
va = pv->pv_va;
|
||||
pmap = pv->pv_pmap;
|
||||
if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
/* Avoid deadlock and lock recursion. */
|
||||
if (pmap > locked_pmap)
|
||||
PMAP_LOCK(pmap);
|
||||
else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
continue;
|
||||
pmap->pm_stats.resident_count--;
|
||||
pte = pmap_lev3pte(pmap, va);
|
||||
|
@ -1467,7 +1467,10 @@ retry:
|
||||
TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
|
||||
va = pv->pv_va;
|
||||
pmap = pv->pv_pmap;
|
||||
if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
/* Avoid deadlock and lock recursion. */
|
||||
if (pmap > locked_pmap)
|
||||
PMAP_LOCK(pmap);
|
||||
else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
continue;
|
||||
pmap->pm_stats.resident_count--;
|
||||
pte = pmap_pte_pde(pmap, va, &ptepde);
|
||||
|
@ -1483,7 +1483,10 @@ retry:
|
||||
TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
|
||||
va = pv->pv_va;
|
||||
pmap = pv->pv_pmap;
|
||||
if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
/* Avoid deadlock and lock recursion. */
|
||||
if (pmap > locked_pmap)
|
||||
PMAP_LOCK(pmap);
|
||||
else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
continue;
|
||||
pmap->pm_stats.resident_count--;
|
||||
pte = pmap_pte_quick(pmap, va);
|
||||
|
@ -850,7 +850,10 @@ retry:
|
||||
TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
|
||||
va = pv->pv_va;
|
||||
pmap = pv->pv_pmap;
|
||||
if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
/* Avoid deadlock and lock recursion. */
|
||||
if (pmap > locked_pmap)
|
||||
PMAP_LOCK(pmap);
|
||||
else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
|
||||
continue;
|
||||
oldpmap = pmap_install(pmap);
|
||||
pte = pmap_find_vhpt(va);
|
||||
|
Loading…
x
Reference in New Issue
Block a user