From nobody Thu Apr 23 18:16:13 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g1kmt3cvQz6bFn5 for ; Thu, 23 Apr 2026 18:16:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g1kms6ZxRz3Qh8 for ; Thu, 23 Apr 2026 18:16:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776968174; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Feczd476CL3R4hwpEftNQXnDDw4m+GWXJkGkbSX7KSQ=; b=jW75DNynyDCz3VL2ZwFE1bSKJWgKvUY1wzBJyxZyMzuFbPjFqBm3p93gt5SoUEuurV27oI sxfB43Wu2JhNaV0UOZ2akuxBMbwAW6+RyTWEOl06RMSFyO+6+zLYZEY7brHwU/pY08ZTZX tYQxiuSd4Ech1QWZrUL6rWWsRmfFbEmcTWPLvghSlUuUhuGgyPNTsffF7rulrfAnCnVSLB wwZZ7TeYkRNyCZUQyTJy1uDyM1+RE2mRpg9r41VRNo7E4fCa8wRHAc9I8ViqU+ZaBHMNrE X4y5qJlSfspW5YCl6zPcB2v17bfT0YbDo90uAdLPUSQuuxLPwdbVyW4DzLcE2A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776968174; a=rsa-sha256; cv=none; b=Gc/S9aDUlHhmIDYTozuDRYQvMsKJtKTwpJknvbmrCLb/ExipSdi6SQxeVa8sBZ0+43dSca gqX+N80LIDre+aJEgHP+hLTVX8pQDcXJEGqklI9CTM+kuLG9v8JJ2bJkTwEwaedWN7BMCh oyfqbKkIjtB+rdNSJPfMTfjDLVZnFR/eGAU7E/geC7ICn2wY+zvDUsuPim5Xr23WQlRV10 cafdqmqCY9G4LclNR9BJWTCUk3F7oy/Z2IBlhXoJUa6WGUkm3swGuAcV1QpT8oSKby/Fwe V44KoftwOOiXQ1h1Wp0bx23mP71V8kPOimGSgVTuy595g333MkAuZETymYjS0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776968174; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Feczd476CL3R4hwpEftNQXnDDw4m+GWXJkGkbSX7KSQ=; b=sWrOrmJeJ84xb8hYGFUV2jAC7gS87WXa4Io/77MH3tbYmVqrvJ0PKr0gzeVFoSQZzihSgh RY3zcBTEBHtz5YXCaOKbV2HDSxQ0n5fGaLo/nMdEm8BZbsqj34vQmTF4/yBPQdAjvGmE6i m1fYvfI8vy8b3rTjt5O34c3BaF25PD4eVLA6f8TxSEhnMu1V0kXQdTDGNcc4njqBw9cR33 gMKc+cyYSLpmUib+75J5Khss8FNCDd/1/2J6PstOIsZr3dtEQTH5PyMhEOP1ImMPTFMLbV VU8+T/kpnDWxsyvm1KaMmOjbaGP1af0k0RyMOOrTbStQjPsuOXng0dK0MSImvQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g1kms699lzCf3 for ; Thu, 23 Apr 2026 18:16:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4573b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 23 Apr 2026 18:16:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ec3a0b2a02ee - main - pmap_map_io_transient: Use void * instead of vm_offset_t for vaddr array List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ec3a0b2a02ee2aa459aa72d751f6670b7f813f31 Auto-Submitted: auto-generated Date: Thu, 23 Apr 2026 18:16:13 +0000 Message-Id: <69ea61ed.4573b.177c7996@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ec3a0b2a02ee2aa459aa72d751f6670b7f813f31 commit ec3a0b2a02ee2aa459aa72d751f6670b7f813f31 Author: John Baldwin AuthorDate: 2026-04-23 17:05:54 +0000 Commit: John Baldwin CommitDate: 2026-04-23 17:05:54 +0000 pmap_map_io_transient: Use void * instead of vm_offset_t for vaddr array Effort: CHERI upstreaming Reviewed by: kib Sponsored by: AFRL, DARPA Pull Request: https://github.com/freebsd/freebsd-src/pull/2068 --- sys/amd64/amd64/pmap.c | 24 ++++++++++++++---------- sys/amd64/amd64/uio_machdep.c | 4 ++-- sys/amd64/include/pmap.h | 4 ++-- sys/arm64/arm64/pmap.c | 10 ++++++---- sys/arm64/arm64/uio_machdep.c | 4 ++-- sys/arm64/include/pmap.h | 4 ++-- sys/dev/cxgbe/cxgbei/icl_cxgbei.c | 4 ++-- sys/riscv/include/pmap.h | 4 ++-- sys/riscv/riscv/pmap.c | 10 ++++++---- sys/riscv/riscv/uio_machdep.c | 4 ++-- 10 files changed, 40 insertions(+), 32 deletions(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 66b17f89b4ff..bc4fa33fa175 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -8303,7 +8303,8 @@ pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[], { void *a_cp, *b_cp; vm_page_t pages[2]; - vm_offset_t vaddr[2], a_pg_offset, b_pg_offset; + void *vaddr[2]; + vm_offset_t a_pg_offset, b_pg_offset; int cnt; bool mapped; @@ -10494,10 +10495,11 @@ done: * */ bool -pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_map_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; + vmem_addr_t addr; bool needs_mapping; int error __unused, i; @@ -10510,11 +10512,12 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, paddr = VM_PAGE_TO_PHYS(page[i]); if (__predict_false(paddr >= dmaplimit)) { error = vmem_alloc(kernel_arena, PAGE_SIZE, - M_BESTFIT | M_WAITOK, &vaddr[i]); + M_BESTFIT | M_WAITOK, &addr); KASSERT(error == 0, ("vmem_alloc failed: %d", error)); + vaddr[i] = (void *)addr; needs_mapping = true; } else { - vaddr[i] = PHYS_TO_DMAP(paddr); + vaddr[i] = (void *)PHYS_TO_DMAP(paddr); } } @@ -10542,11 +10545,11 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, * thread to the CPU and instead add a global * mapping visible to all CPUs. */ - pmap_qenter(vaddr[i], &page[i], 1); + pmap_qenter((vm_offset_t)vaddr[i], &page[i], 1); } else { - pmap_kenter_attr(vaddr[i], paddr, + pmap_kenter_attr((vm_offset_t)vaddr[i], paddr, page[i]->md.pat_mode); - pmap_invlpg(kernel_pmap, vaddr[i]); + pmap_invlpg(kernel_pmap, (vm_offset_t)vaddr[i]); } } } @@ -10555,7 +10558,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, } void -pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_unmap_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; @@ -10567,8 +10570,9 @@ pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, paddr = VM_PAGE_TO_PHYS(page[i]); if (paddr >= dmaplimit) { if (can_fault) - pmap_qremove(vaddr[i], 1); - vmem_free(kernel_arena, vaddr[i], PAGE_SIZE); + pmap_qremove((vm_offset_t)vaddr[i], 1); + vmem_free(kernel_arena, (vm_offset_t)vaddr[i], + PAGE_SIZE); } } } diff --git a/sys/amd64/amd64/uio_machdep.c b/sys/amd64/amd64/uio_machdep.c index 83795653fa28..16915bccf9f5 100644 --- a/sys/amd64/amd64/uio_machdep.c +++ b/sys/amd64/amd64/uio_machdep.c @@ -57,8 +57,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio) { struct thread *td = curthread; struct iovec *iov; - void *cp; - vm_offset_t page_offset, vaddr; + void *cp, *vaddr; + vm_offset_t page_offset; size_t cnt; int error = 0; int save = 0; diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index 1bf67248125c..1d9124f34434 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -425,8 +425,8 @@ void pmap_invalidate_cache_pages(vm_page_t *pages, int count); void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); void pmap_force_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); void pmap_get_mapping(pmap_t pmap, vm_offset_t va, uint64_t *ptr, int *num); -bool pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, bool); -void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, bool); +bool pmap_map_io_transient(vm_page_t *, void **, int, bool); +void pmap_unmap_io_transient(vm_page_t *, void **, int, bool); void pmap_map_delete(pmap_t, vm_offset_t, vm_offset_t); void pmap_pti_add_kva(vm_offset_t sva, vm_offset_t eva, bool exec); void pmap_pti_remove_kva(vm_offset_t sva, vm_offset_t eva); diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 3d42ee058c28..0956f33bcd01 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -9620,10 +9620,11 @@ pmap_align_superpage(vm_object_t object, vm_ooffset_t offset, * */ bool -pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_map_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; + vmem_addr_t addr; bool needs_mapping; int error __diagused, i; @@ -9636,11 +9637,12 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, paddr = VM_PAGE_TO_PHYS(page[i]); if (__predict_false(!PHYS_IN_DMAP(paddr))) { error = vmem_alloc(kernel_arena, PAGE_SIZE, - M_BESTFIT | M_WAITOK, &vaddr[i]); + M_BESTFIT | M_WAITOK, &addr); KASSERT(error == 0, ("vmem_alloc failed: %d", error)); + vaddr[i] = (void *)addr; needs_mapping = true; } else { - vaddr[i] = PHYS_TO_DMAP(paddr); + vaddr[i] = (void *)PHYS_TO_DMAP(paddr); } } @@ -9662,7 +9664,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, } void -pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_unmap_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; diff --git a/sys/arm64/arm64/uio_machdep.c b/sys/arm64/arm64/uio_machdep.c index 1c12940419cc..976055a69491 100644 --- a/sys/arm64/arm64/uio_machdep.c +++ b/sys/arm64/arm64/uio_machdep.c @@ -55,8 +55,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio) { struct thread *td = curthread; struct iovec *iov; - void *cp; - vm_offset_t page_offset, vaddr; + void *cp, *vaddr; + vm_offset_t page_offset; size_t cnt; int error = 0; int save = 0; diff --git a/sys/arm64/include/pmap.h b/sys/arm64/include/pmap.h index 599e5a7f46ef..2ee70fc754da 100644 --- a/sys/arm64/include/pmap.h +++ b/sys/arm64/include/pmap.h @@ -166,8 +166,8 @@ void *pmap_mapbios(vm_paddr_t, vm_size_t); void pmap_unmapdev(void *, vm_size_t); void pmap_unmapbios(void *, vm_size_t); -bool pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, bool); -void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, bool); +bool pmap_map_io_transient(vm_page_t *, void **, int, bool); +void pmap_unmap_io_transient(vm_page_t *, void **, int, bool); bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t **, pd_entry_t **, pd_entry_t **, pt_entry_t **); diff --git a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c index 2e7767a0fc27..09023b00248e 100644 --- a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c +++ b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c @@ -622,7 +622,7 @@ icl_cxgbei_conn_pdu_append_bio(struct icl_conn *ic, struct icl_pdu *ip, { struct icl_cxgbei_pdu *icp = ip_to_icp(ip); struct mbuf *m, *m_tail; - vm_offset_t vaddr; + void *vaddr; size_t page_offset, todo, mtodo; bool mapped; int i; @@ -810,7 +810,7 @@ icl_cxgbei_conn_pdu_get_bio(struct icl_conn *ic, struct icl_pdu *ip, size_t pdu_off, struct bio *bp, size_t bio_off, size_t len) { struct icl_cxgbei_pdu *icp = ip_to_icp(ip); - vm_offset_t vaddr; + void *vaddr; size_t page_offset, todo; bool mapped; int i; diff --git a/sys/riscv/include/pmap.h b/sys/riscv/include/pmap.h index b7be1a0a262f..50496bb9ff20 100644 --- a/sys/riscv/include/pmap.h +++ b/sys/riscv/include/pmap.h @@ -150,8 +150,8 @@ void *pmap_mapbios(vm_paddr_t, vm_size_t); void pmap_unmapdev(void *, vm_size_t); void pmap_unmapbios(void *, vm_size_t); -bool pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, bool); -void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, bool); +bool pmap_map_io_transient(vm_page_t *, void **, int, bool); +void pmap_unmap_io_transient(vm_page_t *, void **, int, bool); bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t **, pd_entry_t **, pt_entry_t **); diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index 90493418c499..f4c5a1eab6ff 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -5300,10 +5300,11 @@ pmap_align_superpage(vm_object_t object, vm_ooffset_t offset, * */ bool -pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_map_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; + vmem_addr_t addr; bool needs_mapping; int error __diagused, i; @@ -5316,11 +5317,12 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, paddr = VM_PAGE_TO_PHYS(page[i]); if (__predict_false(paddr >= DMAP_MAX_PHYSADDR)) { error = vmem_alloc(kernel_arena, PAGE_SIZE, - M_BESTFIT | M_WAITOK, &vaddr[i]); + M_BESTFIT | M_WAITOK, &addr); KASSERT(error == 0, ("vmem_alloc failed: %d", error)); + vaddr[i] = (void *)addr; needs_mapping = true; } else { - vaddr[i] = PHYS_TO_DMAP(paddr); + vaddr[i] = (void *)PHYS_TO_DMAP(paddr); } } @@ -5342,7 +5344,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, } void -pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, +pmap_unmap_io_transient(vm_page_t page[], void *vaddr[], int count, bool can_fault) { vm_paddr_t paddr; diff --git a/sys/riscv/riscv/uio_machdep.c b/sys/riscv/riscv/uio_machdep.c index 002685c98ccf..f171feb1a4bd 100644 --- a/sys/riscv/riscv/uio_machdep.c +++ b/sys/riscv/riscv/uio_machdep.c @@ -55,8 +55,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio) { struct thread *td = curthread; struct iovec *iov; - void *cp; - vm_offset_t page_offset, vaddr; + void *cp, *vaddr; + vm_offset_t page_offset; size_t cnt; int error = 0; int save = 0;