Module Name:    src
Committed By:   skrll
Date:           Wed Apr 15 15:50:16 UTC 2020

Modified Files:
        src/sys/arch/hppa/gsc: if_ie_gsc.c
        src/sys/arch/hppa/hppa: machdep.c pmap.c

Log Message:
Convert PMAPDEBUG to UVMHIST


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/hppa/gsc/if_ie_gsc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/hppa/hppa/machdep.c
cvs rdiff -u -r1.108 -r1.109 src/sys/arch/hppa/hppa/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/hppa/gsc/if_ie_gsc.c
diff -u src/sys/arch/hppa/gsc/if_ie_gsc.c:1.4 src/sys/arch/hppa/gsc/if_ie_gsc.c:1.5
--- src/sys/arch/hppa/gsc/if_ie_gsc.c:1.4	Thu Apr 25 10:08:45 2019
+++ src/sys/arch/hppa/gsc/if_ie_gsc.c	Wed Apr 15 15:50:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ie_gsc.c,v 1.4 2019/04/25 10:08:45 msaitoh Exp $	*/
+/*	$NetBSD: if_ie_gsc.c,v 1.5 2020/04/15 15:50:15 skrll Exp $	*/
 
 /*	$OpenBSD: if_ie_gsc.c,v 1.6 2001/01/12 22:57:04 mickey Exp $	*/
 
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ie_gsc.c,v 1.4 2019/04/25 10:08:45 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ie_gsc.c,v 1.5 2020/04/15 15:50:15 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -378,11 +378,6 @@ ie_gsc_attach(device_t parent, device_t 
 	int rseg;
 	int rv;
 	uint8_t myaddr[ETHER_ADDR_LEN];
-#ifdef PMAPDEBUG
-	extern int pmapdebug;
-	int opmapdebug = pmapdebug;
-	pmapdebug = 0;
-#endif
 
 	if (ga->ga_type.iodc_sv_model == HPPA_FIO_GLAN)
 		gsc->flags |= IEGSC_GECKO;
@@ -506,9 +501,6 @@ ie_gsc_attach(device_t parent, device_t 
 		bus_dmamem_free(gsc->iemt, &seg, rseg);
 		return;
 	}
-#ifdef PMAPDEBUG
-	pmapdebug = opmapdebug;
-#endif
 	if (!rv)
 		return;
 

Index: src/sys/arch/hppa/hppa/machdep.c
diff -u src/sys/arch/hppa/hppa/machdep.c:1.12 src/sys/arch/hppa/hppa/machdep.c:1.13
--- src/sys/arch/hppa/hppa/machdep.c:1.12	Tue Dec 31 13:07:10 2019
+++ src/sys/arch/hppa/hppa/machdep.c	Wed Apr 15 15:50:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.12 2019/12/31 13:07:10 ad Exp $	*/
+/*	$NetBSD: machdep.c,v 1.13 2020/04/15 15:50:15 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.12 2019/12/31 13:07:10 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.13 2020/04/15 15:50:15 skrll Exp $");
 
 #include "opt_cputype.h"
 #include "opt_ddb.h"
@@ -126,10 +126,6 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 
 #include <hppa/hppa/pim.h>
 #include <hppa/dev/cpudevs.h>
 
-#ifdef PMAPDEBUG
-#include <hppa/hppa/hpt.h>
-#endif
-
 #include "ksyms.h"
 #include "lcd.h"
 
@@ -898,12 +894,7 @@ cpu_startup(void)
 {
 	vaddr_t minaddr, maxaddr;
 	char pbuf[3][9];
-#ifdef PMAPDEBUG
-	extern int pmapdebug;
-	int opmapdebug = pmapdebug;
 
-	pmapdebug = 0;
-#endif
 	/* Initialize the message buffer. */
 	initmsgbuf(msgbufaddr, MSGBUFSIZE);
 
@@ -940,9 +931,6 @@ cpu_startup(void)
 	phys_map = uvm_km_suballoc(kernel_map, &minaddr, &maxaddr,
 	    VM_PHYS_SIZE, 0, false, NULL);
 
-#ifdef PMAPDEBUG
-	pmapdebug = opmapdebug;
-#endif
 	format_bytes(pbuf[0], sizeof(pbuf[0]), ptoa(uvm_availmem()));
 	printf("avail mem = %s\n", pbuf[0]);
 }

Index: src/sys/arch/hppa/hppa/pmap.c
diff -u src/sys/arch/hppa/hppa/pmap.c:1.108 src/sys/arch/hppa/hppa/pmap.c:1.109
--- src/sys/arch/hppa/hppa/pmap.c:1.108	Wed Apr 15 15:22:37 2020
+++ src/sys/arch/hppa/hppa/pmap.c	Wed Apr 15 15:50:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.108 2020/04/15 15:22:37 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.109 2020/04/15 15:50:15 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.108 2020/04/15 15:22:37 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.109 2020/04/15 15:50:15 skrll Exp $");
 
 #include "opt_cputype.h"
 
@@ -94,52 +94,6 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.1
 #include <ddb/db_output.h>
 #endif
 
