Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/sommerfeld_i386mp_1]: src/sys/arch/i386/i386 Back out previous; the solu...



details:   https://anonhg.NetBSD.org/src/rev/616bec3ae8dd
branches:  sommerfeld_i386mp_1
changeset: 482373:616bec3ae8dd
user:      enami <enami%NetBSD.org@localhost>
date:      Mon Feb 12 04:05:46 2001 +0000

description:
Back out previous; the solution might cause a deadlock between pool cache's
lock and pmaps_lock.  Probably, just detect nkpde update may be easier.

diffstat:

 sys/arch/i386/i386/pmap.c |  29 +++--------------------------
 1 files changed, 3 insertions(+), 26 deletions(-)

diffs (58 lines):

diff -r 714ef72a88e4 -r 616bec3ae8dd sys/arch/i386/i386/pmap.c
--- a/sys/arch/i386/i386/pmap.c Sun Feb 11 09:27:57 2001 +0000
+++ b/sys/arch/i386/i386/pmap.c Mon Feb 12 04:05:46 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.c,v 1.83.2.30 2001/02/11 09:12:15 enami Exp $     */
+/*     $NetBSD: pmap.c,v 1.83.2.31 2001/02/12 04:05:46 enami Exp $     */
 
 /*
  *
@@ -415,7 +415,6 @@
 struct pool pmap_pdp_pool;
 struct pool_cache pmap_pdp_cache;
 
-void   *pmap_pdp_pool_page_alloc(unsigned long, int, int);
 int    pmap_pdp_ctor(void *, void *, int);
 
 caddr_t vmmap; /* XXX: used by mem.c... it should really uvm_map_reserve it */
@@ -1055,9 +1054,9 @@
         * initialize the PDE pool and cache.
         */
        pool_init(&pmap_pdp_pool, PAGE_SIZE, 0, 0, 0, "pdppl",
-           0, pmap_pdp_pool_page_alloc, pool_page_free_nointr, M_VMPMAP);
+                 0, pool_page_alloc_nointr, pool_page_free_nointr, M_VMPMAP);
        pool_cache_init(&pmap_pdp_cache, &pmap_pdp_pool,
-           pmap_pdp_ctor, NULL, NULL);
+                       pmap_pdp_ctor, NULL, NULL);
 
        /*
         * ensure the TLB is sync'd with reality by flushing it...
@@ -1664,28 +1663,6 @@
  */
 
 /*
- * pmap_pdp_pool_page_alloc: allocator for the PDP pool page.
- */
-
-void *
-pmap_pdp_pool_page_alloc(unsigned long sz, int flags, int mtype)
-{
-       void *pg;
-
-       /*
-        * There was no free items in the PDP pool.  We have to
-        * release pmaps_lock since pmap_growkernel() might be called
-        * during page allocation.  Reacquire the lock before
-        * constructing PDP cache.
-        */
-       simple_unlock(&pmaps_lock);
-       pg = pool_page_alloc_nointr(sz, flags, mtype);
-       simple_lock(&pmaps_lock);
-
-       return (pg);
-}
-
-/*
  * pmap_pdp_ctor: constructor for the PDP cache.
  */
 



Home | Main Index | Thread Index | Old Index