Module Name: src
Committed By: skrll
Date: Sat Apr 18 10:46:33 UTC 2020
Modified Files:
src/sys/arch/arm/arm32: pmap.c
Log Message:
Remove PMAP_DEBUG by converting to UVMHIST
To generate a diff of this commit:
cvs rdiff -u -r1.407 -r1.408 src/sys/arch/arm/arm32/pmap.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/arm32/pmap.c
diff -u src/sys/arch/arm/arm32/pmap.c:1.407 src/sys/arch/arm/arm32/pmap.c:1.408
--- src/sys/arch/arm/arm32/pmap.c:1.407 Fri Apr 17 11:21:06 2020
+++ src/sys/arch/arm/arm32/pmap.c Sat Apr 18 10:46:32 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.407 2020/04/17 11:21:06 skrll Exp $ */
+/* $NetBSD: pmap.c,v 1.408 2020/04/18 10:46:32 skrll Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -179,16 +179,10 @@
* in a significant slow-down if both processes are in tight loops.
*/
-/*
- * Special compilation symbols
- * PMAP_DEBUG - Build in pmap_debug_level code
- */
-
/* Include header files */
#include "opt_arm_debug.h"
#include "opt_cpuoptions.h"
-#include "opt_pmap_debug.h"
#include "opt_ddb.h"
#include "opt_lockdebug.h"
#include "opt_multiprocessor.h"
@@ -198,7 +192,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.407 2020/04/17 11:21:06 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.408 2020/04/18 10:46:32 skrll Exp $");
#include <sys/atomic.h>
#include <sys/param.h>
@@ -224,46 +218,6 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.4
#include <arm/db_machdep.h>
#endif
-//#define PMAP_DEBUG
-#ifdef PMAP_DEBUG
-
-/* XXX need to get rid of all refs to this */
-int pmap_debug_level = 0;
-
-/*
- * for switching to potentially finer grained debugging
- */
-#define PDB_FOLLOW 0x0001
-#define PDB_INIT 0x0002
-#define PDB_ENTER 0x0004
-#define PDB_REMOVE 0x0008
-#define PDB_CREATE 0x0010
-#define PDB_PTPAGE 0x0020
-#define PDB_GROWKERN 0x0040
-#define PDB_BITS 0x0080
-#define PDB_COLLECT 0x0100
-#define PDB_PROTECT 0x0200
-#define PDB_MAP_L1 0x0400
-#define PDB_BOOTSTRAP 0x1000
-#define PDB_PARANOIA 0x2000
-#define PDB_WIRING 0x4000
-#define PDB_PVDUMP 0x8000
-#define PDB_VAC 0x10000
-#define PDB_KENTER 0x20000
-#define PDB_KREMOVE 0x40000
-#define PDB_EXEC 0x80000
-
-int debugmap = 1;
-int pmapdebug = 0;
-#define NPDEBUG(_lev_,_stat_) \
- if (pmapdebug & (_lev_)) \
- ((_stat_))
-
-#else /* PMAP_DEBUG */
-#define NPDEBUG(_lev_,_stat_) /* Nothing */
-#endif /* PMAP_DEBUG */
-
-
#ifdef VERBOSE_INIT_ARM
#define VPRINTF(...) printf(__VA_ARGS__)
#else
@@ -808,17 +762,6 @@ pv_addr_t kernelpages;
pv_addr_t kernel_l1pt;
pv_addr_t systempage;
-/* Function to set the debug level of the pmap code */
-
-#ifdef PMAP_DEBUG
-void
-pmap_debug(int level)
-{
- pmap_debug_level = level;
- printf("pmap_debug: level=%d\n", pmap_debug_level);
-}
-#endif /* PMAP_DEBUG */
-
#ifdef PMAP_CACHE_VIPT
#define PMAP_VALIDATE_MD_PAGE(md) \
KASSERTMSG(arm_cache_prefer_mask == 0 || (((md)->pvh_attrs & PVF_WRITE) == 0) == ((md)->urw_mappings + (md)->krw_mappings == 0), \
@@ -1018,10 +961,13 @@ static void
pmap_enter_pv(struct vm_page_md *md, paddr_t pa, struct pv_entry *pv, pmap_t pm,
vaddr_t va, u_int flags)
{
- struct pv_entry **pvp;
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx pm %#jx va %#jx",
+ (uintptr_t)md, (uintptr_t)pa, (uintptr_t)pm, va);
+ UVMHIST_LOG(maphist, "...pv %#jx flags %#jx",
+ (uintptr_t)pv, flags, 0, 0);
- NPDEBUG(PDB_PVDUMP,
- printf("pmap_enter_pv: pm %p, md %p, flags 0x%x\n", pm, md, flags));
+ struct pv_entry **pvp;
pv->pv_pmap = pm;
pv->pv_va = va;
@@ -1126,18 +1072,19 @@ pmap_find_pv(struct vm_page_md *md, pmap
static struct pv_entry *
pmap_remove_pv(struct vm_page_md *md, paddr_t pa, pmap_t pm, vaddr_t va)
{
- struct pv_entry *pv, **prevptr;
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx pm %#jx va %#jx",
+ (uintptr_t)md, (uintptr_t)pa, (uintptr_t)pm, va);
- NPDEBUG(PDB_PVDUMP,
- printf("pmap_remove_pv: pm %p, md %p, va 0x%08lx\n", pm, md, va));
+ struct pv_entry *pv, **prevptr;
prevptr = &SLIST_FIRST(&md->pvh_list); /* prev pv_entry ptr */
pv = *prevptr;
while (pv) {
if (pv->pv_pmap == pm && pv->pv_va == va) { /* match? */
- NPDEBUG(PDB_PVDUMP, printf("pmap_remove_pv: pm %p, md "
- "%p, flags 0x%x\n", pm, md, pv->pv_flags));
+ UVMHIST_LOG(maphist, "pm %#jx md %#jx flags %#jx",
+ (uintptr_t)pm, (uintptr_t)md, pv->pv_flags, 0);
if (pv->pv_flags & PVF_WIRED) {
--pm->pm_stats.wired_count;
}
@@ -1222,15 +1169,18 @@ pmap_modify_pv(struct vm_page_md *md, pa
{
struct pv_entry *npv;
u_int flags, oflags;
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx pm %#jx va %#jx",
+ (uintptr_t)md, (uintptr_t)pa, (uintptr_t)pm, va);
+ UVMHIST_LOG(maphist, "... clr %#jx set %#jx", clr_mask, set_mask, 0, 0);
KASSERT(!PV_IS_KENTRY_P(clr_mask));
KASSERT(!PV_IS_KENTRY_P(set_mask));
- if ((npv = pmap_find_pv(md, pm, va)) == NULL)
+ if ((npv = pmap_find_pv(md, pm, va)) == NULL) {
+ UVMHIST_LOG(maphist, "<--- done (not found)", 0, 0, 0, 0);
return 0;
-
- NPDEBUG(PDB_PVDUMP,
- printf("pmap_modify_pv: pm %p, md %p, clr 0x%x, set 0x%x, flags 0x%x\n", pm, md, clr_mask, set_mask, npv->pv_flags));
+ }
/*
* There is at least one VA mapping this page.
@@ -1301,6 +1251,8 @@ pmap_modify_pv(struct vm_page_md *md, pa
PMAPCOUNT(remappings);
+ UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
+
return oflags;
}
@@ -2055,6 +2007,7 @@ pmap_vac_me_user(struct vm_page_md *md,
static void
pmap_vac_me_harder(struct vm_page_md *md, paddr_t pa, pmap_t pm, vaddr_t va)
{
+
#ifndef ARM_MMU_EXTENDED
struct pv_entry *pv;
vaddr_t tst_mask;
@@ -2067,8 +2020,9 @@ pmap_vac_me_harder(struct vm_page_md *md
if (arm_cache_prefer_mask == 0)
return;
- NPDEBUG(PDB_VAC, printf("pmap_vac_me_harder: md=%p, pmap=%p va=%08lx\n",
- md, pm, va));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx pm %#jx va %#jx",
+ (uintptr_t)md, (uintptr_t)pa, (uintptr_t)pm, va);
KASSERT(!va || pm);
KASSERT((md->pvh_attrs & PVF_DMOD) == 0 || (md->pvh_attrs & (PVF_DIRTY|PVF_NC)));
@@ -2366,9 +2320,9 @@ pmap_clearbit(struct vm_page_md *md, pad
const u_int execbits = 0;
#endif
- NPDEBUG(PDB_BITS,
- printf("pmap_clearbit: md %p mask 0x%x\n",
- md, maskbits));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx maskbits %#jx",
+ (uintptr_t)md, pa, maskbits, 0);
#ifdef PMAP_CACHE_VIPT
/*
@@ -2461,9 +2415,8 @@ pmap_clearbit(struct vm_page_md *md, pad
KASSERT((opte & L2_XS_nG) == (pm == pmap_kernel() ? 0 : L2_XS_nG));
#endif
- NPDEBUG(PDB_BITS,
- printf( "%s: pv %p, pm %p, va 0x%08lx, flag 0x%x\n",
- __func__, pv, pm, va, oflags));
+ UVMHIST_LOG(maphist, "pv %#jx pm %#jx va %#jx flag %#jx",
+ (uintptr_t)pv, (uintptr_t)pm, va, oflags);
if (maskbits & (PVF_WRITE|PVF_MOD)) {
#ifdef PMAP_CACHE_VIVT
@@ -2568,9 +2521,8 @@ pmap_clearbit(struct vm_page_md *md, pad
pmap_release_pmap_lock(pm);
- NPDEBUG(PDB_BITS,
- printf("pmap_clearbit: pm %p va 0x%lx opte 0x%08x npte 0x%08x\n",
- pm, va, opte, npte));
+ UVMHIST_LOG(maphist, "pm %#jx va %#jx opte %#jx npte %#jx",
+ (uintptr_t)pm, va, opte, npte);
/* Move to next entry. */
pv = SLIST_NEXT(pv, pv_link);
@@ -2685,8 +2637,10 @@ pmap_syncicache_page(struct vm_page_md *
? PAGE_SIZE
: arm_pcache.icache_way_size;
- NPDEBUG(PDB_EXEC, printf("pmap_syncicache_page: md=%p (attrs=%#x)\n",
- md, md->pvh_attrs));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx (attrs=%#jx)",
+ (uintptr_t)md, pa, md->pvh_attrs, 0);
+
/*
* No need to clean the page if it's non-cached.
*/
@@ -2760,6 +2714,10 @@ pmap_flush_page(struct vm_page_md *md, p
if (arm_cache_prefer_mask == 0)
return;
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx op %#jx",
+ (uintptr_t)md, pa, op, 0);
+
switch (flush) {
case PMAP_FLUSH_PRIMARY:
if (md->pvh_attrs & PVF_MULTCLR) {
@@ -2802,8 +2760,8 @@ pmap_flush_page(struct vm_page_md *md, p
KASSERT(!(md->pvh_attrs & PVF_NC));
- NPDEBUG(PDB_VAC, printf("pmap_flush_page: md=%p (attrs=%#x)\n",
- md, md->pvh_attrs));
+ UVMHIST_LOg(maphist, "md %#jx (attrs=%#jx)",(uintptr_t)md,
+ md->pvh_attrs);
const size_t scache_line_size = arm_scache.dcache_line_size;
@@ -2883,9 +2841,8 @@ pmap_page_remove(struct vm_page_md *md,
#endif
u_int flags = 0;
- NPDEBUG(PDB_FOLLOW,
- printf("pmap_page_remove: md %p (0x%08lx)\n", md,
- pa));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx", (uintptr_t)md, pa, 0, 0);
struct pv_entry **pvp = &SLIST_FIRST(&md->pvh_list);
pmap_acquire_page_lock(md);
@@ -4093,9 +4050,9 @@ pmap_protect(pmap_t pm, vaddr_t sva, vad
struct l2_bucket *l2b;
vaddr_t next_bucket;
- NPDEBUG(PDB_PROTECT,
- printf("pmap_protect: pm %p sva 0x%lx eva 0x%lx prot 0x%x\n",
- pm, sva, eva, prot));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx...#%jx prot %#jx",
+ (uintptr_t)pm, sva, eva, prot);
if ((prot & VM_PROT_READ) == 0) {
pmap_remove(pm, sva, eva);
@@ -4210,9 +4167,9 @@ pmap_icache_sync_range(pmap_t pm, vaddr_
vaddr_t next_bucket;
vsize_t page_size = trunc_page(sva) + PAGE_SIZE - sva;
- NPDEBUG(PDB_EXEC,
- printf("pmap_icache_sync_range: pm %p sva 0x%lx eva 0x%lx\n",
- pm, sva, eva));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx...#%jx",
+ (uintptr_t)pm, sva, eva, 0);
pmap_acquire_pmap_lock(pm);
@@ -4248,9 +4205,9 @@ pmap_page_protect(struct vm_page *pg, vm
struct vm_page_md *md = VM_PAGE_TO_MD(pg);
paddr_t pa = VM_PAGE_TO_PHYS(pg);
- NPDEBUG(PDB_PROTECT,
- printf("pmap_page_protect: md %p (0x%08lx), prot 0x%x\n",
- md, pa, prot));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "md %#jx pa %#jx prot %#jx",
+ (uintptr_t)md, pa, prot, 0);
switch(prot) {
case VM_PROT_READ|VM_PROT_WRITE:
@@ -4866,7 +4823,8 @@ pmap_unwire(pmap_t pm, vaddr_t va)
struct vm_page *pg;
paddr_t pa;
- NPDEBUG(PDB_WIRING, printf("pmap_unwire: pm %p, va 0x%08lx\n", pm, va));
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx", (uintptr_t)pm, va, 0, 0);
pmap_acquire_pmap_lock(pm);
@@ -4927,9 +4885,6 @@ pmap_md_pdetab_activate(pmap_t pm, struc
}
cpu_cpwait();
- UVMHIST_LOG(maphist, " pm %#jx pm->pm_l1_pa %08jx asid %ju... done",
- (uintptr_t)pm, pm->pm_l1_pa, pai->pai_asid, 0);
-
KASSERTMSG(ci->ci_pmap_asid_cur == pai->pai_asid, "%u vs %u",
ci->ci_pmap_asid_cur, pai->pai_asid);
ci->ci_pmap_cur = pm;
@@ -5979,6 +5934,10 @@ pmap_grow_l2_bucket(pmap_t pm, vaddr_t v
vaddr_t
pmap_growkernel(vaddr_t maxkvaddr)
{
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "growing kernel from %#jx to %#jx\n",
+ pmap_curmaxkvaddr, maxkvaddr, 0, 0);
+
pmap_t kpm = pmap_kernel();
#ifndef ARM_MMU_EXTENDED
struct l1_ttable *l1;
@@ -5988,10 +5947,6 @@ pmap_growkernel(vaddr_t maxkvaddr)
if (maxkvaddr <= pmap_curmaxkvaddr)
goto out; /* we are OK */
- NPDEBUG(PDB_GROWKERN,
- printf("pmap_growkernel: growing kernel from 0x%lx to 0x%lx\n",
- pmap_curmaxkvaddr, maxkvaddr));
-
KDASSERT(maxkvaddr <= virtual_end);
/*