Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Apr 2026 18:16:24 +0000
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: fe3e92e6868d - main - PHYS_TO_DMAP: Return a void * instead of a vm_offset_t
Message-ID:  <69ea61f8.462af.52ce2f98@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=fe3e92e6868dce2ed94c98428b8df1f27ed3ef63

commit fe3e92e6868dce2ed94c98428b8df1f27ed3ef63
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-04-23 17:05:54 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-04-23 17:05:54 +0000

    PHYS_TO_DMAP: Return a void * instead of a vm_offset_t
    
    Add a new PHYS_TO_DMAP_ADDR that still returns an address for use in
    places that only need an address and not a pointer.
    
    Effort:         CHERI upstreaming
    Reviewed by:    kib
    Sponsored by:   AFRL, DARPA
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/2068
---
 sys/amd64/acpica/acpi_wakeup.c                     |   3 +-
 sys/amd64/amd64/efirt_machdep.c                    |  12 +-
 sys/amd64/amd64/kexec_support.c                    |   8 +-
 sys/amd64/amd64/machdep.c                          |   2 +-
 sys/amd64/amd64/mem.c                              |   6 +-
 sys/amd64/amd64/minidump_machdep.c                 |  14 +-
 sys/amd64/amd64/mp_machdep.c                       |  14 +-
 sys/amd64/amd64/pmap.c                             | 171 +++++++++++----------
 sys/amd64/include/sf_buf.h                         |   2 +-
 sys/amd64/include/vmparam.h                        |   3 +-
 sys/amd64/vmm/amd/amdvi_hw.c                       |   7 +-
 sys/amd64/vmm/amd/ivrs_drv.c                       |   2 +-
 sys/amd64/vmm/intel/ept.c                          |   3 +-
 sys/amd64/vmm/intel/vtd.c                          |   8 +-
 sys/arm/include/vmparam.h                          |   3 +-
 sys/arm64/arm64/efirt_machdep.c                    |  12 +-
 sys/arm64/arm64/gicv3_its.c                        |  12 +-
 sys/arm64/arm64/kexec_support.c                    |   2 +-
 sys/arm64/arm64/machdep.c                          |  11 +-
 sys/arm64/arm64/mem.c                              |   3 +-
 sys/arm64/arm64/minidump_machdep.c                 |   2 +-
 sys/arm64/arm64/pmap.c                             | 123 ++++++++-------
 sys/arm64/include/sf_buf.h                         |   2 +-
 sys/arm64/include/vmparam.h                        |   5 +-
 sys/arm64/iommu/iommu_pmap.c                       |  22 +--
 sys/arm64/vmm/vmm_mmu.c                            |  20 +--
 sys/compat/linuxkpi/common/include/linux/highmem.h |   2 +-
 sys/compat/linuxkpi/common/include/linux/io.h      |   8 +-
 .../linuxkpi/common/include/linux/scatterlist.h    |   2 +-
 sys/compat/linuxkpi/common/src/linux_page.c        |   3 +-
 sys/contrib/ncsw/user/env/xx.c                     |   2 +-
 sys/crypto/ccp/ccp_hardware.c                      |   2 +-
 sys/dev/efidev/efirt.c                             |   4 +-
 sys/dev/hwt/hwt_vm.c                               |   4 +-
 sys/dev/iscsi/icl_soft.c                           |  10 +-
 sys/dev/vmm/vmm_mem.c                              |   2 +-
 sys/dev/vnic/nicvf_queues.c                        |   3 +-
 sys/fs/nfs/nfs_commonsubs.c                        |   9 +-
 sys/fs/nfs/nfsm_subs.h                             |   3 +-
 sys/fs/nfsclient/nfs_clcomsubs.c                   |  12 +-
 sys/fs/nfsclient/nfs_clrpcops.c                    |   4 +-
 sys/fs/nfsserver/nfs_nfsdport.c                    |   4 +-
 sys/fs/nfsserver/nfs_nfsdserv.c                    |   7 +-
 sys/fs/nfsserver/nfs_nfsdsubs.c                    |   2 +-
 sys/i386/include/vmparam.h                         |   3 +-
 sys/kern/kern_mbuf.c                               |   4 +-
 sys/kern/subr_memdesc.c                            |   4 +-
 sys/kern/uipc_ktls.c                               |   4 +-
 sys/kern/uipc_mbuf.c                               |   2 +-
 sys/opencrypto/criov.c                             |   4 +-
 sys/opencrypto/ktls_ocf.c                          |   3 +-
 sys/powerpc/aim/mmu_oea64.c                        |  29 ++--
 sys/powerpc/aim/mmu_radix.c                        | 101 ++++++------
 sys/powerpc/aim/moea64_native.c                    |   4 +-
 sys/powerpc/aim/slb.c                              |   2 +-
 sys/powerpc/booke/pmap.c                           |   2 +-
 sys/powerpc/booke/pmap_64.c                        |  46 +++---
 sys/powerpc/include/vmparam.h                      |   3 +-
 sys/powerpc/ofw/ofw_initrd.c                       |   2 +-
 sys/powerpc/ofw/ofw_machdep.c                      |   7 +-
 sys/powerpc/powerpc/bus_machdep.c                  |   2 +-
 sys/powerpc/powerpc/machdep.c                      |   2 +-
 sys/powerpc/powerpc/mem.c                          |   3 +-
 sys/powerpc/powerpc/uma_machdep.c                  |   2 +-
 sys/powerpc/ps3/platform_ps3.c                     |   3 +-
 sys/riscv/include/sf_buf.h                         |   2 +-
 sys/riscv/include/vmparam.h                        |   3 +-
 sys/riscv/riscv/mem.c                              |   3 +-
 sys/riscv/riscv/minidump_machdep.c                 |   2 +-
 sys/riscv/riscv/pmap.c                             |  72 ++++-----
 sys/sys/efi.h                                      |   2 +-
 sys/sys/sf_buf.h                                   |   2 +-
 sys/vm/uma_core.c                                  |   2 +-
 73 files changed, 426 insertions(+), 449 deletions(-)