-#ifdef PMAPDEBUG
-
-#define	static	/**/
-#define	inline	/**/
-
-#define	DPRINTF(l,s)	do {		\
-	if ((pmapdebug & (l)) == (l))	\
-		printf s;		\
-} while(0)
-
-#define	PDB_FOLLOW	0x00000001
-#define	PDB_INIT	0x00000002
-#define	PDB_ENTER	0x00000004
-#define	PDB_REMOVE	0x00000008
-#define	PDB_CREATE	0x00000010
-#define	PDB_PTPAGE	0x00000020
-#define	PDB_CACHE	0x00000040
-#define	PDB_BITS	0x00000080
-#define	PDB_COLLECT	0x00000100
-#define	PDB_PROTECT	0x00000200
-#define	PDB_EXTRACT	0x00000400
-#define	PDB_VP		0x00000800
-#define	PDB_PV		0x00001000
-#define	PDB_PARANOIA	0x00002000
-#define	PDB_WIRING	0x00004000
-#define	PDB_PMAP	0x00008000
-#define	PDB_STEAL	0x00010000
-#define	PDB_PHYS	0x00020000
-#define	PDB_POOL	0x00040000
-#define	PDB_ALIAS	0x00080000
-int pmapdebug = 0
-	| PDB_INIT
-	| PDB_FOLLOW
-	| PDB_VP
-	| PDB_PV
-	| PDB_ENTER
-	| PDB_REMOVE
-	| PDB_STEAL
-	| PDB_PROTECT
-	| PDB_PHYS
-	| PDB_ALIAS
-	;
-#else
-#define	DPRINTF(l,s)	/* */
-#endif
-
 int		pmap_hptsize = 16 * PAGE_SIZE;	/* patchable */
 vaddr_t		pmap_hpt;
 
