mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
Add some lock assertions. Lock a small part of pmap_enter().
This commit is contained in:
parent
65d476e0e0
commit
d7c3bd4918
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=130577
@ -1438,6 +1438,7 @@ pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va)
|
||||
pv_entry_t pv;
|
||||
int rtval;
|
||||
|
||||
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
|
||||
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
|
||||
if (m->md.pv_list_count < pmap->pm_stats.resident_count) {
|
||||
TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
|
||||
@ -1498,6 +1499,7 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va)
|
||||
pt_entry_t oldpte;
|
||||
vm_page_t m, mpte;
|
||||
|
||||
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
|
||||
oldpte = pte_load_clear(ptq);
|
||||
if (oldpte & PG_W)
|
||||
pmap->pm_stats.wired_count -= 1;
|
||||
@ -1943,7 +1945,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
|
||||
if (opa) {
|
||||
int err;
|
||||
vm_page_lock_queues();
|
||||
PMAP_LOCK(pmap);
|
||||
err = pmap_remove_pte(pmap, pte, va);
|
||||
PMAP_UNLOCK(pmap);
|
||||
vm_page_unlock_queues();
|
||||
if (err)
|
||||
panic("pmap_enter: pte vanished, va: 0x%lx", va);
|
||||
|
Loading…
Reference in New Issue
Block a user