diff --git a/sys/amd64/acpica/acpi_wakeup.c b/sys/amd64/acpica/acpi_wakeup.c
index 1200d20f14c2..ace559236de5 100644
--- a/sys/amd64/acpica/acpi_wakeup.c
+++ b/sys/amd64/acpica/acpi_wakeup.c
@@ -344,8 +344,7 @@ acpi_alloc_wakeup_handler(void **wakeaddr,
 
 	for (i = 0; i < ACPI_WAKEPT_PAGES - (la57 ? 0 : 1); i++) {
 		wakept_m[i] = pmap_page_alloc_below_4g(true);
-		wakept_pages[i] = (void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(
-		    wakept_m[i]));
+		wakept_pages[i] = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(wakept_m[i]));
 	}
 	if (EVENTHANDLER_REGISTER(power_resume, acpi_stop_beep, NULL,
 	    EVENTHANDLER_PRI_LAST) == NULL) {
diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c
index 203b2b264587..17088f69887d 100644
--- a/sys/amd64/amd64/efirt_machdep.c
+++ b/sys/amd64/amd64/efirt_machdep.c
@@ -95,7 +95,7 @@ efi_destroy_1t1_map(void)
  * Map a physical address from EFI runtime space into KVA space.  Returns 0 to
  * indicate a failed mapping so that the caller may handle error.
  */
-vm_offset_t
+void *
 efi_phys_to_kva(vm_paddr_t paddr)
 {
 
@@ -135,7 +135,7 @@ efi_1t1_pte(vm_offset_t va)
 		} else {
 			mphys = *pml5e & PG_FRAME;
 		}
-		pml4e = (pml4_entry_t *)PHYS_TO_DMAP(mphys);
+		pml4e = PHYS_TO_DMAP(mphys);
 		pml4e = &pml4e[pml4_idx];
 	} else {
 		pml4e = &efi_pml4[pml4_idx];
@@ -149,7 +149,7 @@ efi_1t1_pte(vm_offset_t va)
 		mphys = *pml4e & PG_FRAME;
 	}
 
-	pdpe = (pdp_entry_t *)PHYS_TO_DMAP(mphys);
+	pdpe = PHYS_TO_DMAP(mphys);
 	pdp_idx = pmap_pdpe_index(va);
 	pdpe += pdp_idx;
 	if (*pdpe == 0) {
@@ -160,7 +160,7 @@ efi_1t1_pte(vm_offset_t va)
 		mphys = *pdpe & PG_FRAME;
 	}
 
-	pde = (pd_entry_t *)PHYS_TO_DMAP(mphys);
+	pde = PHYS_TO_DMAP(mphys);
 	pd_idx = pmap_pde_index(va);
 	pde += pd_idx;
 	if (*pde == 0) {
@@ -171,7 +171,7 @@ efi_1t1_pte(vm_offset_t va)
 		mphys = *pde & PG_FRAME;
 	}
 
-	pte = (pt_entry_t *)PHYS_TO_DMAP(mphys);
+	pte = PHYS_TO_DMAP(mphys);
 	pte += pmap_pte_index(va);
 	KASSERT(*pte == 0, ("va %#jx *pt %#jx", va, *pte));
 
@@ -197,7 +197,7 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz)
 	VM_OBJECT_WLOCK(obj_1t1_pt);
 	efi_pmltop_page = efi_1t1_page();
 	VM_OBJECT_WUNLOCK(obj_1t1_pt);