@@ -331,9 +285,9 @@ pmap_pde_get(volatile uint32_t *pd, vadd
 static inline void
 pmap_pde_set(pmap_t pm, vaddr_t va, paddr_t ptp)
 {
-
-	DPRINTF(PDB_FOLLOW|PDB_VP,
-	    ("%s(%p, 0x%lx, 0x%lx)\n", __func__, pm, va, ptp));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx ptp %#jx", (uintptr_t)pm,
+	    va, ptp, 0);
 
 	KASSERT((ptp & PGOFSET) == 0);
 
@@ -346,8 +300,9 @@ pmap_pde_alloc(pmap_t pm, vaddr_t va, st
 	struct vm_page *pg;
 	paddr_t pa;
 
-	DPRINTF(PDB_FOLLOW|PDB_VP,
-	    ("%s(%p, 0x%lx, %p)\n", __func__, pm, va, pdep));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx pdep %#jx", (uintptr_t)pm,
+	    va, (uintptr_t)pdep, 0);
 
 	KASSERT(pm != pmap_kernel());
 	KASSERT(rw_write_held(pm->pm_lock));
@@ -359,7 +314,7 @@ pmap_pde_alloc(pmap_t pm, vaddr_t va, st
 
 	pa = VM_PAGE_TO_PHYS(pg);
 
-	DPRINTF(PDB_FOLLOW|PDB_VP, ("%s: pde %lx\n", __func__, pa));
+	UVMHIST_LOG(maphist, "pde %#jx", pa, 0, 0, 0);
 
 	pg->flags &= ~PG_BUSY;		/* never busy */
 	pg->wire_count = 1;		/* no mappings yet */
@@ -376,12 +331,15 @@ pmap_pde_ptp(pmap_t pm, volatile pt_entr
 {
 	paddr_t pa = (paddr_t)pde;
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s(%p, %p)\n", __func__, pm, pde));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx pdep %#jx", (uintptr_t)pm,
+	    (uintptr_t)pde, 0, 0);
 
 	if (pm->pm_ptphint && VM_PAGE_TO_PHYS(pm->pm_ptphint) == pa)
 		return (pm->pm_ptphint);
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s: lookup 0x%lx\n", __func__, pa));
+	UVMHIST_LOG(maphist, "<--- done (%#jx)",
+	    (uintptr_t)PHYS_TO_VM_PAGE(pa), 0, 0, 0);
 
 	return (PHYS_TO_VM_PAGE(pa));
 }
@@ -389,14 +347,14 @@ pmap_pde_ptp(pmap_t pm, volatile pt_entr
 static inline void
 pmap_pde_release(pmap_t pmap, vaddr_t va, struct vm_page *ptp)
 {
-
-	DPRINTF(PDB_FOLLOW|PDB_PV,
-	    ("%s(%p, 0x%lx, %p)\n", __func__, pmap, va, ptp));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx ptp %#jx", (uintptr_t)pmap,
+	    va, (uintptr_t)ptp, 0);
 
 	KASSERT(pmap != pmap_kernel());
 	if (--ptp->wire_count <= 1) {
-		DPRINTF(PDB_FOLLOW|PDB_PV,
-		    ("%s: disposing ptp %p\n", __func__, ptp));
+		UVMHIST_LOG(maphist, "disposing ptp %#jx", (uintptr_t)ptp, 0,
+		    0, 0);
 		pmap_pde_set(pmap, va, 0);
 		pmap->pm_stats.resident_count--;
 		if (pmap->pm_ptphint == ptp)
@@ -420,8 +378,12 @@ static inline void
 pmap_pte_set(volatile pt_entry_t *pde, vaddr_t va, pt_entry_t pte)
 {
 
-	DPRINTF(PDB_FOLLOW|PDB_VP, ("%s(%p, 0x%lx, 0x%x)\n",
-	    __func__, pde, va, pte));
+	/* too verbose due to hppa_pagezero_{,un}map */
+#if 0
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pdep %#jx va %#jx pte %#jx", (uintptr_t)pde,
+	    va, pte, 0);
+#endif
 
 	KASSERT(pde != NULL);
 	KASSERT(((paddr_t)pde & PGOFSET) == 0);
@@ -433,6 +395,12 @@ void
 pmap_pte_flush(pmap_t pmap, vaddr_t va, pt_entry_t pte)
 {
 
+	UVMHIST_FUNC(__func__);
+	if (pmap != pmap_kernel() && va != 0) {
+		UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx pte %#jx",
+		    (uintptr_t)pmap, va, (uintptr_t)pte, 0);
+	}
+
 	fdcache(pmap->pm_space, va, PAGE_SIZE);
 	if (pte & PTE_PROT(TLB_EXECUTE)) {
 		ficache(pmap->pm_space, va, PAGE_SIZE);
@@ -528,21 +496,30 @@ pmap_check_alias(struct vm_page *pg, vad
 	struct pv_entry *pve;
 	int ret = 0;
 
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx va %#jx pte %#jx", (uintptr_t)pg,
+	    va, pte, 0);
+
 	/* check for non-equ aliased mappings */
 	for (pve = md->pvh_list; pve; pve = pve->pv_next) {
 		vaddr_t pva = pve->pv_va & PV_VAMASK;
 
+		UVMHIST_LOG(maphist, "... pm %#jx va %#jx",
+		    (uintptr_t)pve->pv_pmap, pva, 0, 0);
+
 		pte |= pmap_vp_find(pve->pv_pmap, pva);
 		if ((va & HPPA_PGAOFF) != (pva & HPPA_PGAOFF) &&
 		    (pte & PTE_PROT(TLB_WRITE))) {
+			UVMHIST_LOG(maphist,
+			    "aliased writable mapping %#jx:%#jx",
+			    pve->pv_pmap->pm_space, pve->pv_va, 0, 0);
 
-			DPRINTF(PDB_FOLLOW|PDB_ALIAS,
-			    ("%s: aliased writable mapping 0x%x:0x%lx\n",
-			    __func__, pve->pv_pmap->pm_space, pve->pv_va));
 			ret++;
 		}
 	}
 
+	UVMHIST_LOG(maphist, "<--- done (%jd)", ret, 0, 0, 0);
+
 	return (ret);
 }
 
@@ -554,12 +531,8 @@ pmap_pv_alloc(void)
 {
 	struct pv_entry *pv;
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s()\n", __func__));
-
 	pv = pool_get(&pmap_pv_pool, PR_NOWAIT);
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s: %p\n", __func__, pv));
-
 	return (pv);
 }
 
@@ -580,8 +553,11 @@ pmap_pv_enter(struct vm_page *pg, struct
 {
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s(%p, %p, %p, 0x%lx, %p, 0x%x)\n",
-	    __func__, pg, pve, pm, va, pdep, flags));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx pve %#jx pm %#jx va %#jx",
+	    (uintptr_t)pg, (uintptr_t)pve, (uintptr_t)pm, va);
+	UVMHIST_LOG(maphist, "...pdep %#jx flags %#jx",
+	    (uintptr_t)pdep, flags, 0, 0);
 
 	KASSERT(pm == pmap_kernel() || uvm_page_owner_locked_p(pg, true));
 
@@ -595,6 +571,10 @@ pmap_pv_enter(struct vm_page *pg, struct
 static inline struct pv_entry *
 pmap_pv_remove(struct vm_page *pg, pmap_t pmap, vaddr_t va)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx pm %#jx va %#jx",
+	    (uintptr_t)pg, (uintptr_t)pmap, va, 0);
+
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 	struct pv_entry **pve, *pv;
 
@@ -626,26 +606,13 @@ pmap_page_physload(paddr_t spa, paddr_t 
 {
 
 	if (spa < FIRST_16M && epa <= FIRST_16M) {
-		DPRINTF(PDB_INIT, ("%s: phys segment 0x%05lx 0x%05lx\n",
-		    __func__, spa, epa));
-
 		uvm_page_physload(spa, epa, spa, epa, VM_FREELIST_ISADMA);
 	} else if (spa < FIRST_16M && epa > FIRST_16M) {
-		DPRINTF(PDB_INIT, ("%s: phys segment 0x%05lx 0x%05lx\n",
-		    __func__, spa, FIRST_16M));
-
 		uvm_page_physload(spa, FIRST_16M, spa, FIRST_16M,
 		    VM_FREELIST_ISADMA);
-
-		DPRINTF(PDB_INIT, ("%s: phys segment 0x%05lx 0x%05lx\n",
-		    __func__, FIRST_16M, epa));
-
 		uvm_page_physload(FIRST_16M, epa, FIRST_16M, epa,
 		    VM_FREELIST_DEFAULT);
 	} else {
-		DPRINTF(PDB_INIT, ("%s: phys segment 0x%05lx 0x%05lx\n",
-		    __func__, spa, epa));
-
 		uvm_page_physload(spa, epa, spa, epa, VM_FREELIST_DEFAULT);
 	}
 
@@ -663,6 +630,9 @@ pmap_page_physload(paddr_t spa, paddr_t 
 void
 pmap_bootstrap(vaddr_t vstart)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLED(maphist);
+
 	vaddr_t va, addr;
 	vsize_t size;
 	extern paddr_t hppa_vtop;
@@ -678,8 +648,6 @@ pmap_bootstrap(vaddr_t vstart)
 	extern int __rodata_start, __rodata_end;
 	extern int __data_start;
 
-	DPRINTF(PDB_FOLLOW|PDB_INIT, ("%s(0x%lx)\n", __func__, vstart));
-
 	uvm_md_init();
 
 	hppa_prot[UVM_PROT_NONE]  = TLB_AR_NA;
@@ -719,8 +687,6 @@ pmap_bootstrap(vaddr_t vstart)
 	size = round_page((hppa_sid_max + 1) * 4);
 	memset((void *)addr, 0, size);
 	fdcache(HPPA_SID_KERNEL, addr, size);
-	DPRINTF(PDB_INIT, ("%s: vtop 0x%lx @ 0x%lx\n", __func__, size,
-	    addr));
 
 	addr += size;
 	pmap_sdir_set(HPPA_SID_KERNEL, kpm->pm_pdir);
@@ -749,18 +715,19 @@ pmap_bootstrap(vaddr_t vstart)
 		pmap_hpt = addr;
 		addr += pmap_hptsize;
 
-		DPRINTF(PDB_INIT, ("%s: hpt_table 0x%x @ 0x%lx\n", __func__,
-		    pmap_hptsize, addr));
+		UVMHIST_LOG(maphist, "hpt_table %#jx @ %#jx\n",
+		    pmap_hptsize, addr, 0, 0);
 
 		if ((error = (cpu_hpt_init)(pmap_hpt, pmap_hptsize)) < 0) {
 			printf("WARNING: HPT init error %d -- DISABLED\n",
 			    error);
 			pmap_hpt = 0;
-		} else
-			DPRINTF(PDB_INIT,
-			    ("%s: HPT installed for %ld entries @ 0x%lx\n",
-			    __func__, pmap_hptsize / sizeof(struct hpt_entry),
-			    addr));
+		} else {
+			UVMHIST_LOG(maphist,
+			    "HPT installed for %jd entries @ %#jx",
+			    pmap_hptsize / sizeof(struct hpt_entry), addr, 0,
+			    0);
+		}
 	}
 #endif
 
@@ -774,7 +741,7 @@ pmap_bootstrap(vaddr_t vstart)
 	/* ... and all physmem (VA == PA) */
 	npdes = nkpdes + (physmem + atop(PDE_SIZE) - 1) / atop(PDE_SIZE);
 
-	DPRINTF(PDB_INIT, ("%s: npdes %d\n", __func__, npdes));
+	UVMHIST_LOG(maphist, "npdes %jd", npdes, 0, 0, 0);
 
 	/* map the pdes */
 	for (va = 0; npdes--; va += PDE_SIZE, addr += PAGE_SIZE) {
@@ -785,9 +752,9 @@ pmap_bootstrap(vaddr_t vstart)
 			va = HPPA_IOBEGIN;
 		/* now map the pde for the physmem */
 		memset((void *)addr, 0, PAGE_SIZE);
-		DPRINTF(PDB_INIT|PDB_VP,
-		    ("%s: pde premap 0x%08lx 0x%08lx\n", __func__, va,
-		    addr));
+
+		UVMHIST_LOG(maphist, "pde premap 0x%08jx 0x%08jx", va,
+		    addr, 0, 0);
 		pmap_pde_set(kpm, va, addr);
 		kpm->pm_stats.resident_count++; /* count PTP as resident */
 	}
@@ -856,9 +823,9 @@ pmap_bootstrap(vaddr_t vstart)
 		 */
 		addr = ksrx;
 
-		DPRINTF(PDB_INIT,
-		    ("%s: BTLB mapping text and rodata @ %p - %p\n", __func__,
-		    (void *)addr, (void *)kero));
+		UVMHIST_LOG(maphist,
+		    "BTLB mapping text and rodata @ %#jx - %#jx", addr, kero,
+		    0, 0);
 
 		btlb_j = 0;
 		while (addr < (vaddr_t) kero) {
@@ -903,8 +870,8 @@ pmap_bootstrap(vaddr_t vstart)
 		 * which is plentiful.
 		 */
 
-		DPRINTF(PDB_INIT, ("%s: mapping data, bss, etc @ %p - %p\n",
-		    __func__, (void *)addr, (void *)kerw));
+		UVMHIST_LOG(maphist, "mapping data, bss, etc @ %#jx - %#jx",
+		    addr, kerw, 0, 0);
 
 		while (addr < kerw) {
 
@@ -984,10 +951,8 @@ pmap_bootstrap(vaddr_t vstart)
 	}
 
 	/* XXXNH update */
-	DPRINTF(PDB_INIT, ("%s: mapped 0x%lx - 0x%lx\n", __func__, ksro,
-	    kero));
-	DPRINTF(PDB_INIT, ("%s: mapped 0x%lx - 0x%lx\n", __func__, ksrw,
-	    kerw));
+	UVMHIST_LOG(maphist, "mapped %#jx - %#jx", ksro, kero, 0, 0);
+	UVMHIST_LOG(maphist, "mapped %#jx - %#jx", ksrw, kerw, 0, 0);
 
 }
 
@@ -1003,7 +968,8 @@ pmap_init(void)
 	extern void gateway_page(void);
 	volatile pt_entry_t *pde;
 
-	DPRINTF(PDB_FOLLOW|PDB_INIT, ("%s()\n", __func__));
+	UVMHIST_FUNC(__func__)
+	UVMHIST_CALLED(maphist);
 
 	sid_counter = HPPA_SID_KERNEL;
 
@@ -1031,7 +997,7 @@ pmap_init(void)
 
 	pmap_initialized = true;
 
-	DPRINTF(PDB_FOLLOW|PDB_INIT, ("%s(): done\n", __func__));
+	UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
 }
 
 /*
@@ -1057,9 +1023,12 @@ pmap_create(void)
 	pmap_t pmap;
 	pa_space_t space;
 
+	UVMHIST_FUNC(__func__)
+	UVMHIST_CALLED(maphist);
+
 	pmap = pool_get(&pmap_pool, PR_WAITOK);
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s: pmap = %p\n", __func__, pmap));
+	UVMHIST_LOG(maphist, "pm %#jx", (uintptr_t)pmap, 0, 0, 0);
 
 	rw_init(&pmap->pm_obj_lock);
 	uvm_obj_init(&pmap->pm_obj, &pmap_pager, false, 1);
@@ -1090,8 +1059,8 @@ pmap_create(void)
 
 	mutex_exit(&pmaps_lock);
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s: pm = %p, space = %d, pid = %d\n",
-	    __func__, pmap, space, pmap->pm_pid));
+	UVMHIST_LOG(maphist, "pm %#jx, space %jd, pid %jd",
+	    (uintptr_t)pmap, space, pmap->pm_pid, 0);
 
 	return (pmap);
 }
@@ -1105,6 +1074,9 @@ pmap_create(void)
 void
 pmap_destroy(pmap_t pmap)
 {
+	UVMHIST_FUNC(__func__)
+	UVMHIST_CALLARGS(maphist, "pm %#jx", (uintptr_t)pmap, 0, 0, 0);
+
 #ifdef DIAGNOSTIC
 	struct uvm_page_array a;
 	struct vm_page *pg;
@@ -1112,8 +1084,6 @@ pmap_destroy(pmap_t pmap)
 #endif
 	int refs;
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s(%p)\n", __func__, pmap));
-
 	rw_enter(pmap->pm_lock, RW_WRITER);
 	refs = --pmap->pm_obj.uo_refs;
 	rw_exit(pmap->pm_lock);
@@ -1137,9 +1107,8 @@ pmap_destroy(pmap_t pmap)
 		KASSERT(pg != pmap->pm_pdir_pg);
 		pa = VM_PAGE_TO_PHYS(pg);
 
-		DPRINTF(PDB_FOLLOW, ("%s(%p): stray ptp "
-		    "0x%lx w/ %d ents:", __func__, pmap, pa,
-		    pg->wire_count - 1));
+		UVMHIST_LOG(maphist, "pm %#jx: stray ptp %#jx w/ %jd entries:",
+		    (uintptr_t)pmap, pa, pg->wire_count - 1, 0);
 
 		pde = (pt_entry_t *)pa;
 		epde = (pt_entry_t *)(pa + PAGE_SIZE);
@@ -1157,13 +1126,13 @@ pmap_destroy(pmap_t pmap)
 				if (pv->pv_pmap != pmap)
 					continue;
 
-				DPRINTF(PDB_FOLLOW, (" 0x%lx", pv->pv_va));
+				UVMHIST_LOG(maphist, " %#jx", pv->pv_va, 0, 0,
+				    0);
 
 				pmap_remove(pmap, pv->pv_va & PV_VAMASK,
 				    (pv->pv_va & PV_VAMASK) + PAGE_SIZE);
 			}
 		}
-		DPRINTF(PDB_FOLLOW, ("\n"));
 	}
 	rw_exit(pmap->pm_lock);
 	uvm_page_array_fini(&a);
@@ -1184,8 +1153,8 @@ pmap_destroy(pmap_t pmap)
 void
 pmap_reference(pmap_t pmap)
 {
-
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s(%p)\n", __func__, pmap));
+	UVMHIST_FUNC(__func__)
+	UVMHIST_CALLARGS(maphist, "pm %#jx", (uintptr_t)pmap, 0, 0, 0);
 
 	rw_enter(pmap->pm_lock, RW_WRITER);
 	pmap->pm_obj.uo_refs++;
@@ -1233,9 +1202,10 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 	struct pv_entry *pve = NULL;
 	bool wired = (flags & PMAP_WIRED) != 0;
 
-	DPRINTF(PDB_FOLLOW|PDB_ENTER,
-	    ("%s(%p, 0x%lx, 0x%lx, 0x%x, 0x%x)\n", __func__, pmap, va, pa,
-	    prot, flags));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx pa %#jx prot %#jx",
+	    (uintptr_t)pmap, va, pa, prot);
+	UVMHIST_LOG(maphist, "...flags %#jx", flags, 0, 0, 0);
 
 	PMAP_LOCK(pmap);
 
@@ -1253,9 +1223,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 		ptp = pmap_pde_ptp(pmap, pde);
 
 	if ((pte = pmap_pte_get(pde, va))) {
-
-		DPRINTF(PDB_ENTER,
-		    ("%s: remapping 0x%x -> 0x%lx\n", __func__, pte, pa));
+		UVMHIST_LOG(maphist, "remapping %#jx -> %#jx", pte, pa, 0, 0);
 
 		pmap_pte_flush(pmap, va, pte);
 		if (wired && !(pte & PTE_PROT(TLB_WIRED)))
@@ -1265,8 +1233,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 
 		pg = PHYS_TO_VM_PAGE(PTE_PAGE(pte));
 		if (PTE_PAGE(pte) == pa) {
-			DPRINTF(PDB_FOLLOW|PDB_ENTER,
-			    ("%s: same page\n", __func__));
+			UVMHIST_LOG(maphist, "same page", 0, 0, 0, 0);
 			goto enter;
 		}
 
@@ -1277,8 +1244,8 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd
 			md->pvh_attrs |= pmap_pvh_attrs(pte);
 		}
 	} else {
-		DPRINTF(PDB_ENTER, ("%s: new mapping 0x%lx -> 0x%lx\n",
-		    __func__, va, pa));
+		UVMHIST_LOG(maphist, "new mapping %#jx -> %#jx",
+		    va, pa, 0, 0);
 		pte = PTE_PROT(TLB_REFTRAP);
 		pmap->pm_stats.resident_count++;
 		if (wired)
@@ -1326,7 +1293,7 @@ enter:
 
 	PMAP_UNLOCK(pmap);
 
-	DPRINTF(PDB_FOLLOW|PDB_ENTER, ("%s: leaving\n", __func__));
+	UVMHIST_LOG(maphist, "<--- done (0)", 0, 0, 0, 0);
 
 	return (0);
 }
@@ -1341,6 +1308,10 @@ enter:
 void
 pmap_remove(pmap_t pmap, vaddr_t sva, vaddr_t eva)
 {
+
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "sva %#jx eva %#jx", sva, eva, 0, 0);
+
 	struct pv_entry *pve;
 	volatile pt_entry_t *pde = NULL;
 	pt_entry_t pte;
@@ -1348,9 +1319,6 @@ pmap_remove(pmap_t pmap, vaddr_t sva, va
 	vaddr_t pdemask;
 	int batch;
 
-	DPRINTF(PDB_FOLLOW|PDB_REMOVE,
-	    ("%s(%p, 0x%lx, 0x%lx)\n", __func__, pmap, sva, eva));
-
 	PMAP_LOCK(pmap);
 
 	for (batch = 0; sva < eva; sva += PAGE_SIZE) {
@@ -1399,20 +1367,21 @@ pmap_remove(pmap_t pmap, vaddr_t sva, va
 
 	PMAP_UNLOCK(pmap);
 
-	DPRINTF(PDB_FOLLOW|PDB_REMOVE, ("%s: leaving\n", __func__));
+	UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
 }
 
 void
 pmap_write_protect(pmap_t pmap, vaddr_t sva, vaddr_t eva, vm_prot_t prot)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx sva %#jx eva %#jx prot %#jx",
+	    (uintptr_t)pmap, sva, eva, prot);
+
 	struct vm_page *pg;
 	volatile pt_entry_t *pde = NULL;
 	pt_entry_t pte;
 	u_int pteprot, pdemask;
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP,
-	    ("%s(%p, %lx, %lx, %x)\n", __func__, pmap, sva, eva, prot));
-
 	sva = trunc_page(sva);
 	pteprot = PTE_PROT(pmap_prot(pmap, prot));
 
@@ -1427,9 +1396,8 @@ pmap_write_protect(pmap_t pmap, vaddr_t 
 			}
 		}
 		if ((pte = pmap_pte_get(pde, sva))) {
-
-			DPRINTF(PDB_PMAP,
-			    ("%s: va=0x%lx pte=0x%x\n", __func__, sva,  pte));
+			UVMHIST_LOG(maphist, "va% #jx pte %#jx", sva, pte,
+			    0, 0);
 			/*
 			 * Determine if mapping is changing.
 			 * If not, nothing to do.
@@ -1459,11 +1427,12 @@ pmap_write_protect(pmap_t pmap, vaddr_t 
 void
 pmap_page_remove(struct vm_page *pg)
 {
+	UVMHIST_FUNC(__func__)
+	UVMHIST_CALLARGS(maphist, "pg %#jx", (uintptr_t)pg, 0, 0, 0);
+
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 	struct pv_entry *pve, *npve, **pvp;
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s(%p)\n", __func__, pg));
-
 	if (md->pvh_list == NULL) {
 		KASSERT((md->pvh_attrs & PVF_EXEC) == 0);
 		return;
@@ -1506,7 +1475,7 @@ pmap_page_remove(struct vm_page *pg)
 	md->pvh_attrs &= ~PVF_EXEC;
 	*pvp = NULL;
 
-	DPRINTF(PDB_FOLLOW|PDB_PV, ("%s: leaving\n", __func__));
+	UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
 }
 
 /*
@@ -1522,11 +1491,12 @@ pmap_page_remove(struct vm_page *pg)
 void
 pmap_unwire(pmap_t pmap, vaddr_t va)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx", (uintptr_t)pmap, va, 0, 0);
+
 	volatile pt_entry_t *pde;
 	pt_entry_t pte = 0;
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s(%p, 0x%lx)\n", __func__, pmap, va));
-
 	PMAP_LOCK(pmap);
 	if ((pde = pmap_pde_get(pmap->pm_pdir, va))) {
 		pte = pmap_pte_get(pde, va);
@@ -1541,19 +1511,20 @@ pmap_unwire(pmap_t pmap, vaddr_t va)
 	}
 	PMAP_UNLOCK(pmap);
 
-	DPRINTF(PDB_FOLLOW|PDB_PMAP, ("%s: leaving\n", __func__));
+	UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
 }
 
 bool
 pmap_changebit(struct vm_page *pg, u_int set, u_int clear)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx (md %#jx) set %#jx clear %#jx",
+	    (uintptr_t)pg, (uintptr_t)VM_PAGE_TO_MD(pg), set, clear);
+
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 	struct pv_entry *pve;
 	int res;
 
-	DPRINTF(PDB_FOLLOW|PDB_BITS,
-	    ("%s(%p, %x, %x)\n", __func__, pg, set, clear));
-
 	KASSERT((set & clear) == 0);
 	KASSERT((set & ~(PVF_REF|PVF_UNCACHEABLE)) == 0);
 	KASSERT((clear & ~(PVF_MOD|PVF_WRITE|PVF_UNCACHEABLE)) == 0);
@@ -1570,11 +1541,10 @@ pmap_changebit(struct vm_page *pg, u_int
 
 		if ((pde = pmap_pde_get(pmap->pm_pdir, va))) {
 			opte = pte = pmap_pte_get(pde, va);
-#ifdef PMAPDEBUG
+#ifdef DEBUG
 			if (!pte) {
-				DPRINTF(PDB_FOLLOW|PDB_BITS,
-				    ("%s: zero pte for 0x%lx\n", __func__,
-				    va));
+				UVMHIST_LOG(maphist, "zero pte for %#jx",
+				    va, 0, 0, 0);
 				continue;
 			}
 #endif
@@ -1599,13 +1569,15 @@ pmap_changebit(struct vm_page *pg, u_int
 bool
 pmap_testbit(struct vm_page *pg, u_int bit)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx (md %#jx) bit %#jx",
+	    (uintptr_t)pg, (uintptr_t)VM_PAGE_TO_MD(pg), bit, 0);
+
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 	struct pv_entry *pve;
 	pt_entry_t pte;
 	int ret;
 
-	DPRINTF(PDB_FOLLOW|PDB_BITS, ("%s(%p, %x)\n", __func__, pg, bit));
-
 	for (pve = md->pvh_list; !(md->pvh_attrs & bit) && pve;
 	    pve = pve->pv_next) {
 		pmap_t pm = pve->pv_pmap;
@@ -1631,9 +1603,10 @@ pmap_testbit(struct vm_page *pg, u_int b
 bool
 pmap_extract(pmap_t pmap, vaddr_t va, paddr_t *pap)
 {
-	pt_entry_t pte;
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pm %#jx va %#jx", (uintptr_t)pmap, va, 0, 0);
 
-	DPRINTF(PDB_FOLLOW|PDB_EXTRACT, ("%s(%p, %lx)\n", __func__, pmap, va));
+	pt_entry_t pte;
 
 	PMAP_LOCK(pmap);
 	pte = pmap_vp_find(pmap, va);
@@ -1682,11 +1655,13 @@ pmap_procwr(struct proc *p, vaddr_t va, 
 static inline void
 pmap_flush_page(struct vm_page *pg, bool purge)
 {
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pg %#jx (md %#jx) purge %jd",
+	    (uintptr_t)pg, (uintptr_t)VM_PAGE_TO_MD(pg), purge, 0);
+
 	struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 	struct pv_entry *pve;
 
-	DPRINTF(PDB_FOLLOW|PDB_CACHE, ("%s(%p, %d)\n", __func__, pg, purge));
-
 	/* purge cache for all possible mappings for the pa */
 	for (pve = md->pvh_list; pve; pve = pve->pv_next) {
 		vaddr_t va = pve->pv_va & PV_VAMASK;
@@ -1714,7 +1689,9 @@ void
 pmap_zero_page(paddr_t pa)
 {
 
-	DPRINTF(PDB_FOLLOW|PDB_PHYS, ("%s(%lx)\n", __func__, pa));
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "pa %#jx (pg %#jx)", pa,
+	    (uintptr_t)PHYS_TO_VM_PAGE(pa), 0, 0);
 
 	KASSERT(VM_PAGE_TO_MD(PHYS_TO_VM_PAGE(pa))->pvh_list == NULL);
 	KASSERT((VM_PAGE_TO_MD(PHYS_TO_VM_PAGE(pa))->pvh_attrs & PVF_EXEC) == 0);
@@ -1738,9 +1715,12 @@ pmap_zero_page(paddr_t pa)
 void
 pmap_copy_page(paddr_t spa, paddr_t dpa)
 {
-	struct vm_page *srcpg = PHYS_TO_VM_PAGE(spa);
+	UVMHIST_FUNC(__func__);
+	UVMHIST_CALLARGS(maphist, "spa %#jx (pg %#jx) dpa %#jx (pg %#jx)",
+	    spa, (uintptr_t)PHYS_TO_VM_PAGE(spa),
+	    dpa, (uintptr_t)PHYS_TO_VM_PAGE(dpa));
 
-	DPRINTF(PDB_FOLLOW|PDB_PHYS, ("%s(%lx, %lx)\n", __func__, spa, dpa));
+	struct vm_page *srcpg = PHYS_TO_VM_PAGE(spa);
 
 	KASSERT(VM_PAGE_TO_MD(PHYS_TO_VM_PAGE(dpa))->pvh_list == NULL);
 	KASSERT((VM_PAGE_TO_MD(PHYS_TO_VM_PAGE(dpa))->pvh_attrs & PVF_EXEC) == 0);
@@ -1765,25 +1745,16 @@ pmap_copy_page(paddr_t spa, paddr_t dpa)
 void
 pmap_kenter_pa(vaddr_t va, paddr_t pa, vm_prot_t prot, u_int flags)
 {
+	UVMHIST_FUNC(__func__);
+	if (va != 0) {
+		UVMHIST_CALLARGS(maphist, "va %#jx pa %#jx prot %#jx flags %#jx",
+		    va, pa, prot, flags);
+	}
+
 	volatile pt_entry_t *pde;
 	pt_entry_t pte, opte;
 	struct vm_page *pg;
 
-#ifdef PMAPDEBUG
-	int opmapdebug = pmapdebug;
-
-	/*
-	 * If we're being told to map page zero, we can't call printf() at all,
-	 * because doing so would lead to an infinite recursion on this call.
-	 * (printf requires page zero to be mapped).
-	 */
-	if (va == 0)
-		pmapdebug = 0;
-#endif /* PMAPDEBUG */
-
-	DPRINTF(PDB_FOLLOW|PDB_ENTER,
-	    ("%s(%lx, %lx, %x)\n", __func__, va, pa, prot));
-
 	if (!(pde = pmap_pde_get(pmap_kernel()->pm_pdir, va)) &&
 	    !(pde = pmap_pde_alloc(pmap_kernel(), va, NULL)))
 		panic("pmap_kenter_pa: cannot allocate pde for va=0x%lx", va);
@@ -1806,8 +1777,8 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v
 		pve = pmap_pv_alloc();
 		if (!pve)
 			panic("%s: no pv entries available", __func__);
-		DPRINTF(PDB_FOLLOW|PDB_ENTER, ("%s(%lx, %lx, %x) TLB_KENTER\n",
-		    __func__, va, pa, pte));
+		UVMHIST_LOG(maphist, "va %#jx pa %#jx pte %#jx TLB_KENTER",
+		    va, pa, pte, 0);
 
 		if (pmap_check_alias(pg, va, pte))
 			pmap_page_remove(pg);
@@ -1816,37 +1787,31 @@ pmap_kenter_pa(vaddr_t va, paddr_t pa, v
 	}
 	pmap_pte_set(pde, va, pte);
 
-	DPRINTF(PDB_FOLLOW|PDB_ENTER, ("%s: leaving\n", __func__));
+	if (va != 0) {
+		UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
+	}
 
-#ifdef PMAPDEBUG
-	pmapdebug = opmapdebug;
-#endif /* PMAPDEBUG */
 }
 
 void
 pmap_kremove(vaddr_t va, vsize_t size)
 {
+	UVMHIST_FUNC(__func__);
+	bool pzero = false;
+	if (va != 0) {
+		UVMHIST_CALLARGS(maphist, "va %#jx...%#jx", va, va + size, 0,
+		    0);
+		pzero = true;
+	}
+
 	struct pv_entry *pve;
 	vaddr_t eva, pdemask;
 	volatile pt_entry_t *pde = NULL;
 	pt_entry_t pte;
 	struct vm_page *pg;
 	pmap_t pmap = pmap_kernel();
-#ifdef PMAPDEBUG
-	int opmapdebug = pmapdebug;
-
-	/*
-	 * If we're being told to unmap page zero, we can't call printf() at
-	 * all as printf requires page zero to be mapped.
-	 */
-	if (va == 0)
-		pmapdebug = 0;
-#endif /* PMAPDEBUG */
-
-	DPRINTF(PDB_FOLLOW|PDB_REMOVE,
-	    ("%s(%lx, %lx)\n", __func__, va, size));
-#ifdef PMAPDEBUG
 
+#ifdef DEBUG
 	/*
 	 * Don't allow the VA == PA mappings, apart from page zero, to be
 	 * removed. Page zero is given special treatment so that we get TLB
@@ -1854,10 +1819,8 @@ pmap_kremove(vaddr_t va, vsize_t size)
 	 * in the first page when it shouldn't.
 	 */
 	if (va != 0 && va < ptoa(physmem)) {
-		DPRINTF(PDB_FOLLOW|PDB_REMOVE,
-		    ("%s(%lx, %lx): unmapping physmem\n", __func__, va,
-		    size));
-		pmapdebug = opmapdebug;
+		UVMHIST_LOG(maphist, "va %#jx size %#jx: unmapping physmem", va,
+		    size, 0, 0);
 		return;
 	}
 #endif
@@ -1871,9 +1834,8 @@ pmap_kremove(vaddr_t va, vsize_t size)
 			}
 		}
 		if (!(pte = pmap_pte_get(pde, va))) {
-			DPRINTF(PDB_FOLLOW|PDB_REMOVE,
-			    ("%s: unmapping unmapped 0x%lx\n", __func__,
-			    va));
+			UVMHIST_LOG(maphist, "unmapping unmapped %#jx",
+			    va, 0, 0, 0);
 			continue;
 		}
 
@@ -1888,11 +1850,9 @@ pmap_kremove(vaddr_t va, vsize_t size)
 				pmap_pv_free(pve);
 		}
 	}
-	DPRINTF(PDB_FOLLOW|PDB_REMOVE, ("%s: leaving\n", __func__));
-
-#ifdef PMAPDEBUG
-	pmapdebug = opmapdebug;
-#endif /* PMAPDEBUG */
+	if (pzero) {
+		UVMHIST_LOG(maphist, "<--- done", 0, 0, 0, 0);
+	}
 }
 
 #if defined(USE_HPT)

Reply via email to