From nobody Thu Apr 23 18:16:12 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 4g1kms1H63z6bFrs for ; Thu, 23 Apr 2026 18:16:13 +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 4g1kmr6cJ0z3QK8 for ; Thu, 23 Apr 2026 18:16:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776968173; 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=vWwdb/zJrgcQzxj5BVVHz+vZZO6FAqR1lnIxiTfgtBs=; b=DmgEy6hMeTvt4DcBDW6bGudmhX3vE9SMfhYuzwqDaEgYad1uTnnuSd0yqM5fW7hE5hqsP4 4wwDRSc7wBpmEAI/27Zd2FQw+5e9V3wpac+4JpkFNAKmP/vOav2r2p0i3GRBQKjiZXUR2Z z1SrJbMHpzwNAqqIu2xJhmyAHU5nTkg3XTRZBksul0TtII6cuLNG5dgQ9Cy76juImJVgw1 Wvu1d0K6Tkh6fFI6CD/zUUiTuSWKF2zEt4VU7z0QVX13CgFjL3nYqmQ1Kn/vWSVu5+qjJr LiVbIe86CML4OGkoCdNcikpBBB3Fc775qZJU8THs1vr9bLnKPYTvKBJgfRmEOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776968173; a=rsa-sha256; cv=none; b=M4+U0VCdt9+Jf0Ni+rt+zg4vuJOLPLCXKMO2h1cEzwwMerPBpN+YLxN3DstBMN5snIWJhR LXkLxLwGsUyQm0kz1KMYJ1VfR+FJ/cJjEiU6pWnwJfZkKx/Pa5tXcMz2L6S6a+fKc9iXk9 9Jw7rMo1V+AD9L9QVkTZO8XgkPDMIkA4qUYaQsSIecpadmbcWL2pDqUDCc1CCpx/Up3Pht QWY2PPbKP/vEEsJvh2bQLDJolRzj5KgX/jbZX/zQnqj9QqKqq0piLTSV0r52aP8DifaL0/ hUvAekbKslGdQUnbUzV94Kh0npkjcVuDhbTVJDAxtyFaFcVLD6IX6wm8wbTteQ== 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=1776968173; 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=vWwdb/zJrgcQzxj5BVVHz+vZZO6FAqR1lnIxiTfgtBs=; b=ctzTss1qhcRpTjq9lRFYFZw+YmIkYQZK+GyrJYW0Vvk4oU1CTIiKHfvc8r3vnkwTZB47Er Lo7tdsPl/qlpNLRGEyCWEiGE2J4IM4gT3cp9TTPp1WSvNTWR4VdySuefztNfMxGwWRJsI8 wa/OmCJoszVUAY6xo+eSLilPp0iu/uReLgX/HWJBcA597/amNeXuFp2eA57AmhDdAJBp3c qG8tAEOSRDfh9ZUuYrX9He4YdiNim44eALW9gG6U+li7N5nCy0yDApDQpJz+0fzKASMQ6l I+00utYSZtIRl64DBMv+qmkk5hlSlDq+IgYaEVztWG2WSjHIRxazn9JBp8MzbA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g1kmr5bgzzChT for ; Thu, 23 Apr 2026 18:16:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 45142 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 23 Apr 2026 18:16:12 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 573e6313bc3b - main - sf_buf_kva: Return a pointer instead of a vm_offset_t 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: 573e6313bc3b3d7d8da4531fbfaa2763dbe209a7 Auto-Submitted: auto-generated Date: Thu, 23 Apr 2026 18:16:12 +0000 Message-Id: <69ea61ec.45142.5bdc5755@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=573e6313bc3b3d7d8da4531fbfaa2763dbe209a7 commit 573e6313bc3b3d7d8da4531fbfaa2763dbe209a7 Author: John Baldwin AuthorDate: 2026-04-23 17:05:54 +0000 Commit: John Baldwin CommitDate: 2026-04-23 17:05:54 +0000 sf_buf_kva: Return a pointer instead of a vm_offset_t This removes the need for several casts to pointer in callers. Effort: CHERI upstreaming Reviewed by: kib Sponsored by: AFRL, DARPA Pull Request: https://github.com/freebsd/freebsd-src/pull/2068 --- sys/amd64/include/sf_buf.h | 4 ++-- sys/arm64/include/sf_buf.h | 4 ++-- sys/cddl/compat/opensolaris/sys/vm.h | 2 +- sys/compat/linuxkpi/common/include/linux/highmem.h | 2 +- sys/compat/linuxkpi/common/include/linux/scatterlist.h | 2 +- sys/dev/drm2/ttm/ttm_bo_util.c | 2 +- sys/dev/ti/if_ti.c | 6 +++--- sys/kern/imgact_elf.c | 2 +- sys/kern/kern_exec.c | 2 +- sys/kern/kern_mbuf.c | 2 +- sys/kern/kern_sendfile.c | 2 +- sys/net/bpf_zerocopy.c | 3 +-- sys/riscv/include/sf_buf.h | 4 ++-- sys/sys/sf_buf.h | 6 +++--- sys/vm/vnode_pager.c | 2 +- sys/x86/iommu/amd_idpgtbl.c | 2 +- sys/x86/iommu/intel_idpgtbl.c | 2 +- sys/x86/iommu/iommu_utils.c | 2 +- 18 files changed, 25 insertions(+), 26 deletions(-) diff --git a/sys/amd64/include/sf_buf.h b/sys/amd64/include/sf_buf.h index 4a64928ae141..e5e23d47ae91 100644 --- a/sys/amd64/include/sf_buf.h +++ b/sys/amd64/include/sf_buf.h @@ -36,11 +36,11 @@ * That pointer references the vm_page that is "mapped" by the sf_buf. The * actual mapping is provided by the direct virtual-to-physical mapping. */ -static inline vm_offset_t +static inline void * sf_buf_kva(struct sf_buf *sf) { - return (PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); + return ((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); } static inline vm_page_t diff --git a/sys/arm64/include/sf_buf.h b/sys/arm64/include/sf_buf.h index 00ed0e9d7456..c66095983bce 100644 --- a/sys/arm64/include/sf_buf.h +++ b/sys/arm64/include/sf_buf.h @@ -37,11 +37,11 @@ * That pointer references the vm_page that is "mapped" by the sf_buf. The * actual mapping is provided by the direct virtual-to-physical mapping. */ -static inline vm_offset_t +static inline void * sf_buf_kva(struct sf_buf *sf) { - return (PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); + return ((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); } static inline vm_page_t diff --git a/sys/cddl/compat/opensolaris/sys/vm.h b/sys/cddl/compat/opensolaris/sys/vm.h index cddf84358a8c..c4bb10bc030f 100644 --- a/sys/cddl/compat/opensolaris/sys/vm.h +++ b/sys/cddl/compat/opensolaris/sys/vm.h @@ -45,7 +45,7 @@ static inline caddr_t zfs_map_page(vm_page_t pp, struct sf_buf **sfp) { *sfp = sf_buf_alloc(pp, 0); - return ((caddr_t)sf_buf_kva(*sfp)); + return (sf_buf_kva(*sfp)); } static inline void diff --git a/sys/compat/linuxkpi/common/include/linux/highmem.h b/sys/compat/linuxkpi/common/include/linux/highmem.h index 294b2666031b..1374712735ac 100644 --- a/sys/compat/linuxkpi/common/include/linux/highmem.h +++ b/sys/compat/linuxkpi/common/include/linux/highmem.h @@ -70,7 +70,7 @@ kmap(struct page *page) sched_unpin(); return (NULL); } - return ((void *)sf_buf_kva(sf)); + return (sf_buf_kva(sf)); } } diff --git a/sys/compat/linuxkpi/common/include/linux/scatterlist.h b/sys/compat/linuxkpi/common/include/linux/scatterlist.h index 537f5bebc5aa..775ed499a7d0 100644 --- a/sys/compat/linuxkpi/common/include/linux/scatterlist.h +++ b/sys/compat/linuxkpi/common/include/linux/scatterlist.h @@ -654,7 +654,7 @@ sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents, sf = sf_buf_alloc(page, SFB_CPUPRIVATE | SFB_NOWAIT); if (sf == NULL) break; - vaddr = (char *)sf_buf_kva(sf); + vaddr = sf_buf_kva(sf); } else vaddr = (char *)PHYS_TO_DMAP(page_to_phys(page)); memcpy(buf, vaddr + sg->offset + offset, len); diff --git a/sys/dev/drm2/ttm/ttm_bo_util.c b/sys/dev/drm2/ttm/ttm_bo_util.c index 3948075ad104..9d3f4103f82e 100644 --- a/sys/dev/drm2/ttm/ttm_bo_util.c +++ b/sys/dev/drm2/ttm/ttm_bo_util.c @@ -500,7 +500,7 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo, map->bo_kmap_type = ttm_bo_map_kmap; map->page = ttm->pages[start_page]; map->sf = sf_buf_alloc(map->page, 0); - map->virtual = (void *)sf_buf_kva(map->sf); + map->virtual = sf_buf_kva(map->sf); } else { /* * We need to use vmap to get the desired page protection diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c index d6d5adda7a41..a89a9d5b5422 100644 --- a/sys/dev/ti/if_ti.c +++ b/sys/dev/ti/if_ti.c @@ -1635,10 +1635,10 @@ ti_newbuf_jumbo(struct ti_softc *sc, int idx, struct mbuf *m_old) } for (i = 0; i < NPAYLOAD; i++){ /* Attach the buffer to the mbuf. */ - m[i]->m_data = (void *)sf_buf_kva(sf[i]); + m[i]->m_data = sf_buf_kva(sf[i]); m[i]->m_len = PAGE_SIZE; MEXTADD(m[i], sf_buf_kva(sf[i]), PAGE_SIZE, - sf_mext_free, (void*)sf_buf_kva(sf[i]), sf[i], + sf_mext_free, sf_buf_kva(sf[i]), sf[i], 0, EXT_DISPOSABLE); m[i]->m_next = m[i+1]; } @@ -1703,7 +1703,7 @@ nobufs: if (m[i]) m_freem(m[i]); if (sf[i]) - sf_mext_free((void *)sf_buf_kva(sf[i]), sf[i]); + sf_mext_free(sf_buf_kva(sf[i]), sf[i]); } return (ENOBUFS); } diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c index c91fd8089487..af0841c75549 100644 --- a/sys/kern/imgact_elf.c +++ b/sys/kern/imgact_elf.c @@ -708,7 +708,7 @@ __elfN(load_section)(const struct image_params *imgp, vm_ooffset_t offset, return (EIO); /* send the page fragment to user space */ - error = copyout((caddr_t)sf_buf_kva(sf), (caddr_t)map_addr, + error = copyout(sf_buf_kva(sf), (caddr_t)map_addr, copy_len); vm_imgact_unmap_page(sf); if (error != 0) diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 2bdd6faa025a..20d022050803 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -1097,7 +1097,7 @@ exec_map_first_page(struct image_params *imgp) if (error != VM_PAGER_OK) return (EIO); imgp->firstpage = sf_buf_alloc(m, 0); - imgp->image_header = (char *)sf_buf_kva(imgp->firstpage); + imgp->image_header = sf_buf_kva(imgp->firstpage); return (0); } diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c index 90af03e29dfb..2741778414f4 100644 --- a/sys/kern/kern_mbuf.c +++ b/sys/kern/kern_mbuf.c @@ -1019,7 +1019,7 @@ _mb_unmapped_to_ext(struct mbuf *m, struct mbuf **mres) goto fail; ref_inc++; - m_extadd(m_new, (char *)sf_buf_kva(sf), PAGE_SIZE, + m_extadd(m_new, sf_buf_kva(sf), PAGE_SIZE, mb_unmapped_free_mext, sf, mref, m->m_flags & M_RDONLY, EXT_SFBUF); m_new->m_data += segoff; diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c index a4178f5b9b2d..9992b83ad6a8 100644 --- a/sys/kern/kern_sendfile.c +++ b/sys/kern/kern_sendfile.c @@ -1030,7 +1030,7 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, } m0 = m_get(M_WAITOK, MT_DATA); - m0->m_ext.ext_buf = (char *)sf_buf_kva(sf); + m0->m_ext.ext_buf = sf_buf_kva(sf); m0->m_ext.ext_size = PAGE_SIZE; m0->m_ext.ext_arg1 = sf; m0->m_ext.ext_type = EXT_SFBUF; diff --git a/sys/net/bpf_zerocopy.c b/sys/net/bpf_zerocopy.c index dee477d47966..63d572c11865 100644 --- a/sys/net/bpf_zerocopy.c +++ b/sys/net/bpf_zerocopy.c @@ -220,8 +220,7 @@ zbuf_setup(struct thread *td, vm_offset_t uaddr, size_t len, goto error; } } - zb->zb_header = - (struct bpf_zbuf_header *)sf_buf_kva(zb->zb_pages[0]); + zb->zb_header = sf_buf_kva(zb->zb_pages[0]); bzero(zb->zb_header, sizeof(*zb->zb_header)); *zbp = zb; return (0); diff --git a/sys/riscv/include/sf_buf.h b/sys/riscv/include/sf_buf.h index 380f37d45177..293b44726a7c 100644 --- a/sys/riscv/include/sf_buf.h +++ b/sys/riscv/include/sf_buf.h @@ -33,11 +33,11 @@ * That pointer references the vm_page that is "mapped" by the sf_buf. The * actual mapping is provided by the direct virtual-to-physical mapping. */ -static inline vm_offset_t +static inline void * sf_buf_kva(struct sf_buf *sf) { - return (PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); + return ((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); } static inline vm_page_t diff --git a/sys/sys/sf_buf.h b/sys/sys/sf_buf.h index 173ec161ab60..8eebfd82afdb 100644 --- a/sys/sys/sf_buf.h +++ b/sys/sys/sf_buf.h @@ -110,13 +110,13 @@ struct sf_buf *sf_buf_alloc(struct vm_page *, int); void sf_buf_free(struct sf_buf *); void sf_buf_ref(struct sf_buf *); -static inline vm_offset_t +static inline void * sf_buf_kva(struct sf_buf *sf) { if (PMAP_HAS_DMAP) - return (PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); + return ((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS((vm_page_t)sf))); - return (sf->kva); + return ((void *)sf->kva); } static inline vm_page_t diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index 3504c90821e5..072778f536cd 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -786,7 +786,7 @@ vnode_pager_input_old(vm_object_t object, vm_page_t m) */ sf = sf_buf_alloc(m, 0); - aiov.iov_base = (caddr_t)sf_buf_kva(sf); + aiov.iov_base = sf_buf_kva(sf); aiov.iov_len = size; auio.uio_iov = &aiov; auio.uio_iovcnt = 1; diff --git a/sys/x86/iommu/amd_idpgtbl.c b/sys/x86/iommu/amd_idpgtbl.c index 4ed73675bd41..007883ccdaa9 100644 --- a/sys/x86/iommu/amd_idpgtbl.c +++ b/sys/x86/iommu/amd_idpgtbl.c @@ -138,7 +138,7 @@ amdiommu_pgtbl_map_pte(struct amdiommu_domain *domain, iommu_gaddr_t base, idx = pglvl_pgtbl_get_pindex(domain->pglvl, base, lvl); if (*sf != NULL && idx == *idxp) { - pte = (iommu_pte_t *)sf_buf_kva(*sf); + pte = sf_buf_kva(*sf); } else { if (*sf != NULL) iommu_unmap_pgtbl(*sf); diff --git a/sys/x86/iommu/intel_idpgtbl.c b/sys/x86/iommu/intel_idpgtbl.c index e13555cdaaba..4652abb3507d 100644 --- a/sys/x86/iommu/intel_idpgtbl.c +++ b/sys/x86/iommu/intel_idpgtbl.c @@ -338,7 +338,7 @@ dmar_pgtbl_map_pte(struct dmar_domain *domain, iommu_gaddr_t base, int lvl, idx = pglvl_pgtbl_get_pindex(domain->pglvl, base, lvl); if (*sf != NULL && idx == *idxp) { - pte = (iommu_pte_t *)sf_buf_kva(*sf); + pte = sf_buf_kva(*sf); } else { if (*sf != NULL) iommu_unmap_pgtbl(*sf); diff --git a/sys/x86/iommu/iommu_utils.c b/sys/x86/iommu/iommu_utils.c index 2db02a98ca91..d2ff9a985968 100644 --- a/sys/x86/iommu/iommu_utils.c +++ b/sys/x86/iommu/iommu_utils.c @@ -173,7 +173,7 @@ iommu_map_pgtbl(vm_object_t obj, vm_pindex_t idx, int flags, VM_OBJECT_WLOCK(obj); else if ((flags & (IOMMU_PGF_WAITOK | IOMMU_PGF_OBJL)) == 0) VM_OBJECT_WUNLOCK(obj); - return ((void *)sf_buf_kva(*sf)); + return (sf_buf_kva(*sf)); } void