-	pml = (void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(efi_pmltop_page));
+	pml = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(efi_pmltop_page));
 	if (la57) {
 		efi_pml5 = pml;
 		pmap_pinit_pml5(efi_pmltop_page);
diff --git a/sys/amd64/amd64/kexec_support.c b/sys/amd64/amd64/kexec_support.c
index 8189a48e9ae9..e299e9d3661c 100644
--- a/sys/amd64/amd64/kexec_support.c
+++ b/sys/amd64/amd64/kexec_support.c
@@ -88,16 +88,14 @@ kexec_generate_page_tables(pml4_entry_t *root, vm_offset_t start,
 			mpa = VM_PAGE_TO_PHYS(m);
 			root[i] = mpa | PG_RW | PG_V;
 		}
-		pdp_entry_t *pdp =
-			(pdp_entry_t *)(PHYS_TO_DMAP(root[i] & PG_FRAME));
+		pdp_entry_t *pdp = PHYS_TO_DMAP(root[i] & PG_FRAME);
 		for (; j < NPDPEPG && pg < start + size; j++, k = 0, l = 0) {
 			if (pdp[j] == 0) {
 				m = vm_radix_iter_next(pages);
 				mpa = VM_PAGE_TO_PHYS(m);
 				pdp[j] = mpa | PG_RW | PG_V;
 			}
-			pd_entry_t *pde =
-			    (pd_entry_t *)(PHYS_TO_DMAP(pdp[j] & PG_FRAME));
+			pd_entry_t *pde = PHYS_TO_DMAP(pdp[j] & PG_FRAME);
 			for (; k < NPDEPG && pg < start + size; k++, l = 0) {
 				if (pde[k] == 0) {
 					if (!do_pte) {
@@ -118,7 +116,7 @@ kexec_generate_page_tables(pml4_entry_t *root, vm_offset_t start,
 				for (; l < NPTEPG && pg < start + size;
 				    l++, pg += PAGE_SIZE) {
 					pt_entry_t *pte =
-					    (pt_entry_t *)PHYS_TO_DMAP(pde[pmap_pde_index(pg)] & PG_FRAME);
+					    PHYS_TO_DMAP(pde[pmap_pde_index(pg)] & PG_FRAME);
 					pte[pmap_pte_index(pg)] =
 					    pmap_kextract(pg) | PG_RW | PG_V;
 				}
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index 21217ebdb9df..e338db372df3 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -1132,7 +1132,7 @@ do_next:
 	phys_avail[pa_indx] -= round_page(msgbufsize);
 
 	/* Map the message buffer. */
-	msgbufp = (struct msgbuf *)PHYS_TO_DMAP(phys_avail[pa_indx]);
+	msgbufp = PHYS_TO_DMAP(phys_avail[pa_indx]);
 	TSEXIT();
 }
 
diff --git a/sys/amd64/amd64/mem.c b/sys/amd64/amd64/mem.c
index 851f2df0e6e1..ab1e6cde6cd5 100644
--- a/sys/amd64/amd64/mem.c
+++ b/sys/amd64/amd64/mem.c
@@ -77,10 +77,10 @@ int
 memrw(struct cdev *dev, struct uio *uio, int flags)
 {
 	struct iovec *iov;
-	void *p;
+	void *p, *vd;
 	ssize_t orig_resid;
 	vm_prot_t prot;
-	u_long v, vd;
+	u_long v;
 	u_int c;
 	int error;
 
@@ -145,7 +145,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags)
 		case CDEV_MINOR_MEM:
 			if (v < dmaplimit) {
 				vd = PHYS_TO_DMAP(v);
-				error = uiomove((void *)vd, c, uio);
+				error = uiomove(vd, c, uio);
 				break;
 			}
 			if (v > cpu_getmaxphyaddr()) {
diff --git a/sys/amd64/amd64/minidump_machdep.c b/sys/amd64/amd64/minidump_machdep.c
index 43bf81a991bf..41f713faf149 100644
--- a/sys/amd64/amd64/minidump_machdep.c
+++ b/sys/amd64/amd64/minidump_machdep.c
@@ -193,8 +193,8 @@ cpu_minidumpsys(struct dumperinfo *di, const struct minidumpstate *state)
 		 */
 		pmapsize += PAGE_SIZE;
 		ii = pmap_pml4e_index(va);
-		pml4 = (uint64_t *)PHYS_TO_DMAP(KPML4phys) + ii;
-		pdp = (uint64_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
+		pml4 = PHYS_TO_DMAP(KPML4phys);
+		pdp = PHYS_TO_DMAP(pml4[ii] & PG_FRAME);
 		pdpe = atomic_load_64(&pdp[pmap_pdpe_index(va)]);
 		if ((pdpe & PG_V) == 0) {
 			va += NBPDP;
@@ -216,7 +216,7 @@ cpu_minidumpsys(struct dumperinfo *di, const struct minidumpstate *state)
 			continue;
 		}
 
-		pd = (uint64_t *)PHYS_TO_DMAP(pdpe & PG_FRAME);
+		pd = PHYS_TO_DMAP(pdpe & PG_FRAME);
 		for (n = 0; n < NPDEPG; n++, va += NBPDR) {
 			pde = atomic_load_64(&pd[pmap_pde_index(va)]);
 
@@ -240,7 +240,7 @@ cpu_minidumpsys(struct dumperinfo *di, const struct minidumpstate *state)
 			if (vm_phys_is_dumpable(pa))
 				vm_page_dump_add(state->dump_bitset, pa);
 			/* and for each valid page in this 2MB block */
-			pt = (uint64_t *)PHYS_TO_DMAP(pde & PG_FRAME);
+			pt = PHYS_TO_DMAP(pde & PG_FRAME);
 			for (k = 0; k < NPTEPG; k++) {
 				pte = atomic_load_64(&pt[k]);
 				if ((pte & PG_V) == 0)
@@ -325,8 +325,8 @@ cpu_minidumpsys(struct dumperinfo *di, const struct minidumpstate *state)
 	bzero(fakepd, sizeof(fakepd));
 	for (va = kva_layout.km_low; va < kva_end; va += NBPDP) {
 		ii = pmap_pml4e_index(va);
-		pml4 = (uint64_t *)PHYS_TO_DMAP(KPML4phys) + ii;
-		pdp = (uint64_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
+		pml4 = PHYS_TO_DMAP(KPML4phys);
+		pdp = PHYS_TO_DMAP(pml4[ii] & PG_FRAME);
 		pdpe = atomic_load_64(&pdp[pmap_pdpe_index(va)]);
 
 		/* We always write a page, even if it is zero */
@@ -360,7 +360,7 @@ cpu_minidumpsys(struct dumperinfo *di, const struct minidumpstate *state)
 
 		pa = pdpe & PG_FRAME;
 		if (PHYS_IN_DMAP(pa) && vm_phys_is_dumpable(pa)) {
-			pd = (uint64_t *)PHYS_TO_DMAP(pa);
+			pd = PHYS_TO_DMAP(pa);
 			error = blk_write(di, (char *)pd, 0, PAGE_SIZE);
 		} else {
 			/* Malformed pa, write the zeroed fakepd. */
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index eef3c5573e15..172b0b9e544e 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -355,29 +355,29 @@ start_all_aps(void)
 	/* Create a transient 1:1 mapping of low 4G */
 	if (la57) {
 		m_pml4 = pmap_page_alloc_below_4g(true);
-		v_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pml4));
+		v_pml4 = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pml4));
 	} else {
 		v_pml4 = &kernel_pmap->pm_pmltop[0];
 	}
 	m_pdp = pmap_page_alloc_below_4g(true);
-	v_pdp = (pdp_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pdp));
+	v_pdp = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pdp));
 	m_pd[0] = pmap_page_alloc_below_4g(false);
-	v_pd = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[0]));
+	v_pd = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[0]));
 	for (i = 0; i < NPDEPG; i++)
 		v_pd[i] = (i << PDRSHIFT) | X86_PG_V | X86_PG_RW | X86_PG_A |
 		    X86_PG_M | PG_PS;
 	m_pd[1] = pmap_page_alloc_below_4g(false);
-	v_pd = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[1]));
+	v_pd = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[1]));
 	for (i = 0; i < NPDEPG; i++)
 		v_pd[i] = (NBPDP + (i << PDRSHIFT)) | X86_PG_V | X86_PG_RW |
 		    X86_PG_A | X86_PG_M | PG_PS;
 	m_pd[2] = pmap_page_alloc_below_4g(false);
-	v_pd = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[2]));
+	v_pd = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[2]));
 	for (i = 0; i < NPDEPG; i++)
 		v_pd[i] = (2UL * NBPDP + (i << PDRSHIFT)) | X86_PG_V |
 		    X86_PG_RW | X86_PG_A | X86_PG_M | PG_PS;
 	m_pd[3] = pmap_page_alloc_below_4g(false);
-	v_pd = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[3]));
+	v_pd = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m_pd[3]));
 	for (i = 0; i < NPDEPG; i++)
 		v_pd[i] = (3UL * NBPDP + (i << PDRSHIFT)) | X86_PG_V |
 		    X86_PG_RW | X86_PG_A | X86_PG_M | PG_PS;
@@ -399,7 +399,7 @@ start_all_aps(void)
 	pmap_invalidate_all(kernel_pmap);
 
 	/* copy the AP 1st level boot code */
-	bcopy(mptramp_start, (void *)PHYS_TO_DMAP(boot_address), bootMP_size);
+	bcopy(mptramp_start, PHYS_TO_DMAP(boot_address), bootMP_size);
 	if (bootverbose)
 		printf("AP boot address %#lx\n", boot_address);
 
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index e5f21d326cfc..b9ecc230495d 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1340,7 +1340,7 @@ static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap,
 		    vm_offset_t va);
 
 static void	pmap_abort_ptp(pmap_t pmap, vm_offset_t va, vm_page_t mpte);
