From bcc6a8acdb71c15106d6533a6567cb237d253ffb Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Thu, 4 Oct 2012 21:14:32 -0700 Subject: [PATCH] kernel - Acquire vm_token in pmap_remove_all() * Kitchen sink try to fix the wire_count panic, acquire vm_token in pmap_remove_all(). --- sys/platform/pc32/i386/pmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/platform/pc32/i386/pmap.c b/sys/platform/pc32/i386/pmap.c index d60cabd26a79..9d6c89cc23e2 100644 --- a/sys/platform/pc32/i386/pmap.c +++ b/sys/platform/pc32/i386/pmap.c @@ -2053,7 +2053,10 @@ pmap_remove_all(vm_page_t m) if (!pmap_initialized || (m->flags & PG_FICTITIOUS)) return; + if (TAILQ_EMPTY(&m->md.pv_list)) + return; + lwkt_getoken(&vm_token); pmap_inval_init(&info); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pmap = pv->pv_pmap; @@ -2105,6 +2108,7 @@ pmap_remove_all(vm_page_t m) } KKASSERT((m->flags & (PG_MAPPED|PG_WRITEABLE)) == 0); pmap_inval_done(&info); + lwkt_reloken(&vm_token); } /*