> Date: Sat, 9 Jan 2016 13:07:50 +0100
> From: Tobias Ulmer <[email protected]>
>
> Same on my O2. Looks like fallout from the pmap/cache work
> starting Dec 31
Can you try the diff below?
Index: pmap.c
===================================================================
RCS file: /home/cvs/src/sys/arch/mips64/mips64/pmap.c,v
retrieving revision 1.84
diff -u -p -r1.84 pmap.c
--- pmap.c 5 Jan 2016 05:42:27 -0000 1.84
+++ pmap.c 9 Jan 2016 12:25:04 -0000
@@ -1075,18 +1075,15 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
*/
mtx_enter(&pmap->pm_pte_mtx);
if ((pte = pmap_segmap(pmap, va)) == NULL) {
- unsigned int wflags = PR_WAITOK | PR_ZERO;
-
- if (flags & PMAP_CANFAIL)
- wflags |= PR_LIMITFAIL;
-
- pte = (pt_entry_t *)pool_get(&pmap_pg_pool, wflags);
+ pte = pool_get(&pmap_pg_pool, PR_NOWAIT | PR_ZERO);
if (pte == NULL) {
mtx_leave(&pmap->pm_pte_mtx);
if (pg != NULL)
mtx_leave(&pg->mdpage.pv_mtx);
mtx_leave(&pmap->pm_dir_mtx);
- return ENOMEM; /* can only happen if PMAP_CANFAIL */
+ if (flags & PMAP_CANFAIL)
+ return ENOMEM;
+ panic("%s: out of memory!", __func__);
}
pmap_segmap(pmap, va) = pte;