diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2015-04-08 14:02:44 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2015-04-08 14:02:44 +0000 |
commit | cbc63be31bad57e611cbdb51f7780b639f30bc30 (patch) | |
tree | c62c24c9d10f47a1b163aee88f2cfaa8e7c57b8d /sys/arch | |
parent | 16ed0eaaac2ed5a9fdd7945614af3a59d35e21b7 (diff) |
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.
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/sparc64/sparc64/pmap.c | 12 |
1 files 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 <ddb/db_extern.h> #include <ddb/db_access.h> #include <ddb/db_output.h> +#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<<STSHIFT)|((u_int64_t)k<<PDSHIFT)|((u_int64_t)j<<PTSHIFT))); Debugger(); -#endif - /* Save REF/MOD info */ - pv->pv_va |= pmap_tte2flags(data); - - pmap_remove_pv(pm, - (long)((u_int64_t)i<<STSHIFT)|((long)k<<PDSHIFT)|((long)j<<PTSHIFT), - pa); } } stxa(pdirentp, ASI_PHYS_CACHED, 0); |