-static int pmap_change_props_locked(vm_offset_t va, vm_size_t size,
+static int pmap_change_props_locked(void *addr, vm_size_t size,
     vm_prot_t prot, int mode, int flags);
 static bool	pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va);
 static bool	pmap_demote_pde_locked(pmap_t pmap, pd_entry_t *pde,
@@ -1465,7 +1465,7 @@ pmap_pml5e_to_pml4e(pml5_entry_t *pml5e, vm_offset_t va)
 	pml4_entry_t *pml4e;
 
 	/* XXX MPASS(pmap_is_la57(pmap); */
-	pml4e = (pml4_entry_t *)PHYS_TO_DMAP(*pml5e & PG_FRAME);
+	pml4e = PHYS_TO_DMAP(*pml5e & PG_FRAME);
 	return (&pml4e[pmap_pml4e_index(va)]);
 }
 
@@ -1482,7 +1482,7 @@ pmap_pml4e(pmap_t pmap, vm_offset_t va)
 		PG_V = pmap_valid_bit(pmap);
 		if ((*pml5e & PG_V) == 0)
 			return (NULL);
-		pml4e = (pml4_entry_t *)PHYS_TO_DMAP(*pml5e & PG_FRAME);
+		pml4e = PHYS_TO_DMAP(*pml5e & PG_FRAME);
 	} else {
 		pml4e = pmap->pm_pmltop;
 	}
@@ -1502,7 +1502,7 @@ pmap_pml4e_to_pdpe(pml4_entry_t *pml4e, vm_offset_t va)
 {
 	pdp_entry_t *pdpe;
 
-	pdpe = (pdp_entry_t *)PHYS_TO_DMAP(*pml4e & PG_FRAME);
+	pdpe = PHYS_TO_DMAP(*pml4e & PG_FRAME);
 	return (&pdpe[pmap_pdpe_index(va)]);
 }
 
@@ -1528,7 +1528,7 @@ pmap_pdpe_to_pde(pdp_entry_t *pdpe, vm_offset_t va)
 
 	KASSERT((*pdpe & PG_PS) == 0,
 	    ("%s: pdpe %#lx is a leaf", __func__, *pdpe));
-	pde = (pd_entry_t *)PHYS_TO_DMAP(*pdpe & PG_FRAME);
+	pde = PHYS_TO_DMAP(*pdpe & PG_FRAME);
 	return (&pde[pmap_pde_index(va)]);
 }
 
@@ -1556,7 +1556,7 @@ pmap_pde_to_pte(pd_entry_t *pde, vm_offset_t va)
 
 	KASSERT((*pde & PG_PS) == 0,
 	    ("%s: pde %#lx is a leaf", __func__, *pde));
-	pte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME);
+	pte = PHYS_TO_DMAP(*pde & PG_FRAME);
 	return (&pte[pmap_pte_index(va)]);
 }
 
@@ -2136,11 +2136,11 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
 		vtopdem = ((1ul << (NPDEPGSHIFT + NPDPEPGSHIFT +
 		    NPML4EPGSHIFT + NPML5EPGSHIFT)) - 1) << 3;
 		PDmap = (vm_offset_t)P5Dmap;
-		kernel_pmap->pm_pmltop = (void *)PHYS_TO_DMAP(KPML5phys);
+		kernel_pmap->pm_pmltop = PHYS_TO_DMAP(KPML5phys);
 		kernel_pmap->pm_cr3 = KPML5phys;
 		pmap_pt_page_count_adj(kernel_pmap, 1);	/* top-level page */
 	} else {
-		kernel_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys);
+		kernel_pml4 = PHYS_TO_DMAP(KPML4phys);
 		kernel_pmap->pm_pmltop = kernel_pml4;
 		kernel_pmap->pm_cr3 = KPML4phys;
 	}
@@ -2612,7 +2612,7 @@ pmap_init(void)
 			continue;
 		/* Make the direct map consistent */
 		if (ppim->pa < dmaplimit && ppim->pa + ppim->sz <= dmaplimit) {
-			(void)pmap_change_attr((void *)PHYS_TO_DMAP(ppim->pa),
+			(void)pmap_change_attr(PHYS_TO_DMAP(ppim->pa),
 			    ppim->sz, ppim->mode);
 		}
 		if (!bootverbose)
@@ -3664,7 +3664,7 @@ pmap_invalidate_cache_pages(vm_page_t *pages, int count)
 		else if (cpu_vendor_id != CPU_VENDOR_INTEL)
 			mfence();
 		for (i = 0; i < count; i++) {
-			daddr = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pages[i]));
+			daddr = PHYS_TO_DMAP_ADDR(VM_PAGE_TO_PHYS(pages[i]));
 			eva = daddr + PAGE_SIZE;
 			for (; daddr < eva; daddr += cpu_clflush_line_size) {
 				if (useclflushopt)
@@ -3715,8 +3715,8 @@ pmap_flush_cache_phys_range(vm_paddr_t spa, vm_paddr_t epa, vm_memattr_t mattr)
 	    ("pmap_flush_cache_phys_range: epa not page-aligned"));
 
 	if (spa < dmaplimit) {
-		pmap_flush_cache_range(PHYS_TO_DMAP(spa), PHYS_TO_DMAP(MIN(
-		    dmaplimit, epa)));
+		pmap_flush_cache_range(PHYS_TO_DMAP_ADDR(spa),
+		    PHYS_TO_DMAP_ADDR(MIN(dmaplimit, epa)));
 		if (dmaplimit >= epa)
 			return;
 		spa = dmaplimit;
@@ -3926,7 +3926,7 @@ pmap_kremove(vm_offset_t va)
 void *
 pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
 {
-	return ((void *)PHYS_TO_DMAP(start));
+	return (PHYS_TO_DMAP(start));
 }
 
 /*
@@ -4233,7 +4233,7 @@ pmap_pinit_pml4(vm_page_t pml4pg)
 	pml4_entry_t *pm_pml4;
 	int i;
 
-	pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg));
+	pm_pml4 = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg));
 
 	/* Wire in kernel global address entries. */
 	for (i = 0; i < NKPML4E; i++) {
@@ -4276,7 +4276,7 @@ pmap_pinit_pml5(vm_page_t pml5pg)
 	pml5_entry_t *pm_pml5;
 	int i;
 
-	pm_pml5 = (pml5_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml5pg));
+	pm_pml5 = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml5pg));
 	for (i = 0; i < NPML5EPG / 2; i++)
 		pm_pml5[i] = 0;
 	for (; i < NPML5EPG; i++)
