git: e27501388fc0 - main - pmap_qenter/qremove: Use void * instead of vm_offset_t
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 23 Apr 2026 18:16:14 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=e27501388fc0dc2a29f90cb24ba8d36e9bb6631f
commit e27501388fc0dc2a29f90cb24ba8d36e9bb6631f
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
pmap_qenter/qremove: Use void * instead of vm_offset_t
Effort: CHERI upstreaming
Reviewed by: kib
Sponsored by: AFRL, DARPA
Pull Request: https://github.com/freebsd/freebsd-src/pull/2068
---
sys/amd64/amd64/mp_machdep.c | 2 +-
sys/amd64/amd64/pmap.c | 17 ++++++++-------
sys/arm/arm/mem.c | 2 +-
sys/arm/arm/pmap-v6.c | 15 +++++++------
sys/arm/include/sf_buf.h | 4 ++--
sys/arm/nvidia/drm2/tegra_bo.c | 4 ++--
sys/arm64/arm64/pmap.c | 22 ++++++++++---------
sys/compat/linux/linux_vdso.c | 8 +++----
sys/compat/linuxkpi/common/src/linux_page.c | 23 ++++++++++----------
sys/dev/drm2/ttm/ttm_bo_util.c | 4 ++--
sys/dev/gve/gve_qpl.c | 12 +++++------
sys/dev/hwt/hwt_vm.c | 4 ++--
sys/dev/md/md.c | 11 +++++-----
sys/dev/pci/controller/pci_n1sdp.c | 8 +++----
sys/dev/spibus/spigen.c | 12 +++++------
sys/fs/nfsclient/nfs_clbio.c | 6 +++---
sys/fs/p9fs/p9fs_vnops.c | 6 +++---
sys/fs/smbfs/smbfs_io.c | 12 +++++------
sys/geom/geom_io.c | 2 +-
sys/i386/i386/mem.c | 2 +-
sys/i386/i386/pmap.c | 22 ++++++++++---------
sys/i386/i386/pmap_base.c | 4 ++--
sys/i386/i386/vm_machdep.c | 2 +-
sys/i386/include/pmap_base.h | 4 ++--
sys/kern/kern_kcov.c | 22 +++++++++----------
sys/kern/kern_physio.c | 5 ++---
sys/kern/kern_sharedpage.c | 6 +++---
sys/kern/vfs_aio.c | 4 ++--
sys/kern/vfs_bio.c | 33 +++++++++++++----------------
sys/kern/vfs_cluster.c | 10 ++++-----
sys/powerpc/aim/mmu_oea.c | 12 +++++------
sys/powerpc/aim/mmu_oea64.c | 21 ++++++++++++------
sys/powerpc/aim/mmu_radix.c | 31 +++++++++++++--------------
sys/powerpc/booke/pmap.c | 17 ++++++++-------
sys/powerpc/include/mmuvar.h | 4 ++--
sys/powerpc/powerpc/pmap_dispatch.c | 4 ++--
sys/riscv/riscv/pmap.c | 15 +++++++------
sys/sys/sf_buf.h | 2 +-
sys/vm/pmap.h | 4 ++--
sys/vm/swap_pager.c | 6 +++---
sys/vm/uma_core.c | 16 ++++++++------
sys/vm/vm_glue.c | 6 +++---
sys/vm/vm_kern.c | 2 +-
sys/vm/vnode_pager.c | 7 +++---
sys/x86/iommu/amd_drv.c | 4 ++--
45 files changed, 224 insertions(+), 215 deletions(-)
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index c5c56024f561..eef3c5573e15 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -324,7 +324,7 @@ amd64_mp_alloc_pcpu(void)
m = vm_page_alloc_noobj(VM_ALLOC_ZERO);
if (m == NULL)
panic("cannot alloc pcpu page for cpu %d", cpu);
- pmap_qenter((vm_offset_t)&__pcpu[cpu], &m, 1);
+ pmap_qenter(&__pcpu[cpu], &m, 1);
}
}
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index bc4fa33fa175..1f4be4cf1a50 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -2442,7 +2442,7 @@ pmap_init_pv_table(void)
vm_page_t m = vm_page_alloc_noobj_domain(domain, 0);
if (m == NULL)
panic("failed to allocate PV table page");
- pmap_qenter((vm_offset_t)pvd + j, &m, 1);
+ pmap_qenter((char *)pvd + j, &m, 1);
}
for (j = 0; j < s / sizeof(*pvd); j++) {
@@ -3939,9 +3939,10 @@ pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
-pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
+pmap_qenter(void *va, vm_page_t *ma, int count)
{
pt_entry_t *endpte, oldpte, pa, *pte;
+ vm_offset_t sva = (vm_offset_t)va;
vm_page_t m;
int cache_bits;
@@ -3970,11 +3971,11 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
-pmap_qremove(vm_offset_t sva, int count)
+pmap_qremove(void *sva, int count)
{
vm_offset_t va;
- va = sva;
+ va = (vm_offset_t)sva;
while (count-- > 0) {
/*
* pmap_enter() calls within the kernel virtual
@@ -3992,7 +3993,7 @@ pmap_qremove(vm_offset_t sva, int count)
pmap_kremove(va);
va += PAGE_SIZE;
}
- pmap_invalidate_range(kernel_pmap, sva, va);
+ pmap_invalidate_range(kernel_pmap, (vm_offset_t)sva, va);
}
/***************************************************
@@ -9520,7 +9521,7 @@ pmap_unmapdev(void *p, vm_size_t size)
}
}
if (pmap_initialized) {
- pmap_qremove(va, atop(size));
+ pmap_qremove((void *)va, atop(size));
kva_free(va, size);
}
}
@@ -10545,7 +10546,7 @@ pmap_map_io_transient(vm_page_t page[], void *vaddr[], int count,
* thread to the CPU and instead add a global
* mapping visible to all CPUs.
*/
- pmap_qenter((vm_offset_t)vaddr[i], &page[i], 1);
+ pmap_qenter(vaddr[i], &page[i], 1);
} else {
pmap_kenter_attr((vm_offset_t)vaddr[i], paddr,
page[i]->md.pat_mode);
@@ -10570,7 +10571,7 @@ pmap_unmap_io_transient(vm_page_t page[], void *vaddr[], int count,
paddr = VM_PAGE_TO_PHYS(page[i]);
if (paddr >= dmaplimit) {
if (can_fault)
- pmap_qremove((vm_offset_t)vaddr[i], 1);
+ pmap_qremove(vaddr[i], 1);
vmem_free(kernel_arena, (vm_offset_t)vaddr[i],
PAGE_SIZE);
}
diff --git a/sys/arm/arm/mem.c b/sys/arm/arm/mem.c
index cec253f60b51..fbfd0759efc0 100644
--- a/sys/arm/arm/mem.c
+++ b/sys/arm/arm/mem.c
@@ -121,7 +121,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags)
c = min(c, (u_int)(PAGE_SIZE - o));
c = min(c, (u_int)iov->iov_len);
error = uiomove((caddr_t)&_tmppt[o], (int)c, uio);
- pmap_qremove((vm_offset_t)_tmppt, 1);
+ pmap_qremove(_tmppt, 1);
sx_xunlock(&tmppt_lock);
continue;
}
diff --git a/sys/arm/arm/pmap-v6.c b/sys/arm/arm/pmap-v6.c
index a87e9ead64cd..5fe3d701e7ed 100644
--- a/sys/arm/arm/pmap-v6.c
+++ b/sys/arm/arm/pmap-v6.c
@@ -1819,8 +1819,9 @@ pmap_init(void)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
-pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
+pmap_qenter(void *va, vm_page_t *ma, int count)
{
+ vm_offset_t sva = (vm_offset_t)va;
u_int anychanged;
pt2_entry_t *epte2p, *pte2p, pte2;
vm_page_t m;
@@ -1851,16 +1852,16 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
-pmap_qremove(vm_offset_t sva, int count)
+pmap_qremove(void *sva, int count)
{
vm_offset_t va;
- va = sva;
+ va = (vm_offset_t)sva;
while (count-- > 0) {
pmap_kremove(va);
va += PAGE_SIZE;
}
- tlb_flush_range(sva, va - sva);
+ tlb_flush_range((vm_offset_t)sva, va - (vm_offset_t)sva);
}
/*
@@ -2946,7 +2947,7 @@ pmap_pv_reclaim(pmap_t locked_pmap)
PV_STAT(pc_chunk_frees++);
/* Entire chunk is free; return it. */
m_pc = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
- pmap_qremove((vm_offset_t)pc, 1);
+ pmap_qremove(pc, 1);
pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc);
break;
}
@@ -2979,7 +2980,7 @@ free_pv_chunk(struct pv_chunk *pc)
PV_STAT(pc_chunk_frees++);
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
- pmap_qremove((vm_offset_t)pc, 1);
+ pmap_qremove(pc, 1);
vm_page_unwire_noq(m);
vm_page_free(m);
pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc);
@@ -3088,7 +3089,7 @@ retry:
PV_STAT(pc_chunk_count++);
PV_STAT(pc_chunk_allocs++);
pc = (struct pv_chunk *)pmap_pte2list_alloc(&pv_vafree);
- pmap_qenter((vm_offset_t)pc, &m, 1);
+ pmap_qenter(pc, &m, 1);
pc->pc_pmap = pmap;
pc->pc_map[0] = pc_freemask[0] & ~1ul; /* preallocated bit 0 */
for (field = 1; field < _NPCM; field++)
diff --git a/sys/arm/include/sf_buf.h b/sys/arm/include/sf_buf.h
index 2aa8ee3789c9..1e4066d58c81 100644
--- a/sys/arm/include/sf_buf.h
+++ b/sys/arm/include/sf_buf.h
@@ -33,14 +33,14 @@ static inline void
sf_buf_map(struct sf_buf *sf, int flags)
{
- pmap_qenter(sf->kva, &(sf->m), 1);
+ pmap_qenter((void *)sf->kva, &(sf->m), 1);
}
static inline int
sf_buf_unmap(struct sf_buf *sf)
{
- pmap_qremove(sf->kva, 1);
+ pmap_qremove((void *)sf->kva, 1);
return (1);
}
#endif /* !_MACHINE_SF_BUF_H_ */
diff --git a/sys/arm/nvidia/drm2/tegra_bo.c b/sys/arm/nvidia/drm2/tegra_bo.c
index 73ba82f2f883..c173936556ed 100644
--- a/sys/arm/nvidia/drm2/tegra_bo.c
+++ b/sys/arm/nvidia/drm2/tegra_bo.c
@@ -58,7 +58,7 @@ tegra_bo_destruct(struct tegra_bo *bo)
size = round_page(bo->gem_obj.size);
if (bo->vbase != 0)
- pmap_qremove(bo->vbase, bo->npages);
+ pmap_qremove((void *)bo->vbase, bo->npages);
vm_page_iter_init(&pages, bo->cdev_pager);
VM_OBJECT_WLOCK(bo->cdev_pager);
@@ -166,7 +166,7 @@ tegra_bo_init_pager(struct tegra_bo *bo)
}
VM_OBJECT_WUNLOCK(bo->cdev_pager);
- pmap_qenter(bo->vbase, bo->m, bo->npages);
+ pmap_qenter((void *)bo->vbase, bo->m, bo->npages);
return (0);
}
diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c
index 0956f33bcd01..f715fe4f3222 100644
--- a/sys/arm64/arm64/pmap.c
+++ b/sys/arm64/arm64/pmap.c
@@ -1649,7 +1649,7 @@ pmap_init_pv_table(void)
VM_ALLOC_ZERO);
if (m == NULL)
panic("failed to allocate PV table page");
- pmap_qenter((vm_offset_t)pvd + j, &m, 1);
+ pmap_qenter((char *)pvd + j, &m, 1);
}
for (j = 0; j < s / sizeof(*pvd); j++) {
@@ -2575,7 +2575,7 @@ pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
-pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
+pmap_qenter(void *sva, vm_page_t *ma, int count)
{
pd_entry_t *pde;
pt_entry_t attr, old_l3e, *pte;
@@ -2584,7 +2584,7 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
int i, lvl;
old_l3e = 0;
- va = sva;
+ va = (vm_offset_t)sva;
for (i = 0; i < count; i++) {
pde = pmap_pde(kernel_pmap, va, &lvl);
KASSERT(pde != NULL,
@@ -2602,7 +2602,8 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
va += L3_SIZE;
}
if ((old_l3e & ATTR_DESCR_VALID) != 0)
- pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, (vm_offset_t)sva, va,
+ true);
else {
/*
* Because the old entries were invalid and the new mappings
@@ -2617,16 +2618,17 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
* kernel -- it is meant only for temporary mappings.
*/
void
-pmap_qremove(vm_offset_t sva, int count)
+pmap_qremove(void *sva, int count)
{
pt_entry_t *pte;
vm_offset_t va;
- KASSERT(ADDR_IS_CANONICAL(sva),
- ("%s: Address not in canonical form: %lx", __func__, sva));
- KASSERT(ADDR_IS_KERNEL(sva), ("usermode va %lx", sva));
+ va = (vm_offset_t)sva;
+
+ KASSERT(ADDR_IS_CANONICAL(va),
+ ("%s: Address not in canonical form: %p", __func__, sva));
+ KASSERT(ADDR_IS_KERNEL(va), ("usermode va %p", sva));
- va = sva;
while (count-- > 0) {
pte = pmap_pte_exists(kernel_pmap, va, 3, NULL);
if (pte != NULL) {
@@ -2635,7 +2637,7 @@ pmap_qremove(vm_offset_t sva, int count)
va += PAGE_SIZE;
}
- pmap_s1_invalidate_range(kernel_pmap, sva, va, true);
+ pmap_s1_invalidate_range(kernel_pmap, (vm_offset_t)sva, va, true);
}
/***************************************************
diff --git a/sys/compat/linux/linux_vdso.c b/sys/compat/linux/linux_vdso.c
index a415a92783de..6e66aff69378 100644
--- a/sys/compat/linux/linux_vdso.c
+++ b/sys/compat/linux/linux_vdso.c
@@ -64,12 +64,12 @@ __elfN(linux_shared_page_init)(char **mapping, vm_size_t size)
{
vm_page_t m;
vm_object_t obj;
- vm_offset_t addr;
+ char *addr;
size_t n, pages;
pages = size / PAGE_SIZE;
- addr = kva_alloc(size);
+ addr = (char *)kva_alloc(size);
obj = vm_pager_allocate(OBJT_PHYS, 0, size,
VM_PROT_DEFAULT, 0, NULL);
VM_OBJECT_WLOCK(obj);
@@ -81,7 +81,7 @@ __elfN(linux_shared_page_init)(char **mapping, vm_size_t size)
pmap_qenter(addr + n * PAGE_SIZE, &m, 1);
}
VM_OBJECT_WUNLOCK(obj);
- *mapping = (char *)addr;
+ *mapping = addr;
return (obj);
}
@@ -92,7 +92,7 @@ __elfN(linux_shared_page_fini)(vm_object_t obj, void *mapping,
vm_offset_t va;
va = (vm_offset_t)mapping;
- pmap_qremove(va, size / PAGE_SIZE);
+ pmap_qremove(mapping, size / PAGE_SIZE);
kva_free(va, size);
vm_object_deallocate(obj);
}
diff --git a/sys/compat/linuxkpi/common/src/linux_page.c b/sys/compat/linuxkpi/common/src/linux_page.c
index d8b65a12dc67..41f5fd557330 100644
--- a/sys/compat/linuxkpi/common/src/linux_page.c
+++ b/sys/compat/linuxkpi/common/src/linux_page.c
@@ -424,17 +424,17 @@ iounmap(void *addr)
void *
vmap(struct page **pages, unsigned int count, unsigned long flags, int prot)
{
- vm_offset_t off;
+ void *off;
size_t size;
size = count * PAGE_SIZE;
- off = kva_alloc(size);
- if (off == 0)
+ off = (void *)kva_alloc(size);
+ if (off == NULL)
return (NULL);
- vmmap_add((void *)off, size);
+ vmmap_add(off, size);
pmap_qenter(off, pages, count);
- return ((void *)off);
+ return (off);
}
#define VMAP_MAX_CHUNK_SIZE (65536U / sizeof(struct vm_page)) /* KMEM_ZMAX */
@@ -443,17 +443,18 @@ void *
linuxkpi_vmap_pfn(unsigned long *pfns, unsigned int count, int prot)
{
vm_page_t m, *ma, fma;
- vm_offset_t off, coff;
+ void *off;
+ char *coff;
vm_paddr_t pa;
vm_memattr_t attr;
size_t size;
unsigned int i, c, chunk;
size = ptoa(count);
- off = kva_alloc(size);
- if (off == 0)
+ off = (void *)kva_alloc(size);
+ if (off == NULL)
return (NULL);
- vmmap_add((void *)off, size);
+ vmmap_add(off, size);
chunk = MIN(count, VMAP_MAX_CHUNK_SIZE);
attr = pgprot2cachemode(prot);
@@ -489,7 +490,7 @@ linuxkpi_vmap_pfn(unsigned long *pfns, unsigned int count, int prot)
free(fma, M_TEMP);
free(ma, M_TEMP);
- return ((void *)off);
+ return (off);
}
void
@@ -500,7 +501,7 @@ vunmap(void *addr)
vmmap = vmmap_remove(addr);
if (vmmap == NULL)
return;
- pmap_qremove((vm_offset_t)addr, vmmap->vm_size / PAGE_SIZE);
+ pmap_qremove(addr, vmmap->vm_size / PAGE_SIZE);
kva_free((vm_offset_t)addr, vmmap->vm_size);
kfree(vmmap);
}
diff --git a/sys/dev/drm2/ttm/ttm_bo_util.c b/sys/dev/drm2/ttm/ttm_bo_util.c
index 9d3f4103f82e..1734a8103cde 100644
--- a/sys/dev/drm2/ttm/ttm_bo_util.c
+++ b/sys/dev/drm2/ttm/ttm_bo_util.c
@@ -517,7 +517,7 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
pmap_page_set_memattr(ttm->pages[start_page +
i], prot);
}
- pmap_qenter((vm_offset_t)map->virtual,
+ pmap_qenter(map->virtual,
&ttm->pages[start_page], num_pages);
}
}
@@ -571,7 +571,7 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map)
pmap_unmapdev(map->virtual, map->size);
break;
case ttm_bo_map_vmap:
- pmap_qremove((vm_offset_t)(map->virtual), map->num_pages);
+ pmap_qremove(map->virtual, map->num_pages);
kva_free((vm_offset_t)map->virtual,
map->num_pages * PAGE_SIZE);
break;
diff --git a/sys/dev/gve/gve_qpl.c b/sys/dev/gve/gve_qpl.c
index 0e7098dcd4a1..1c6a58372365 100644
--- a/sys/dev/gve/gve_qpl.c
+++ b/sys/dev/gve/gve_qpl.c
@@ -46,7 +46,7 @@ gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl)
}
if (qpl->kva) {
- pmap_qremove(qpl->kva, qpl->num_pages);
+ pmap_qremove((void *)qpl->kva, qpl->num_pages);
kva_free(qpl->kva, PAGE_SIZE * qpl->num_pages);
}
@@ -59,7 +59,7 @@ gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl)
*/
if (vm_page_unwire_noq(qpl->pages[i])) {
if (!qpl->kva) {
- pmap_qremove((vm_offset_t)qpl->dmas[i].cpu_addr, 1);
+ pmap_qremove(qpl->dmas[i].cpu_addr, 1);
kva_free((vm_offset_t)qpl->dmas[i].cpu_addr, PAGE_SIZE);
}
vm_page_free(qpl->pages[i]);
@@ -126,7 +126,7 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva)
err = ENOMEM;
goto abort;
}
- pmap_qenter((vm_offset_t)qpl->dmas[i].cpu_addr, &(qpl->pages[i]), 1);
+ pmap_qenter(qpl->dmas[i].cpu_addr, &(qpl->pages[i]), 1);
} else
qpl->dmas[i].cpu_addr = (void *)(qpl->kva + (PAGE_SIZE * i));
@@ -135,7 +135,7 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva)
}
if (single_kva)
- pmap_qenter(qpl->kva, qpl->pages, npages);
+ pmap_qenter((void *)qpl->kva, qpl->pages, npages);
for (i = 0; i < npages; i++) {
err = gve_dmamap_create(priv, /*size=*/PAGE_SIZE, /*align=*/PAGE_SIZE,
@@ -244,7 +244,7 @@ void
gve_mextadd_free(struct mbuf *mbuf)
{
vm_page_t page = (vm_page_t)mbuf->m_ext.ext_arg1;
- vm_offset_t va = (vm_offset_t)mbuf->m_ext.ext_arg2;
+ void *va = mbuf->m_ext.ext_arg2;
/*
* Free the page only if this is the last ref.
@@ -253,7 +253,7 @@ gve_mextadd_free(struct mbuf *mbuf)
*/
if (__predict_false(vm_page_unwire_noq(page))) {
pmap_qremove(va, 1);
- kva_free(va, PAGE_SIZE);
+ kva_free((vm_offset_t)va, PAGE_SIZE);
vm_page_free(page);
}
}
diff --git a/sys/dev/hwt/hwt_vm.c b/sys/dev/hwt/hwt_vm.c
index 6c55e218dcec..a3e906d71099 100644
--- a/sys/dev/hwt/hwt_vm.c
+++ b/sys/dev/hwt/hwt_vm.c
@@ -171,7 +171,7 @@ retry:
VM_OBJECT_WLOCK(vm->obj);
vm_page_insert(m, vm->obj, i);
if (kva_req)
- pmap_qenter(vm->kvaddr + i * PAGE_SIZE, &m, 1);
+ pmap_qenter((char *)vm->kvaddr + i * PAGE_SIZE, &m, 1);
VM_OBJECT_WUNLOCK(vm->obj);
}
@@ -442,7 +442,7 @@ hwt_vm_destroy_buffers(struct hwt_vm *vm)
int i;
if (vm->ctx->hwt_backend->kva_req && vm->kvaddr != 0) {
- pmap_qremove(vm->kvaddr, vm->npages);
+ pmap_qremove((void *)vm->kvaddr, vm->npages);
kva_free(vm->kvaddr, vm->npages * PAGE_SIZE);
}
VM_OBJECT_WLOCK(vm->obj);
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 8d2908264aac..e2c0451b5843 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -286,7 +286,7 @@ struct md_s {
struct {
struct vnode *vnode;
char file[PATH_MAX];
- vm_offset_t kva;
+ char *kva;
} s_vnode;
/* MD_SWAP related fields */
@@ -983,8 +983,7 @@ unmapped_step:
("npages %d too large", npages));
pmap_qenter(sc->s_vnode.kva, &bp->bio_ma[atop(ma_offs)],
npages);
- aiov.iov_base = (void *)(sc->s_vnode.kva + (ma_offs &
- PAGE_MASK));
+ aiov.iov_base = sc->s_vnode.kva + (ma_offs & PAGE_MASK);
aiov.iov_len = iolen;
auio.uio_iov = &aiov;
auio.uio_iovcnt = 1;
@@ -1513,7 +1512,7 @@ mdcreate_vnode(struct md_s *sc, struct md_req *mdr, struct thread *td)
goto bad;
}
- sc->s_vnode.kva = kva_alloc(maxphys + PAGE_SIZE);
+ sc->s_vnode.kva = (char *)kva_alloc(maxphys + PAGE_SIZE);
return (0);
bad:
VOP_UNLOCK(nd.ni_vp);
@@ -1567,8 +1566,8 @@ mddestroy(struct md_s *sc, struct thread *td)
sc->flags & MD_READONLY ? FREAD : (FREAD|FWRITE),
sc->cred, td);
}
- if (sc->s_vnode.kva != 0)
- kva_free(sc->s_vnode.kva, maxphys + PAGE_SIZE);
+ if (sc->s_vnode.kva != NULL)
+ kva_free((vm_offset_t)sc->s_vnode.kva, maxphys + PAGE_SIZE);
break;
case MD_SWAP:
if (sc->s_swap.object != NULL)
diff --git a/sys/dev/pci/controller/pci_n1sdp.c b/sys/dev/pci/controller/pci_n1sdp.c
index 22f0ea27d45b..c1f8624e45aa 100644
--- a/sys/dev/pci/controller/pci_n1sdp.c
+++ b/sys/dev/pci/controller/pci_n1sdp.c
@@ -83,7 +83,7 @@ static int
n1sdp_init(struct generic_pcie_n1sdp_softc *sc)
{
struct pcie_discovery_data *shared_data;
- vm_offset_t vaddr;
+ void *vaddr;
vm_paddr_t paddr_rc;
vm_paddr_t paddr;
vm_page_t m[BDF_TABLE_SIZE / PAGE_SIZE];
@@ -100,8 +100,8 @@ n1sdp_init(struct generic_pcie_n1sdp_softc *sc)
MPASS(m[i] != NULL);
}
- vaddr = kva_alloc((vm_size_t)BDF_TABLE_SIZE);
- if (vaddr == 0) {
+ vaddr = (void *)kva_alloc((vm_size_t)BDF_TABLE_SIZE);
+ if (vaddr == NULL) {
printf("%s: Can't allocate KVA memory.", __func__);
error = ENXIO;
goto out;
@@ -130,7 +130,7 @@ n1sdp_init(struct generic_pcie_n1sdp_softc *sc)
out_pmap:
pmap_qremove(vaddr, nitems(m));
- kva_free(vaddr, (vm_size_t)BDF_TABLE_SIZE);
+ kva_free((vm_offset_t)vaddr, (vm_size_t)BDF_TABLE_SIZE);
out:
vm_phys_fictitious_unreg_range(paddr, paddr + BDF_TABLE_SIZE);
diff --git a/sys/dev/spibus/spigen.c b/sys/dev/spibus/spigen.c
index 94f276d239f3..400ae1e139ad 100644
--- a/sys/dev/spibus/spigen.c
+++ b/sys/dev/spibus/spigen.c
@@ -73,7 +73,7 @@ struct spigen_softc {
struct spigen_mmap {
vm_object_t bufobj;
- vm_offset_t kvaddr;
+ void *kvaddr;
size_t bufsize;
};
@@ -235,10 +235,10 @@ spigen_transfer_mmapped(struct cdev *cdev, struct spigen_transfer_mmapped *stm)
if (mmap->bufsize < stm->stm_command_length + stm->stm_data_length)
return (E2BIG);
- transfer.tx_cmd = transfer.rx_cmd = (void *)((uintptr_t)mmap->kvaddr);
+ transfer.tx_cmd = transfer.rx_cmd = mmap->kvaddr;
transfer.tx_cmd_sz = transfer.rx_cmd_sz = stm->stm_command_length;
transfer.tx_data = transfer.rx_data =
- (void *)((uintptr_t)mmap->kvaddr + stm->stm_command_length);
+ (void *)((char *)mmap->kvaddr + stm->stm_command_length);
transfer.tx_data_sz = transfer.rx_data_sz = stm->stm_data_length;
error = SPIBUS_TRANSFER(device_get_parent(dev), dev, &transfer);
@@ -283,9 +283,9 @@ spigen_mmap_cleanup(void *arg)
{
struct spigen_mmap *mmap = arg;
- if (mmap->kvaddr != 0) {
+ if (mmap->kvaddr != NULL) {
pmap_qremove(mmap->kvaddr, mmap->bufsize / PAGE_SIZE);
- kva_free(mmap->kvaddr, mmap->bufsize);
+ kva_free((vm_offset_t)mmap->kvaddr, mmap->bufsize);
}
if (mmap->bufobj != NULL)
vm_object_deallocate(mmap->bufobj);
@@ -312,7 +312,7 @@ spigen_mmap_single(struct cdev *cdev, vm_ooffset_t *offset,
return (EBUSY);
mmap = malloc(sizeof(*mmap), M_DEVBUF, M_ZERO | M_WAITOK);
- if ((mmap->kvaddr = kva_alloc(size)) == 0) {
+ if ((mmap->kvaddr = (void *)kva_alloc(size)) == 0) {
spigen_mmap_cleanup(mmap);
return (ENOMEM);
}
diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c
index b534a2eb5555..421fb08761b1 100644
--- a/sys/fs/nfsclient/nfs_clbio.c
+++ b/sys/fs/nfsclient/nfs_clbio.c
@@ -116,7 +116,7 @@ ncl_getpages(struct vop_getpages_args *ap)
int i, error, nextoff, size, toff, count, npages;
struct uio uio;
struct iovec iov;
- vm_offset_t kva;
+ void *kva;
struct buf *bp;
struct vnode *vp;
struct thread *td;
@@ -180,13 +180,13 @@ ncl_getpages(struct vop_getpages_args *ap)
*/
bp = uma_zalloc(ncl_pbuf_zone, M_WAITOK);
- kva = (vm_offset_t) bp->b_data;
+ kva = bp->b_data;
pmap_qenter(kva, pages, npages);
VM_CNT_INC(v_vnodein);
VM_CNT_ADD(v_vnodepgsin, npages);
count = npages << PAGE_SHIFT;
- iov.iov_base = (caddr_t) kva;
+ iov.iov_base = kva;
iov.iov_len = count;
uio.uio_iov = &iov;
uio.uio_iovcnt = 1;
diff --git a/sys/fs/p9fs/p9fs_vnops.c b/sys/fs/p9fs/p9fs_vnops.c
index 081903d73e5e..7141e9700602 100644
--- a/sys/fs/p9fs/p9fs_vnops.c
+++ b/sys/fs/p9fs/p9fs_vnops.c
@@ -2179,7 +2179,7 @@ p9fs_putpages(struct vop_putpages_args *ap)
struct ucred *cred;
struct p9fs_node *np;
vm_page_t *pages;
- vm_offset_t kva;
+ void *kva;
struct buf *bp;
vp = ap->a_vp;
@@ -2205,13 +2205,13 @@ p9fs_putpages(struct vop_putpages_args *ap)
rtvals[i] = VM_PAGER_ERROR;
bp = uma_zalloc(p9fs_pbuf_zone, M_WAITOK);
- kva = (vm_offset_t) bp->b_data;
+ kva = bp->b_data;
pmap_qenter(kva, pages, npages);
VM_CNT_INC(v_vnodeout);
VM_CNT_ADD(v_vnodepgsout, count);
- iov.iov_base = (caddr_t) kva;
+ iov.iov_base = kva;
iov.iov_len = count;
uio.uio_iov = &iov;
uio.uio_iovcnt = 1;
diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c
index 8c484381ed59..8a37427aa4cb 100644
--- a/sys/fs/smbfs/smbfs_io.c
+++ b/sys/fs/smbfs/smbfs_io.c
@@ -425,7 +425,7 @@ smbfs_getpages(struct vop_getpages_args *ap)
int i, error, nextoff, size, toff, npages, count;
struct uio uio;
struct iovec iov;
- vm_offset_t kva;
+ void *kva;
struct buf *bp;
struct vnode *vp;
struct thread *td;
@@ -466,13 +466,13 @@ smbfs_getpages(struct vop_getpages_args *ap)
bp = uma_zalloc(smbfs_pbuf_zone, M_WAITOK);
- kva = (vm_offset_t) bp->b_data;
+ kva = bp->b_data;
pmap_qenter(kva, pages, npages);
VM_CNT_INC(v_vnodein);
VM_CNT_ADD(v_vnodepgsin, npages);
count = npages << PAGE_SHIFT;
- iov.iov_base = (caddr_t) kva;
+ iov.iov_base = kva;
iov.iov_len = count;
uio.uio_iov = &iov;
uio.uio_iovcnt = 1;
@@ -559,7 +559,7 @@ smbfs_putpages(struct vop_putpages_args *ap)
#else
struct uio uio;
struct iovec iov;
- vm_offset_t kva;
+ void *kva;
struct buf *bp;
int i, npages, count;
int *rtvals;
@@ -584,12 +584,12 @@ smbfs_putpages(struct vop_putpages_args *ap)
bp = uma_zalloc(smbfs_pbuf_zone, M_WAITOK);
- kva = (vm_offset_t) bp->b_data;
+ kva = bp->b_data;
pmap_qenter(kva, pages, npages);
VM_CNT_INC(v_vnodeout);
VM_CNT_ADD(v_vnodepgsout, count);
- iov.iov_base = (caddr_t) kva;
+ iov.iov_base = kva;
iov.iov_len = count;
uio.uio_iov = &iov;
uio.uio_iovcnt = 1;
diff --git a/sys/geom/geom_io.c b/sys/geom/geom_io.c
index 247a623bf1bf..2eb9b18999bf 100644
--- a/sys/geom/geom_io.c
+++ b/sys/geom/geom_io.c
@@ -782,7 +782,7 @@ retry:
}
}
atomic_add_int(&inflight_transient_maps, 1);
- pmap_qenter((vm_offset_t)addr, bp->bio_ma, OFF_TO_IDX(size));
+ pmap_qenter((void *)addr, bp->bio_ma, OFF_TO_IDX(size));
bp->bio_data = (caddr_t)addr + bp->bio_ma_offset;
bp->bio_flags |= BIO_TRANSIENT_MAPPING;
bp->bio_flags &= ~BIO_UNMAPPED;
diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c
index 3a3d6974f42e..d418506e6c09 100644
--- a/sys/i386/i386/mem.c
+++ b/sys/i386/i386/mem.c
@@ -142,7 +142,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags)
c = PAGE_SIZE - o;
c = min(c, (u_int)iov->iov_len);
error = uiomove((caddr_t)&ptvmmap[o], (int)c, uio);
- pmap_qremove((vm_offset_t)ptvmmap, 1);
+ pmap_qremove(ptvmmap, 1);
sx_xunlock(&memsxlock);
}
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index fcc6160bac3d..9d758bc2b63d 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -1845,11 +1845,13 @@ __CONCAT(PMTYPE, map)(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end,
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
static void
-__CONCAT(PMTYPE, qenter)(vm_offset_t sva, vm_page_t *ma, int count)
+__CONCAT(PMTYPE, qenter)(void *va, vm_page_t *ma, int count)
{
+ vm_offset_t sva;
pt_entry_t *endpte, oldpte, pa, *pte;
vm_page_t m;
+ sva = (vm_offset_t)va;
oldpte = 0;
pte = vtopte(sva);
endpte = pte + count;
@@ -1874,16 +1876,16 @@ __CONCAT(PMTYPE, qenter)(vm_offset_t sva, vm_page_t *ma, int count)
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
static void
-__CONCAT(PMTYPE, qremove)(vm_offset_t sva, int count)
+__CONCAT(PMTYPE, qremove)(void *sva, int count)
{
vm_offset_t va;
- va = sva;
+ va = (vm_offset_t)sva;
while (count-- > 0) {
pmap_kremove(va);
va += PAGE_SIZE;
}
- pmap_invalidate_range_int(kernel_pmap, sva, va);
+ pmap_invalidate_range_int(kernel_pmap, (vm_offset_t)sva, va);
}
/***************************************************
@@ -2085,7 +2087,7 @@ __CONCAT(PMTYPE, pinit)(pmap_t pmap)
#endif
}
- pmap_qenter((vm_offset_t)pmap->pm_pdir, pmap->pm_ptdpg, NPGPTD);
+ pmap_qenter(pmap->pm_pdir, pmap->pm_ptdpg, NPGPTD);
#ifdef PMAP_PAE_COMP
if ((cpu_feature & CPUID_PAT) == 0) {
pmap_invalidate_cache_range(
@@ -2220,7 +2222,7 @@ __CONCAT(PMTYPE, release)(pmap_t pmap)
KASSERT(CPU_EMPTY(&pmap->pm_active),
("releasing active pmap %p", pmap));
- pmap_qremove((vm_offset_t)pmap->pm_pdir, NPGPTD);
+ pmap_qremove(pmap->pm_pdir, NPGPTD);
for (i = 0; i < NPGPTD; i++) {
m = pmap->pm_ptdpg[i];
@@ -2414,7 +2416,7 @@ pmap_pv_reclaim(pmap_t locked_pmap)
PV_STAT(pc_chunk_frees++);
/* Entire chunk is free; return it. */
m_pc = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
- pmap_qremove((vm_offset_t)pc, 1);
+ pmap_qremove(pc, 1);
pmap_ptelist_free(&pv_vafree, (vm_offset_t)pc);
break;
}
@@ -2484,7 +2486,7 @@ free_pv_chunk(struct pv_chunk *pc)
PV_STAT(pc_chunk_frees++);
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
- pmap_qremove((vm_offset_t)pc, 1);
+ pmap_qremove(pc, 1);
vm_page_unwire_noq(m);
vm_page_free(m);
pmap_ptelist_free(&pv_vafree, (vm_offset_t)pc);
@@ -2556,7 +2558,7 @@ retry:
PV_STAT(pc_chunk_count++);
PV_STAT(pc_chunk_allocs++);
pc = (struct pv_chunk *)pmap_ptelist_alloc(&pv_vafree);
- pmap_qenter((vm_offset_t)pc, &m, 1);
+ pmap_qenter(pc, &m, 1);
pc->pc_pmap = pmap;
pc->pc_map[0] = pc_freemask[0] & ~1ul; /* preallocated bit 0 */
for (field = 1; field < _NPCM; field++)
@@ -5608,7 +5610,7 @@ __CONCAT(PMTYPE, unmapdev)(void *p, vm_size_t size)
}
}
if (pmap_initialized) {
- pmap_qremove(va, atop(size));
+ pmap_qremove((void *)va, atop(size));
kva_free(va, size);
}
}
diff --git a/sys/i386/i386/pmap_base.c b/sys/i386/i386/pmap_base.c
index cfa2faa304fd..0137a4fb26f1 100644
--- a/sys/i386/i386/pmap_base.c
+++ b/sys/i386/i386/pmap_base.c
@@ -844,14 +844,14 @@ pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
}
void
-pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
+pmap_qenter(void *sva, vm_page_t *ma, int count)
{
pmap_methods_ptr->pm_qenter(sva, ma, count);
}
void
-pmap_qremove(vm_offset_t sva, int count)
+pmap_qremove(void *sva, int count)
{
pmap_methods_ptr->pm_qremove(sva, count);
diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c
index 698d3b26813c..2d8491c38dab 100644
--- a/sys/i386/i386/vm_machdep.c
+++ b/sys/i386/i386/vm_machdep.c
@@ -622,7 +622,7 @@ sf_buf_invalidate(struct sf_buf *sf)
* existing mapping, in particular, the PAT
* settings are recalculated.
*/
- pmap_qenter(sf->kva, &m, 1);
+ pmap_qenter((void *)sf->kva, &m, 1);
pmap_invalidate_cache_range(sf->kva, sf->kva + PAGE_SIZE);
}
diff --git a/sys/i386/include/pmap_base.h b/sys/i386/include/pmap_base.h
index a82d8712fbb6..5ae2f3c8b366 100644
--- a/sys/i386/include/pmap_base.h
+++ b/sys/i386/include/pmap_base.h
@@ -99,8 +99,8 @@ struct pmap_methods {
vm_paddr_t (*pm_extract)(pmap_t, vm_offset_t);
vm_page_t (*pm_extract_and_hold)(pmap_t, vm_offset_t, vm_prot_t);
vm_offset_t (*pm_map)(vm_offset_t *, vm_paddr_t, vm_paddr_t, int);
- void (*pm_qenter)(vm_offset_t sva, vm_page_t *, int);
- void (*pm_qremove)(vm_offset_t, int);
+ void (*pm_qenter)(void *sva, vm_page_t *, int);
+ void (*pm_qremove)(void *, int);
void (*pm_release)(pmap_t);
void (*pm_protect)(pmap_t, vm_offset_t, vm_offset_t, vm_prot_t);
void (*pm_remove)(pmap_t, vm_offset_t, vm_offset_t);
diff --git a/sys/kern/kern_kcov.c b/sys/kern/kern_kcov.c
index c0f3d9dca6c6..fde032a03212 100644
--- a/sys/kern/kern_kcov.c
+++ b/sys/kern/kern_kcov.c
@@ -124,7 +124,7 @@ typedef enum {
struct kcov_info {
struct thread *thread; /* (l) */
vm_object_t bufobj; /* (o) */
- vm_offset_t kvaddr; /* (o) */
+ void *kvaddr; /* (o) */
size_t entries; /* (o) */
size_t bufsize; /* (o) */
kcov_state_t state; /* (s) */
@@ -206,9 +206,9 @@ trace_pc(uintptr_t ret)
if (info->mode != KCOV_MODE_TRACE_PC)
return;
- KASSERT(info->kvaddr != 0, ("%s: NULL buf while running", __func__));
+ KASSERT(info->kvaddr != NULL, ("%s: NULL buf while running", __func__));
- buf = (uint64_t *)info->kvaddr;
+ buf = info->kvaddr;
/* The first entry of the buffer holds the index */
index = buf[0];
@@ -237,9 +237,9 @@ trace_cmp(uint64_t type, uint64_t arg1, uint64_t arg2, uint64_t ret)
if (info->mode != KCOV_MODE_TRACE_CMP)
return (false);
- KASSERT(info->kvaddr != 0, ("%s: NULL buf while running", __func__));
+ KASSERT(info->kvaddr != NULL, ("%s: NULL buf while running", __func__));
- buf = (uint64_t *)info->kvaddr;
+ buf = info->kvaddr;
*** 828 LINES SKIPPED ***