From 4bfcc1e5175efadb76fea94931637a20b1eb16df Mon Sep 17 00:00:00 2001 From: kettenis Date: Wed, 8 Apr 2015 14:02:43 +0000 Subject: [PATCH] I believe UVM is clean now and no managed pages should be in use anymore when we call pmap_release(). Turn debug code into printf and remove the code that tried to mop up. Override Debugger() such that it inserts a trap instruction directly into the code such that we get useful backtraces. This way I don't need to worry about pmap_release() removing pv entries when making this pmap mpsafe. --- sys/arch/sparc64/sparc64/pmap.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/sys/arch/sparc64/sparc64/pmap.c b/sys/arch/sparc64/sparc64/pmap.c index e657af8aeca..9a15512683f 100644 --- a/sys/arch/sparc64/sparc64/pmap.c +++ b/sys/arch/sparc64/sparc64/pmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.c,v 1.88 2015/02/15 21:34:33 miod Exp $ */ +/* $OpenBSD: pmap.c,v 1.89 2015/04/08 14:02:43 kettenis Exp $ */ /* $NetBSD: pmap.c,v 1.107 2001/08/31 16:47:41 eeh Exp $ */ #undef NO_VCACHE /* Don't forget the locked TLB in dostart */ /* @@ -58,6 +58,7 @@ #include #include #include +#define Debugger() __asm volatile("ta 1; nop"); #else #define Debugger() #define db_printf printf @@ -1522,18 +1523,9 @@ pmap_release(struct pmap *pm) pa = data & TLB_PA_MASK; pv = pa_to_pvh(pa); if (pv != NULL) { - -#ifdef DEBUG printf("pmap_release: pm=%p page %llx still in use\n", pm, (unsigned long long)(((u_int64_t)i<pv_va |= pmap_tte2flags(data); - - pmap_remove_pv(pm, - (long)((u_int64_t)i<