@@ -4289,7 +4289,7 @@ pmap_pinit_pml4_pti(vm_page_t pml4pgu)
 	pml4_entry_t *pm_pml4u;
 	int i;
 
-	pm_pml4u = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pgu));
+	pm_pml4u = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pgu));
 	for (i = 0; i < NPML4EPG; i++)
 		pm_pml4u[i] = pti_pml4[i];
 }
@@ -4299,7 +4299,7 @@ pmap_pinit_pml5_pti(vm_page_t pml5pgu)
 {
 	pml5_entry_t *pm_pml5u;
 
-	pm_pml5u = (pml5_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml5pgu));
+	pm_pml5u = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml5pgu));
 	pagezero(pm_pml5u);
 
 	/*
@@ -4378,7 +4378,7 @@ pmap_pinit_type(pmap_t pmap, enum pmap_type pm_type, int flags)
 	pmap_pt_page_count_pinit(pmap, 1);
 
 	pmltop_phys = VM_PAGE_TO_PHYS(pmltop_pg);
-	pmap->pm_pmltop = (pml5_entry_t *)PHYS_TO_DMAP(pmltop_phys);
+	pmap->pm_pmltop = PHYS_TO_DMAP(pmltop_phys);
 
 	if (pmap_pcid_enabled) {
 		if (pmap->pm_pcidp == NULL)
@@ -4414,7 +4414,7 @@ pmap_pinit_type(pmap_t pmap, enum pmap_type pm_type, int flags)
 			pmltop_pgu = pmap_alloc_pt_page(NULL, 0,
 			    VM_ALLOC_WIRED | VM_ALLOC_WAITOK);
 			pmap_pt_page_count_pinit(pmap, 1);
-			pmap->pm_pmltopu = (pml4_entry_t *)PHYS_TO_DMAP(
+			pmap->pm_pmltopu = PHYS_TO_DMAP(
 			    VM_PAGE_TO_PHYS(pmltop_pgu));
 			if (pmap_is_la57(pmap))
 				pmap_pinit_pml5_pti(pmltop_pgu);
@@ -4489,7 +4489,7 @@ pmap_allocpte_getpml4(pmap_t pmap, struct rwlock **lockp, vm_offset_t va,
 	} else {
 		allocated = false;
 	}
-	pml4 = (pml4_entry_t *)PHYS_TO_DMAP(*pml5 & PG_FRAME);
+	pml4 = PHYS_TO_DMAP(*pml5 & PG_FRAME);
 	pml4 = &pml4[pmap_pml4e_index(va)];
 	if ((*pml4 & PG_V) == 0) {
 		pml4pg = PHYS_TO_VM_PAGE(*pml5 & PG_FRAME);
@@ -4530,7 +4530,7 @@ pmap_allocpte_getpdp(pmap_t pmap, struct rwlock **lockp, vm_offset_t va,
 	} else {
 		allocated = false;
 	}
-	pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
+	pdp = PHYS_TO_DMAP(*pml4 & PG_FRAME);
 	pdp = &pdp[pmap_pdpe_index(va)];
 	if ((*pdp & PG_V) == 0) {
 		pdppg = PHYS_TO_VM_PAGE(*pml4 & PG_FRAME);
@@ -4683,7 +4683,7 @@ pmap_allocpte_nosleep(pmap_t pmap, vm_pindex_t ptepindex, struct rwlock **lockp,
 			pdpg = PHYS_TO_VM_PAGE(*pdp & PG_FRAME);
 			pdpg->ref_count++;
 		}
-		pd = (pd_entry_t *)PHYS_TO_DMAP(*pdp & PG_FRAME);
+		pd = PHYS_TO_DMAP(*pdp & PG_FRAME);
 
 		/* Now we know where the page directory page is */
 		pd = &pd[pmap_pde_index(va)];
@@ -4752,7 +4752,7 @@ retry:
 			else
 				return (NULL);
 		}
-		pde = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pdpg));
+		pde = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pdpg));
 		pde = &pde[pmap_pde_index(va)];
 	} else
 		panic("pmap_alloc_pde: missing page table page for va %#lx",
@@ -4912,24 +4912,24 @@ pmap_kmsan_shadow_map_page_array(vm_paddr_t pdppa, vm_size_t size)
 	npde = size / NBPDR;
 
 	dummypa = vm_phys_early_alloc(-1, PAGE_SIZE);
-	pagezero((void *)PHYS_TO_DMAP(dummypa));
+	pagezero(PHYS_TO_DMAP(dummypa));
 
 	dummypt = vm_phys_early_alloc(-1, PAGE_SIZE);
-	pagezero((void *)PHYS_TO_DMAP(dummypt));
+	pagezero(PHYS_TO_DMAP(dummypt));
 	dummypd = vm_phys_early_alloc(-1, PAGE_SIZE * npdpg);
 	for (i = 0; i < npdpg; i++)
-		pagezero((void *)PHYS_TO_DMAP(dummypd + ptoa(i)));
+		pagezero(PHYS_TO_DMAP(dummypd + ptoa(i)));
 
-	pte = (pt_entry_t *)PHYS_TO_DMAP(dummypt);
+	pte = PHYS_TO_DMAP(dummypt);
 	for (i = 0; i < NPTEPG; i++)
 		pte[i] = (pt_entry_t)(dummypa | X86_PG_V | X86_PG_RW |
 		    X86_PG_A | X86_PG_M | pg_nx);
 
-	pde = (pd_entry_t *)PHYS_TO_DMAP(dummypd);
+	pde = PHYS_TO_DMAP(dummypd);
 	for (i = 0; i < npde; i++)
 		pde[i] = (pd_entry_t)(dummypt | X86_PG_V | X86_PG_RW | pg_nx);
 
-	pdpe = (pdp_entry_t *)PHYS_TO_DMAP(pdppa);
+	pdpe = PHYS_TO_DMAP(pdppa);
 	for (i = 0; i < npdpg; i++)
 		pdpe[i] = (pdp_entry_t)(dummypd + ptoa(i) | X86_PG_V |
 		    X86_PG_RW | pg_nx);
@@ -4977,7 +4977,7 @@ pmap_page_array_startup(long pages)
 		if ((*pdpe & X86_PG_V) == 0) {
 			pa = vm_phys_early_alloc(domain, PAGE_SIZE);
 			dump_add_page(pa);
-			pagezero((void *)PHYS_TO_DMAP(pa));
+			pagezero(PHYS_TO_DMAP(pa));
 			*pdpe = (pdp_entry_t)(pa | X86_PG_V | X86_PG_RW |
 			    X86_PG_A | X86_PG_M);
 		}
@@ -5549,7 +5549,7 @@ retry:
 	PV_STAT(counter_u64_add(pc_chunk_count, 1));
 	PV_STAT(counter_u64_add(pc_chunk_allocs, 1));
 	dump_add_page(m->phys_addr);
-	pc = (void *)PHYS_TO_DMAP(m->phys_addr);
+	pc = PHYS_TO_DMAP(m->phys_addr);
 	pc->pc_pmap = pmap;
 	pc->pc_map[0] = PC_FREEN & ~1ul;	/* preallocated bit 0 */
 	pc->pc_map[1] = PC_FREEN;
@@ -5649,7 +5649,7 @@ retry:
 		PV_STAT(counter_u64_add(pc_chunk_count, 1));
 		PV_STAT(counter_u64_add(pc_chunk_allocs, 1));
 		dump_add_page(m->phys_addr);
-		pc = (void *)PHYS_TO_DMAP(m->phys_addr);
+		pc = PHYS_TO_DMAP(m->phys_addr);
 		pc->pc_pmap = pmap;
 		pc->pc_map[0] = PC_FREEN;
 		pc->pc_map[1] = PC_FREEN;
@@ -6035,7 +6035,7 @@ pmap_demote_pde_mpte(pmap_t pmap, pd_entry_t *pde, vm_offset_t va,
 		}
 	}
 	mptepa = VM_PAGE_TO_PHYS(mpte);
