svn commit: r261996 - stable/10/sys/ia64/ia64

Marcel Moolenaar marcel at FreeBSD.org
Sun Feb 16 20:26:23 UTC 2014


Author: marcel
Date: Sun Feb 16 20:26:22 2014
New Revision: 261996
URL: http://svnweb.freebsd.org/changeset/base/261996

Log:
  MFC r259244:
  Allow pmap_remove_pages() to be called for physical maps not
  associated with the current thread.

Modified:
  stable/10/sys/ia64/ia64/pmap.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/ia64/ia64/pmap.c
==============================================================================
--- stable/10/sys/ia64/ia64/pmap.c	Sun Feb 16 20:13:18 2014	(r261995)
+++ stable/10/sys/ia64/ia64/pmap.c	Sun Feb 16 20:26:22 2014	(r261996)
@@ -2118,19 +2118,16 @@ pmap_remove_pages(pmap_t pmap)
 {
 	struct pv_chunk *pc, *npc;
 	struct ia64_lpte *pte;
+	pmap_t oldpmap;
 	pv_entry_t pv;
 	vm_offset_t va;
 	vm_page_t m;
 	u_long inuse, bitmask;
 	int allfree, bit, field, idx;
 
-	if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) {
-		printf("warning: %s called with non-current pmap\n",
-		    __func__);
-		return;
-	}
 	rw_wlock(&pvh_global_lock);
 	PMAP_LOCK(pmap);
+	oldpmap = pmap_switch(pmap);
 	TAILQ_FOREACH_SAFE(pc, &pmap->pm_pvchunk, pc_list, npc) {
 		allfree = 1;
 		for (field = 0; field < _NPCM; field++) {
@@ -2170,8 +2167,9 @@ pmap_remove_pages(pmap_t pmap)
 			free_pv_chunk(pc);
 		}
 	}
-	rw_wunlock(&pvh_global_lock);
+	pmap_switch(oldpmap);
 	PMAP_UNLOCK(pmap);
+	rw_wunlock(&pvh_global_lock);
 }
 
 /*


More information about the svn-src-all mailing list