vm_page_t p;
KKASSERT(pmap->pm_active == 0);
+ lwkt_gettoken(&vm_token);
if ((p = pmap->pm_pdirm) != NULL) {
KKASSERT(pmap->pm_pdir != NULL);
pmap_kremove((vm_offset_t)pmap->pm_pdir);
vm_page_free_zero(p);
pmap->pm_pdirm = NULL;
}
+ lwkt_reltoken(&vm_token);
if (pmap->pm_pdir) {
kmem_free(&kernel_map, (vm_offset_t)pmap->pm_pdir, PAGE_SIZE);
pmap->pm_pdir = NULL;
return;
if ((prot & VM_PROT_READ) == VM_PROT_NONE) {
- lwkt_gettoken(&vm_token);
pmap_remove(pmap, sva, eva);
- lwkt_reltoken(&vm_token);
return;
}
lwkt_gettoken(&vm_token);
TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
if (pv->pv_pmap == pmap) {
+ lwkt_reltoken(&vm_token);
crit_exit();
return TRUE;
}