-	firstpte = (pt_entry_t *)PHYS_TO_DMAP(mptepa);
+	firstpte = PHYS_TO_DMAP(mptepa);
 	newpde = mptepa | PG_M | PG_A | (oldpde & PG_U) | PG_RW | PG_V;
 	KASSERT((oldpde & (PG_M | PG_RW)) != PG_RW,
 	    ("pmap_demote_pde: oldpde is missing PG_M"));
@@ -6122,7 +6122,7 @@ pmap_remove_kernel_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va)
 	 * contains valid mappings.  Zero it to invalidate those mappings.
 	 */
 	if (vm_page_any_valid(mpte))
-		pagezero((void *)PHYS_TO_DMAP(mptepa));
+		pagezero(PHYS_TO_DMAP(mptepa));
 
 	/*
 	 * Demote the mapping.
@@ -6851,7 +6851,7 @@ pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va, vm_page_t mpte,
 	 * ineligible for promotion due to hardware errata, invalid, or does
 	 * not map the first 4KB physical page within a 2MB page.
 	 */
-	firstpte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME);
+	firstpte = PHYS_TO_DMAP(*pde & PG_FRAME);
 	newpde = *firstpte;
 	if (!pmap_allow_2m_x_page(pmap, pmap_pde_ept_executable(pmap, newpde)))
 		return (false);
@@ -7027,7 +7027,7 @@ restart:
 			    NULL, va);
 			if (mp == NULL)
 				goto allocf;
-			pdpe = (pdp_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mp));
+			pdpe = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mp));
 			pdpe = &pdpe[pmap_pdpe_index(va)];
 			origpte = *pdpe;
 			MPASS(origpte == 0);
@@ -7048,7 +7048,7 @@ restart:
 			    NULL, va);
 			if (mp == NULL)
 				goto allocf;
-			pde = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mp));
+			pde = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mp));
 			pde = &pde[pmap_pde_index(va)];
 			origpte = *pde;
 			MPASS(origpte == 0);
@@ -7411,7 +7411,7 @@ pmap_every_pte_zero(vm_paddr_t pa)
 	pt_entry_t *pt_end, *pte;
 
 	KASSERT((pa & PAGE_MASK) == 0, ("pa is misaligned"));
-	pte = (pt_entry_t *)PHYS_TO_DMAP(pa);
+	pte = PHYS_TO_DMAP(pa);
 	for (pt_end = pte + NPTEPG; pte < pt_end; pte++) {
 		if (*pte != 0)
 			return (false);
@@ -7757,7 +7757,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m,
 					return (NULL);
 			}
 		}
-		pte = (pt_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpte));
+		pte = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpte));
 		pte = &pte[pmap_pte_index(va)];
 	} else {
 		mpte = NULL;
@@ -8172,7 +8172,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
 		if (va_next > end_addr)
 			va_next = end_addr;
 
-		src_pte = (pt_entry_t *)PHYS_TO_DMAP(srcptepaddr);
+		src_pte = PHYS_TO_DMAP(srcptepaddr);
 		src_pte = &src_pte[pmap_pte_index(addr)];
 		dstmpte = NULL;
 		for (; addr < va_next; addr += PAGE_SIZE, src_pte++) {
@@ -8192,8 +8192,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
 			} else if ((dstmpte = pmap_allocpte(dst_pmap, addr,
 			    NULL)) == NULL)
 				goto out;
-			dst_pte = (pt_entry_t *)
-			    PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpte));
+			dst_pte = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpte));
 			dst_pte = &dst_pte[pmap_pte_index(addr)];
 			if (*dst_pte == 0 &&
 			    pmap_try_insert_pv_entry(dst_pmap, addr,
@@ -8256,13 +8255,13 @@ pmap_vmspace_copy(pmap_t dst_pmap, pmap_t src_pmap)
 void
 pmap_zero_page(vm_page_t m)
 {
-	vm_offset_t va;
+	void *va;
 
 #ifdef TSLOG_PAGEZERO
 	TSENTER();
 #endif
 	va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
-	pagezero((void *)va);
+	pagezero(va);
 #ifdef TSLOG_PAGEZERO
 	TSEXIT();
 #endif
@@ -8275,10 +8274,10 @@ pmap_zero_page(vm_page_t m)
 void
 pmap_zero_page_area(vm_page_t m, int off, int size)
 {
-	vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
+	void *va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
 
 	if (off == 0 && size == PAGE_SIZE)
-		pagezero((void *)va);
+		pagezero(va);
 	else
 		bzero((char *)va + off, size);
 }
@@ -8289,10 +8288,10 @@ pmap_zero_page_area(vm_page_t m, int off, int size)
 void
 pmap_copy_page(vm_page_t msrc, vm_page_t mdst)
 {
-	vm_offset_t src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc));
-	vm_offset_t dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst));
+	void *src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc));
+	void *dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst));
 
-	pagecopy((void *)src, (void *)dst);
+	pagecopy(src, dst);
 }
 
 int unmapped_buf_allowed = 1;
@@ -8555,8 +8554,7 @@ pmap_remove_pages(pmap_t pmap)
 				if ((tpte & (PG_PS | PG_V)) == PG_V) {
 					superpage = false;
 					ptepde = tpte;
-					pte = (pt_entry_t *)PHYS_TO_DMAP(tpte &
-					    PG_FRAME);
+					pte = PHYS_TO_DMAP(tpte & PG_FRAME);
 					pte = &pte[pmap_pte_index(pv->pv_va)];
 					tpte = *pte;
 				} else {
@@ -9396,7 +9394,8 @@ static void *
 pmap_mapdev_internal(vm_paddr_t pa, vm_size_t size, int mode, int flags)
 {
 	struct pmap_preinit_mapping *ppim;
-	vm_offset_t va, offset;
+	char *va;
+	vm_offset_t offset;
 	vm_size_t tmpsize;
 	int i;
 
@@ -9405,7 +9404,7 @@ pmap_mapdev_internal(vm_paddr_t pa, vm_size_t size, int mode, int flags)
 	pa = trunc_page(pa);
 
 	if (!pmap_initialized) {
-		va = 0;
+		va = NULL;
 		for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
 			ppim = pmap_preinit_mapping + i;
 			if (ppim->va == 0) {
@@ -9414,11 +9413,11 @@ pmap_mapdev_internal(vm_paddr_t pa, vm_size_t size, int mode, int flags)
 				ppim->mode = mode;
 				ppim->va = virtual_avail;
 				virtual_avail += size;
-				va = ppim->va;
+				va = (void *)ppim->va;
 				break;
 			}
 		}
-		if (va == 0)
+		if (va == NULL)
 			panic("%s: too many preinit mappings", __func__);
 	} else {
 		/*
@@ -9429,7 +9428,7 @@ pmap_mapdev_internal(vm_paddr_t pa, vm_size_t size, int mode, int flags)
 			if (ppim->pa == pa && ppim->sz == size &&
 			    (ppim->mode == mode ||
 			    (flags & MAPDEV_SETATTR) == 0))
-				return ((void *)(ppim->va + offset));
+				return ((char *)ppim->va + offset);
 		}
 		/*
 		 * If the specified range of physical addresses fits within
@@ -9445,18 +9444,20 @@ pmap_mapdev_internal(vm_paddr_t pa, vm_size_t size, int mode, int flags)
 			} else
 				i = 0;
 			if (!i)
-				return ((void *)(va + offset));
+				return (va + offset);
 		}
-		va = (vm_offset_t)kva_alloc(size);
-		if (va == 0)
+		va = kva_alloc(size);
+		if (va == NULL)
 			panic("%s: Couldn't allocate KVA", __func__);
 	}
 	for (tmpsize = 0; tmpsize < size; tmpsize += PAGE_SIZE)
-		pmap_kenter_attr(va + tmpsize, pa + tmpsize, mode);
-	pmap_invalidate_range(kernel_pmap, va, va + tmpsize);
+		pmap_kenter_attr((vm_offset_t)va + tmpsize, pa + tmpsize, mode);
+	pmap_invalidate_range(kernel_pmap, (vm_offset_t)va,
+	    (vm_offset_t)va + tmpsize);
 	if ((flags & MAPDEV_FLUSHCACHE) != 0)
-		pmap_invalidate_cache_range(va, va + tmpsize);
-	return ((void *)(va + offset));
+		pmap_invalidate_cache_range((vm_offset_t)va,
+		    (vm_offset_t)va + tmpsize);
+	return (va + offset);
 }
 
 void *
@@ -9561,7 +9562,7 @@ pmap_demote_pdpe(pmap_t pmap, pdp_entry_t *pdpe, vm_offset_t va, vm_page_t m)
 		pmap_pt_page_count_adj(pmap, 1);
 	}
 	pdpgpa = VM_PAGE_TO_PHYS(pdpg);
-	firstpde = (pd_entry_t *)PHYS_TO_DMAP(pdpgpa);
+	firstpde = PHYS_TO_DMAP(pdpgpa);
 	newpdpe = pdpgpa | PG_M | PG_A | (oldpdpe & PG_U) | PG_RW | PG_V;
 	KASSERT((oldpdpe & PG_A) != 0,
 	    ("pmap_demote_pdpe: oldpdpe is missing PG_A"));
@@ -9610,7 +9611,7 @@ pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma)
 	 * required for data coherence.
 	 */
 	if ((m->flags & PG_FICTITIOUS) == 0 &&
-	    pmap_change_attr((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE,
+	    pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE,
 	    m->md.pat_mode))
 		panic("memory attribute change on the direct map failed");
 }
@@ -9660,7 +9661,7 @@ pmap_change_attr(void *va, vm_size_t size, int mode)
 	int error;
 
 	PMAP_LOCK(kernel_pmap);
-	error = pmap_change_props_locked((vm_offset_t)va, size, PROT_NONE, mode,
+	error = pmap_change_props_locked(va, size, PROT_NONE, mode,
 	    MAPDEV_FLUSHCACHE);
 	PMAP_UNLOCK(kernel_pmap);
 	return (error);
@@ -9683,17 +9684,17 @@ pmap_change_prot(void *va, vm_size_t size, vm_prot_t prot)
 		return (EINVAL);
 
 	PMAP_LOCK(kernel_pmap);
-	error = pmap_change_props_locked((vm_offset_t)va, size, prot, -1,
+	error = pmap_change_props_locked(va, size, prot, -1,
 	    MAPDEV_ASSERTVALID);
 	PMAP_UNLOCK(kernel_pmap);
 	return (error);
 }
 
 static int
-pmap_change_props_locked(vm_offset_t va, vm_size_t size, vm_prot_t prot,
+pmap_change_props_locked(void *addr, vm_size_t size, vm_prot_t prot,
     int mode, int flags)
 {
-	vm_offset_t base, offset, tmpva;
+	vm_offset_t base, offset, tmpva, va;
 	vm_paddr_t pa_start, pa_end, pa_end1;
 	pdp_entry_t *pdpe;
 	pd_entry_t *pde, pde_bits, pde_mask;
@@ -9701,6 +9702,7 @@ pmap_change_props_locked(vm_offset_t va, vm_size_t size, vm_prot_t prot,
 	int error;
 	bool changed;
 
+	va = (vm_offset_t)addr;
 	PMAP_LOCK_ASSERT(kernel_pmap, MA_OWNED);
 	base = trunc_page(va);
 	offset = va & PAGE_MASK;
@@ -9956,7 +9958,7 @@ pmap_demote_DMAP(vm_paddr_t base, vm_size_t len, bool invalidate)
 	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "pmap_demote_DMAP");
 
 	if (len < NBPDP && base < dmaplimit) {
-		va = PHYS_TO_DMAP(base);
+		va = PHYS_TO_DMAP_ADDR(base);
 		changed = false;
 
 		/*
@@ -10517,7 +10519,7 @@ pmap_map_io_transient(vm_page_t page[], void *vaddr[], int count,
 			vaddr[i] = (void *)addr;
 			needs_mapping = true;
 		} else {
-			vaddr[i] = (void *)PHYS_TO_DMAP(paddr);
+			vaddr[i] = PHYS_TO_DMAP(paddr);
 		}
 	}
 
@@ -10584,7 +10586,7 @@ pmap_quick_enter_page(vm_page_t m)
 
 	paddr = VM_PAGE_TO_PHYS(m);
 	if (paddr < dmaplimit)
-		return ((void *)PHYS_TO_DMAP(paddr));
+		return (PHYS_TO_DMAP(paddr));
 	mtx_lock_spin(&qframe_mtx);
 	KASSERT(*vtopte(qframe) == 0, ("qframe busy"));
 
@@ -10779,9 +10781,8 @@ pmap_large_map(vm_paddr_t spa, vm_size_t len, void **addr,
 
 	/* See if DMAP can serve. */
 	if (spa + len <= dmaplimit) {
-		va = PHYS_TO_DMAP(spa);
-		*addr = (void *)va;
-		return (pmap_change_attr((void *)va, len, mattr));
+		*addr = PHYS_TO_DMAP(spa);
+		return (pmap_change_attr(*addr, len, mattr));
 	}
 
 	/*
@@ -11147,7 +11148,7 @@ pmap_pti_init(void)
 	pti_obj = vm_pager_allocate(OBJT_PHYS, NULL, 0, VM_PROT_ALL, 0, NULL);
 	VM_OBJECT_WLOCK(pti_obj);
 	pml4_pg = pmap_pti_alloc_page();
-	pti_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4_pg));
+	pti_pml4 = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4_pg));
 	for (va = kva_layout.km_low; va <= kva_layout.km_high &&
 	    va >= kva_layout.km_low && va > NBPML4; va += NBPML4) {
 		pdpe = pmap_pti_pdpe(va);
@@ -11282,7 +11283,7 @@ pmap_pti_pde(vm_offset_t va)
 		mphys = *pdpe & ~PAGE_MASK;
 	}
 
-	pde = (pd_entry_t *)PHYS_TO_DMAP(mphys);
+	pde = PHYS_TO_DMAP(mphys);
 	pd_idx = pmap_pde_index(va);
 	pde += pd_idx;
 	return (pde);
@@ -11320,7 +11321,7 @@ pmap_pti_pte(vm_offset_t va, bool *unwire_pde)
 		mphys = *pde & ~(PAGE_MASK | pg_nx);
 	}
 
-	pte = (pt_entry_t *)PHYS_TO_DMAP(mphys);
+	pte = PHYS_TO_DMAP(mphys);
 	pte += pmap_pte_index(va);
 
 	return (pte);
@@ -12100,7 +12101,7 @@ restart:
 			continue;
 		}
 		pa = pml4e & PG_FRAME;
-		pdp = (pdp_entry_t *)PHYS_TO_DMAP(pa);
+		pdp = PHYS_TO_DMAP(pa);
 
 		for (j = pmap_pdpe_index(sva); j < NPDPEPG; j++) {
 			pdpe = pdp[j];
@@ -12129,7 +12130,7 @@ restart:
 				sva += NBPDP;
 				goto restart;
 			}
-			pd = (pd_entry_t *)PHYS_TO_DMAP(pa);
+			pd = PHYS_TO_DMAP(pa);
 
 			for (k = pmap_pde_index(sva); k < NPDEPG; k++) {
 				pde = pd[k];
@@ -12158,7 +12159,7 @@ restart:
 					sva += NBPDR;
 					goto restart;
 				}
-				pt = (pt_entry_t *)PHYS_TO_DMAP(pa);
+				pt = PHYS_TO_DMAP(pa);
 
 				for (l = pmap_pte_index(sva); l < NPTEPG; l++,
 				    sva += PAGE_SIZE) {
@@ -12248,7 +12249,7 @@ DB_SHOW_COMMAND(phys2dmap, pmap_phys2dmap)
 
 	if (have_addr) {
 		a = (vm_paddr_t)addr;
-		db_printf("0x%jx\n", (uintmax_t)PHYS_TO_DMAP(a));
+		db_printf("%p\n", PHYS_TO_DMAP(a));
 	} else {
 		db_printf("show phys2dmap addr\n");
 	}
@@ -12276,7 +12277,7 @@ ptpages_show_pml4(vm_page_t pg4, int num_entries, uint64_t PG_V)
 	pd_entry_t *pd;
 	int i4, i3, i2;
 
-	pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg4));
+	pml4 = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg4));
 	for (i4 = 0; i4 < num_entries; i4++) {
 		if ((pml4[i4] & PG_V) == 0)
 			continue;
@@ -12286,7 +12287,7 @@ ptpages_show_pml4(vm_page_t pg4, int num_entries, uint64_t PG_V)
 			continue;
 		}
 		ptpages_show_page(3, i4, pg3);
-		pdp = (pdp_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg3));
+		pdp = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg3));
 		for (i3 = 0; i3 < NPDPEPG; i3++) {
 			if ((pdp[i3] & PG_V) == 0)
 				continue;
@@ -12296,7 +12297,7 @@ ptpages_show_pml4(vm_page_t pg4, int num_entries, uint64_t PG_V)
 				continue;
 			}
 			ptpages_show_page(2, i3, pg2);
-			pd = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg2));
+			pd = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pg2));
 			for (i2 = 0; i2 < NPDEPG; i2++) {
 				if ((pd[i2] & PG_V) == 0)
*** 2804 LINES SKIPPED ***


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ea61f8.462af.52ce2f98>