Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2026 19:43:25 +0100
From:      Oliver Pinter <oliver.pntr@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>,  "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org>
Subject:   Re: git: fe9f0b18bf6a - main - busdma: Use char * instead of vm_offset_t for bounce page kernel pointers
Message-ID:  <CAPjTQNGpnG25u00nxrXcpGzipLZ7SKXHPffYWiBt%2BV-TMZDYpA@mail.gmail.com>
In-Reply-To: <69ea61e8.46e01.b303182@gitrepo.freebsd.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
On Thursday, April 23, 2026, John Baldwin <jhb@freebsd.org> wrote:

> The branch main has been updated by jhb:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=
> fe9f0b18bf6a1f881fbe57da716ea429acd539c1
>
> commit fe9f0b18bf6a1f881fbe57da716ea429acd539c1
> Author:     John Baldwin <jhb@FreeBSD.org>
> AuthorDate: 2026-04-23 17:05:53 +0000
> Commit:     John Baldwin <jhb@FreeBSD.org>
> CommitDate: 2026-04-23 17:05:53 +0000
>
>     busdma: Use char * instead of vm_offset_t for bounce page kernel
> pointers
>
>     Effort:         CHERI upstreaming
>     Reviewed by:    kib
>     Sponsored by:   AFRL, DARPA
>     Pull Request:   https://github.com/freebsd/freebsd-src/pull/2068
> ---
>  sys/arm/arm/busdma_machdep.c         | 18 ++++++++----------
>  sys/arm64/arm64/busdma_bounce.c      | 18 ++++++++----------
>  sys/kern/subr_busdma_bounce.c        | 30 +++++++++++++++---------------
>  sys/powerpc/powerpc/busdma_machdep.c | 20 +++++++++-----------
>  sys/riscv/riscv/busdma_bounce.c      | 18 ++++++++----------
>  sys/x86/x86/busdma_bounce.c          | 26 +++++++++++---------------
>  6 files changed, 59 insertions(+), 71 deletions(-)
>
> diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c
> index 3c65cb8ebbf4..81b8b4a2883a 100644
> --- a/sys/arm/arm/busdma_machdep.c
> +++ b/sys/arm/arm/busdma_machdep.c
> @@ -1002,7 +1002,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
> bus_dmamap_t map, void *buf,
>
>                 if (map->pagesneeded != 0 && must_bounce(dmat, map,
> curaddr,
>                     sgsize)) {
> -                       curaddr = add_bounce_page(dmat, map,
> (vm_offset_t)kvaddr, curaddr,
> +                       curaddr = add_bounce_page(dmat, map, kvaddr,
> curaddr,
>                             sgsize);
>                 } else if ((dmat->flags & BUS_DMA_COHERENT) == 0) {
>                         if (map->sync_count > 0) {
> @@ -1199,18 +1199,17 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t
> map, bus_dmasync_op_t op)
>                 if (op & BUS_DMASYNC_PREWRITE) {
>                         while (bpage != NULL) {
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
> -                               bcopy(datavaddr, (void *)bpage->vaddr,
> -                                   bpage->datacount);
> +                               bcopy(datavaddr, bpage->vaddr,
> bpage->datacount);
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
>                                 if ((dmat->flags & BUS_DMA_COHERENT) == 0)
> -                                       dcache_wb_poc(bpage->vaddr,
> +                                       dcache_wb_poc((vm_offset_t)
> bpage->vaddr,
>                                             bpage->busaddr,
> bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -1232,7 +1231,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t
> map, bus_dmasync_op_t op)
>                         bpage = STAILQ_FIRST(&map->bpages);
>                         while (bpage != NULL) {
>                                 if ((dmat->flags & BUS_DMA_COHERENT) == 0)
> -                                       dcache_inv_poc_dma(bpage->vaddr,
> +                                       dcache_inv_poc_dma((vm_offset_
> t)bpage->vaddr,
>                                             bpage->busaddr,
> bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -1250,17 +1249,16 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t
> map, bus_dmasync_op_t op)
>                 if (op & BUS_DMASYNC_POSTREAD) {
>                         while (bpage != NULL) {
>                                 if ((dmat->flags & BUS_DMA_COHERENT) == 0)
> -                                       dcache_inv_poc(bpage->vaddr,
> +                                       dcache_inv_poc((vm_offset_t)
> bpage->vaddr,
>                                             bpage->busaddr,
> bpage->datacount);
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
> -                               bcopy((void *)bpage->vaddr, datavaddr,
> -                                   bpage->datacount);
> +                               bcopy(bpage->vaddr, datavaddr,
> bpage->datacount);
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
>                                 bpage = STAILQ_NEXT(bpage, links);
> diff --git a/sys/arm64/arm64/busdma_bounce.c b/sys/arm64/arm64/busdma_
> bounce.c
> index ad46e26e406f..74fa611e6d1a 100644
> --- a/sys/arm64/arm64/busdma_bounce.c
> +++ b/sys/arm64/arm64/busdma_bounce.c
> @@ -868,7 +868,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat,
> bus_dmamap_t map, void *buf,
>                         KASSERT(dmat->common.alignment <= PAGE_SIZE,
>                             ("bounced buffer cannot have alignment bigger "
>                             "than PAGE_SIZE: %lu",
> dmat->common.alignment));
> -                       curaddr = add_bounce_page(dmat, map,
> (vm_offset_t)kvaddr, curaddr,
> +                       curaddr = add_bounce_page(dmat, map, kvaddr,
> curaddr,
>                             sgsize);
>                 } else if ((map->flags & DMAMAP_COHERENT) == 0) {
>                         if (map->sync_count > 0) {
> @@ -1047,19 +1047,18 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 if ((op & BUS_DMASYNC_PREWRITE) != 0) {
>                         while (bpage != NULL) {
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
>
> -                               bcopy(datavaddr,
> -                                   (void *)bpage->vaddr,
> bpage->datacount);
> +                               bcopy(datavaddr, bpage->vaddr,
> bpage->datacount);
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
>                                 if ((map->flags & DMAMAP_COHERENT) == 0)
> -                                       cpu_dcache_wb_range((void
> *)bpage->vaddr,
> +                                       cpu_dcache_wb_range(bpage->vaddr,
>                                             bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -1067,7 +1066,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 } else if ((op & BUS_DMASYNC_PREREAD) != 0) {
>                         while (bpage != NULL) {
>                                 if ((map->flags & DMAMAP_COHERENT) == 0)
> -                                       cpu_dcache_wbinv_range((void
> *)bpage->vaddr,
> +                                       cpu_dcache_wbinv_range(bpage->
> vaddr,
>                                             bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -1076,18 +1075,17 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 if ((op & BUS_DMASYNC_POSTREAD) != 0) {
>                         while (bpage != NULL) {
>                                 if ((map->flags & DMAMAP_COHERENT) == 0)
> -                                       cpu_dcache_inv_range((void
> *)bpage->vaddr,
> +                                       cpu_dcache_inv_range(bpage->vaddr,
>                                             bpage->datacount);
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
>
> -                               bcopy((void *)bpage->vaddr,
> -                                   datavaddr, bpage->datacount);
> +                               bcopy(bpage->vaddr, datavaddr,
> bpage->datacount);
>
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
> diff --git a/sys/kern/subr_busdma_bounce.c b/sys/kern/subr_busdma_bounce.c
> index 60fe2fc6b2a6..2774128a1ae5 100644
> --- a/sys/kern/subr_busdma_bounce.c
> +++ b/sys/kern/subr_busdma_bounce.c
> @@ -49,9 +49,9 @@
>  #include <sys/sched.h>
>
>  struct bounce_page {
> -       vm_offset_t     vaddr;          /* kva of bounce buffer */
> +       char            *vaddr;         /* kva of bounce buffer */
>         bus_addr_t      busaddr;        /* Physical address */
> -       vm_offset_t     datavaddr;      /* kva of client data */
> +       char            *datavaddr;     /* kva of client data */
>  #if defined(__amd64__) || defined(__i386__)
>         vm_page_t       datapage[2];    /* physical page(s) of client data
> */
>  #else
> @@ -282,18 +282,18 @@ alloc_bounce_pages(bus_dma_tag_t dmat, u_int
> numpages)
>                 if (bpage == NULL)
>                         break;
>  #ifdef dmat_domain
> -               bpage->vaddr = (vm_offset_t)contigmalloc_
> domainset(PAGE_SIZE,
> +               bpage->vaddr = contigmalloc_domainset(PAGE_SIZE,
>                     M_BOUNCE, DOMAINSET_PREF(bz->domain), M_NOWAIT,
>                     0ul, bz->lowaddr, PAGE_SIZE, 0);
>  #else
> -               bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE,
> M_BOUNCE,
> +               bpage->vaddr = contigmalloc(PAGE_SIZE, M_BOUNCE,
>                     M_NOWAIT, 0ul, bz->lowaddr, PAGE_SIZE, 0);
>  #endif
> -               if (bpage->vaddr == 0) {
> +               if (bpage->vaddr == NULL) {
>                         free(bpage, M_BUSDMA);
>                         break;
>                 }
> -               bpage->busaddr = pmap_kextract(bpage->vaddr);
> +               bpage->busaddr = pmap_kextract((vm_offset_t)bpage->vaddr);
>                 mtx_lock(&bounce_lock);
>                 STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links);
>                 total_bpages++;
> @@ -327,11 +327,11 @@ reserve_bounce_pages(bus_dma_tag_t dmat,
> bus_dmamap_t map, int commit)
>
>  #if defined(__amd64__) || defined(__i386__)
>  static bus_addr_t
> -add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
> +add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, void *vaddr,
>      vm_paddr_t addr1, vm_paddr_t addr2, bus_size_t size)
>  #else
>  static bus_addr_t
> -add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
> +add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, void *vaddr,
>      bus_addr_t addr, bus_size_t size)
>  #endif
>  {
> @@ -370,13 +370,13 @@ add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t
> map, vm_offset_t vaddr,
>         if (dmat_flags(dmat) & BUS_DMA_KEEP_PG_OFFSET) {
>                 /* Page offset needs to be preserved. */
>  #if defined(__amd64__) || defined(__i386__)
> -               bpage->vaddr |= addr1 & PAGE_MASK;
> -               bpage->busaddr |= addr1 & PAGE_MASK;
> +               bpage->vaddr += addr1 & PAGE_MASK;
> +               bpage->busaddr += addr1 & PAGE_MASK;
>                 KASSERT(addr2 == 0,
>             ("Trying to bounce multiple pages with
> BUS_DMA_KEEP_PG_OFFSET"));


These hunks looks different from the commit message.


>  #else
> -               bpage->vaddr |= addr & PAGE_MASK;
> -               bpage->busaddr |= addr & PAGE_MASK;
> +               bpage->vaddr += addr & PAGE_MASK;
> +               bpage->busaddr += addr & PAGE_MASK;
>  #endif
>         }
>         bpage->datavaddr = vaddr;
> @@ -409,7 +409,7 @@ free_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t
> map)
>         count = 0;
>         schedule_thread = false;
>         STAILQ_FOREACH(bpage, &map->bpages, links) {
> -               bpage->datavaddr = 0;
> +               bpage->datavaddr = NULL;
>                 bpage->datacount = 0;
>
>                 if (dmat_flags(dmat) & BUS_DMA_KEEP_PG_OFFSET) {
> @@ -419,8 +419,8 @@ free_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t
> map)
>                          * store a full page of data and/or assume it
>                          * starts on a page boundary.
>                          */
> -                       bpage->vaddr &= ~PAGE_MASK;
> -                       bpage->busaddr &= ~PAGE_MASK;
> +                       bpage->vaddr = trunc_page(bpage->vaddr);
> +                       bpage->busaddr = trunc_page(bpage->busaddr);
>                 }
>                 count++;
>         }
> diff --git a/sys/powerpc/powerpc/busdma_machdep.c
> b/sys/powerpc/powerpc/busdma_machdep.c
> index 56feffde8b37..7fe2fd4ff986 100644
> --- a/sys/powerpc/powerpc/busdma_machdep.c
> +++ b/sys/powerpc/powerpc/busdma_machdep.c
> @@ -613,7 +613,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
>  {
>         bus_size_t sgsize;
>         bus_addr_t curaddr;
> -       vm_offset_t kvaddr, vaddr;
> +       char *kvaddr, *vaddr;
>         int error;
>
>         if (segs == NULL)
> @@ -628,18 +628,18 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
>                 }
>         }
>
> -       vaddr = (vm_offset_t)buf;
> +       vaddr = buf;
>
>         while (buflen > 0) {
>                 /*
>                  * Get the physical address for this segment.
>                  */
>                 if (pmap == kernel_pmap) {
> -                       curaddr = pmap_kextract(vaddr);
> +                       curaddr = pmap_kextract((vm_offset_t)vaddr);
>                         kvaddr = vaddr;
>                 } else {
> -                       curaddr = pmap_extract(pmap, vaddr);
> -                       kvaddr = 0;
> +                       curaddr = pmap_extract(pmap, (vm_offset_t)vaddr);
> +                       kvaddr = NULL;
>                 }
>
>                 /*
> @@ -733,7 +733,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
> bus_dmasync_op_t op)
>                 if (op & BUS_DMASYNC_PREWRITE) {
>                         while (bpage != NULL) {
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
> @@ -741,8 +741,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
> bus_dmasync_op_t op)
>                                             bpage->dataoffs;
>                                 }
>
> -                               bcopy(datavaddr,
> -                                   (void *)bpage->vaddr,
> bpage->datacount);
> +                               bcopy(datavaddr, bpage->vaddr,
> bpage->datacount);
>
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
> @@ -754,7 +753,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
> bus_dmasync_op_t op)
>                 if (op & BUS_DMASYNC_POSTREAD) {
>                         while (bpage != NULL) {
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
> @@ -762,8 +761,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
> bus_dmasync_op_t op)
>                                             bpage->dataoffs;
>                                 }
>
> -                               bcopy((void *)bpage->vaddr,
> -                                   datavaddr, bpage->datacount);
> +                               bcopy(bpage->vaddr, datavaddr,
> bpage->datacount);
>
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
> diff --git a/sys/riscv/riscv/busdma_bounce.c b/sys/riscv/riscv/busdma_
> bounce.c
> index 0f2d592f4e52..452cead3c6b6 100644
> --- a/sys/riscv/riscv/busdma_bounce.c
> +++ b/sys/riscv/riscv/busdma_bounce.c
> @@ -673,7 +673,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat,
> bus_dmamap_t map, void *buf,
>                     addr_needs_bounce(dmat, curaddr)) {
>                         sgsize = roundup2(sgsize, dmat->common.alignment);
>                         sgsize = MIN(sgsize, buflen);
> -                       curaddr = add_bounce_page(dmat, map,
> (vm_offset_t)kvaddr, curaddr,
> +                       curaddr = add_bounce_page(dmat, map, kvaddr,
> curaddr,
>                             sgsize);
>                 } else if ((dmat->bounce_flags & BF_COHERENT) == 0) {
>                         if (map->sync_count > 0) {
> @@ -850,19 +850,18 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 if ((op & BUS_DMASYNC_PREWRITE) != 0) {
>                         while (bpage != NULL) {
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
>
> -                               bcopy(datavaddr,
> -                                   (void *)bpage->vaddr,
> bpage->datacount);
> +                               bcopy(datavaddr, bpage->vaddr,
> bpage->datacount);
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
>                                 if ((dmat->bounce_flags & BF_COHERENT) ==
> 0)
> -                                       cpu_dcache_wb_range(bpage->vaddr,
> +                                       cpu_dcache_wb_range((vm_
> offset_t)bpage->vaddr,
>                                             bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -870,7 +869,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 } else if ((op & BUS_DMASYNC_PREREAD) != 0) {
>                         while (bpage != NULL) {
>                                 if ((dmat->bounce_flags & BF_COHERENT) ==
> 0)
> -                                       cpu_dcache_wbinv_range(bpage->
> vaddr,
> +                                       cpu_dcache_wbinv_range((vm_
> offset_t)bpage->vaddr,
>                                             bpage->datacount);
>                                 bpage = STAILQ_NEXT(bpage, links);
>                         }
> @@ -879,18 +878,17 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                 if ((op & BUS_DMASYNC_POSTREAD) != 0) {
>                         while (bpage != NULL) {
>                                 if ((dmat->bounce_flags & BF_COHERENT) ==
> 0)
> -                                       cpu_dcache_inv_range(bpage->vaddr,
> +                                       cpu_dcache_inv_range((vm_
> offset_t)bpage->vaddr,
>                                             bpage->datacount);
>                                 tempvaddr = NULL;
> -                               datavaddr = (void *)bpage->datavaddr;
> +                               datavaddr = bpage->datavaddr;
>                                 if (datavaddr == NULL) {
>                                         tempvaddr = pmap_quick_enter_page(
>                                             bpage->datapage);
>                                         datavaddr = tempvaddr +
> bpage->dataoffs;
>                                 }
>
> -                               bcopy((void *)bpage->vaddr,
> -                                   datavaddr, bpage->datacount);
> +                               bcopy(bpage->vaddr, datavaddr,
> bpage->datacount);
>
>                                 if (tempvaddr != NULL)
>                                         pmap_quick_remove_page(tempvaddr);
> diff --git a/sys/x86/x86/busdma_bounce.c b/sys/x86/x86/busdma_bounce.c
> index bc48c60448da..bd700d4d55be 100644
> --- a/sys/x86/x86/busdma_bounce.c
> +++ b/sys/x86/x86/busdma_bounce.c
> @@ -687,7 +687,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat,
> bus_dmamap_t map, void *buf,
>  {
>         bus_size_t sgsize;
>         vm_paddr_t curaddr;
> -       vm_offset_t kvaddr, vaddr;
> +       char *kvaddr, *vaddr;
>         int error;
>
>         if (map == NULL)
> @@ -705,17 +705,17 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat,
> bus_dmamap_t map, void *buf,
>                 }
>         }
>
> -       vaddr = (vm_offset_t)buf;
> +       vaddr = buf;
>         while (buflen > 0) {
>                 /*
>                  * Get the physical address for this segment.
>                  */
>                 if (pmap == kernel_pmap) {
> -                       curaddr = pmap_kextract(vaddr);
> +                       curaddr = pmap_kextract((vm_offset_t)vaddr);
>                         kvaddr = vaddr;
>                 } else {
> -                       curaddr = pmap_extract(pmap, vaddr);
> -                       kvaddr = 0;
> +                       curaddr = pmap_extract(pmap, (vm_offset_t)vaddr);
> +                       kvaddr = NULL;
>                 }
>
>                 /*
> @@ -879,7 +879,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>         if ((op & BUS_DMASYNC_PREWRITE) != 0) {
>                 while (bpage != NULL) {
>                         tempvaddr = NULL;
> -                       datavaddr = (void *)bpage->datavaddr;
> +                       datavaddr = bpage->datavaddr;
>                         datacount1 = bpage->datacount;
>                         if (datavaddr == NULL) {
>                                 tempvaddr =
> @@ -889,8 +889,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                                     datacount1);
>                         }
>
> -                       bcopy(datavaddr,
> -                           (void *)bpage->vaddr, datacount1);
> +                       bcopy(datavaddr, bpage->vaddr, datacount1);
>
>                         if (tempvaddr != NULL)
>                                 pmap_quick_remove_page(tempvaddr);
> @@ -907,8 +906,7 @@ bounce_bus_dmamap_sync(bus_dma_tag_t dmat,
> bus_dmamap_t map,
>                          */
>                         datavaddr = pmap_quick_enter_page(bpage->
> datapage[1]);
>                         datacount2 = bpage->datacount - datacount1;
> -                       bcopy(datavaddr,
> -                           (void *)(bpage->vaddr + datacount1),
> datacount2);
> +                       bcopy(datavaddr, bpage->vaddr + datacount1,
> datacount2);
>                         pmap_quick_remove_page(datavaddr);
>
>  next_w:
> @@ -920,7 +918,7 @@ next_w:
>         if ((op & BUS_DMASYNC_POSTREAD) != 0) {
>                 while (bpage != NULL) {
>                         tempvaddr = NULL;
> -                       datavaddr = (void *)bpage->datavaddr;
> +                       datavaddr = bpage->datavaddr;
>                         datacount1 = bpage->datacount;
>                         if (datavaddr == NULL) {
>                                 tempvaddr =
> @@ -930,8 +928,7 @@ next_w:
>                                     datacount1);
>                         }
>
> -                       bcopy((void *)bpage->vaddr, datavaddr,
> -                           datacount1);
> +                       bcopy(bpage->vaddr, datavaddr, datacount1);
>
>                         if (tempvaddr != NULL)
>                                 pmap_quick_remove_page(tempvaddr);
> @@ -948,8 +945,7 @@ next_w:
>                          */
>                         datavaddr = pmap_quick_enter_page(bpage->
> datapage[1]);
>                         datacount2 = bpage->datacount - datacount1;
> -                       bcopy((void *)(bpage->vaddr + datacount1),
> -                           datavaddr, datacount2);
> +                       bcopy(bpage->vaddr + datacount1, datavaddr,
> datacount2);
>                         pmap_quick_remove_page(datavaddr);
>
>  next_r:
>
>

[-- Attachment #2 --]
<br><br>On Thursday, April 23, 2026, John Baldwin &lt;<a href="mailto:jhb@freebsd.org">jhb@freebsd.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The branch main has been updated by jhb:<br>
<br>
URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=fe9f0b18bf6a1f881fbe57da716ea429acd539c1" target="_blank">https://cgit.FreeBSD.org/src/<wbr>commit/?id=<wbr>fe9f0b18bf6a1f881fbe57da716ea4<wbr>29acd539c1</a><br>;
<br>
commit fe9f0b18bf6a1f881fbe57da716ea4<wbr>29acd539c1<br>
Author:     John Baldwin &lt;jhb@FreeBSD.org&gt;<br>
AuthorDate: 2026-04-23 17:05:53 +0000<br>
Commit:     John Baldwin &lt;jhb@FreeBSD.org&gt;<br>
CommitDate: 2026-04-23 17:05:53 +0000<br>
<br>
    busdma: Use char * instead of vm_offset_t for bounce page kernel pointers<br>
<br>
    Effort:         CHERI upstreaming<br>
    Reviewed by:    kib<br>
    Sponsored by:   AFRL, DARPA<br>
    Pull Request:   <a href="https://github.com/freebsd/freebsd-src/pull/2068" target="_blank">https://github.com/freebsd/<wbr>freebsd-src/pull/2068</a><br>;
---<br>
 sys/arm/arm/busdma_machdep.c         | 18 ++++++++----------<br>
 sys/arm64/arm64/busdma_bounce.<wbr>c      | 18 ++++++++----------<br>
 sys/kern/subr_busdma_bounce.c        | 30 +++++++++++++++---------------<br>
 sys/powerpc/powerpc/busdma_<wbr>machdep.c | 20 +++++++++-----------<br>
 sys/riscv/riscv/busdma_bounce.<wbr>c      | 18 ++++++++----------<br>
 sys/x86/x86/busdma_bounce.c          | 26 +++++++++++---------------<br>
 6 files changed, 59 insertions(+), 71 deletions(-)<br>
<br>
diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c<br>
index 3c65cb8ebbf4..81b8b4a2883a 100644<br>
--- a/sys/arm/arm/busdma_machdep.c<br>
+++ b/sys/arm/arm/busdma_machdep.c<br>
@@ -1002,7 +1002,7 @@ _bus_dmamap_load_buffer(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map, void *buf,<br>
<br>
                if (map-&gt;pagesneeded != 0 &amp;&amp; must_bounce(dmat, map, curaddr,<br>
                    sgsize)) {<br>
-                       curaddr = add_bounce_page(dmat, map, (vm_offset_t)kvaddr, curaddr,<br>
+                       curaddr = add_bounce_page(dmat, map, kvaddr, curaddr,<br>
                            sgsize);<br>
                } else if ((dmat-&gt;flags &amp; BUS_DMA_COHERENT) == 0) {<br>
                        if (map-&gt;sync_count &gt; 0) {<br>
@@ -1199,18 +1199,17 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                if (op &amp; BUS_DMASYNC_PREWRITE) {<br>
                        while (bpage != NULL) {<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
-                               bcopy(datavaddr, (void *)bpage-&gt;vaddr,<br>
-                                   bpage-&gt;datacount);<br>
+                               bcopy(datavaddr, bpage-&gt;vaddr, bpage-&gt;datacount);<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
                                if ((dmat-&gt;flags &amp; BUS_DMA_COHERENT) == 0)<br>
-                                       dcache_wb_poc(bpage-&gt;vaddr,<br>
+                                       dcache_wb_poc((vm_offset_t)<wbr>bpage-&gt;vaddr,<br>
                                            bpage-&gt;busaddr, bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -1232,7 +1231,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                        bpage = STAILQ_FIRST(&amp;map-&gt;bpages);<br>
                        while (bpage != NULL) {<br>
                                if ((dmat-&gt;flags &amp; BUS_DMA_COHERENT) == 0)<br>
-                                       dcache_inv_poc_dma(bpage-&gt;<wbr>vaddr,<br>
+                                       dcache_inv_poc_dma((vm_offset_<wbr>t)bpage-&gt;vaddr,<br>
                                            bpage-&gt;busaddr, bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -1250,17 +1249,16 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                if (op &amp; BUS_DMASYNC_POSTREAD) {<br>
                        while (bpage != NULL) {<br>
                                if ((dmat-&gt;flags &amp; BUS_DMA_COHERENT) == 0)<br>
-                                       dcache_inv_poc(bpage-&gt;vaddr,<br>
+                                       dcache_inv_poc((vm_offset_t)<wbr>bpage-&gt;vaddr,<br>
                                            bpage-&gt;busaddr, bpage-&gt;datacount);<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
-                               bcopy((void *)bpage-&gt;vaddr, datavaddr,<br>
-                                   bpage-&gt;datacount);<br>
+                               bcopy(bpage-&gt;vaddr, datavaddr, bpage-&gt;datacount);<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
diff --git a/sys/arm64/arm64/busdma_<wbr>bounce.c b/sys/arm64/arm64/busdma_<wbr>bounce.c<br>
index ad46e26e406f..74fa611e6d1a 100644<br>
--- a/sys/arm64/arm64/busdma_<wbr>bounce.c<br>
+++ b/sys/arm64/arm64/busdma_<wbr>bounce.c<br>
@@ -868,7 +868,7 @@ bounce_bus_dmamap_load_buffer(<wbr>bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,<br>
                        KASSERT(dmat-&gt;common.alignment &lt;= PAGE_SIZE,<br>
                            (&quot;bounced buffer cannot have alignment bigger &quot;<br>
                            &quot;than PAGE_SIZE: %lu&quot;, dmat-&gt;common.alignment));<br>
-                       curaddr = add_bounce_page(dmat, map, (vm_offset_t)kvaddr, curaddr,<br>
+                       curaddr = add_bounce_page(dmat, map, kvaddr, curaddr,<br>
                            sgsize);<br>
                } else if ((map-&gt;flags &amp; DMAMAP_COHERENT) == 0) {<br>
                        if (map-&gt;sync_count &gt; 0) {<br>
@@ -1047,19 +1047,18 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                if ((op &amp; BUS_DMASYNC_PREWRITE) != 0) {<br>
                        while (bpage != NULL) {<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy(datavaddr,<br>
-                                   (void *)bpage-&gt;vaddr, bpage-&gt;datacount);<br>
+                               bcopy(datavaddr, bpage-&gt;vaddr, bpage-&gt;datacount);<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
                                if ((map-&gt;flags &amp; DMAMAP_COHERENT) == 0)<br>
-                                       cpu_dcache_wb_range((void *)bpage-&gt;vaddr,<br>
+                                       cpu_dcache_wb_range(bpage-&gt;<wbr>vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -1067,7 +1066,7 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                } else if ((op &amp; BUS_DMASYNC_PREREAD) != 0) {<br>
                        while (bpage != NULL) {<br>
                                if ((map-&gt;flags &amp; DMAMAP_COHERENT) == 0)<br>
-                                       cpu_dcache_wbinv_range((void *)bpage-&gt;vaddr,<br>
+                                       cpu_dcache_wbinv_range(bpage-&gt;<wbr>vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -1076,18 +1075,17 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                if ((op &amp; BUS_DMASYNC_POSTREAD) != 0) {<br>
                        while (bpage != NULL) {<br>
                                if ((map-&gt;flags &amp; DMAMAP_COHERENT) == 0)<br>
-                                       cpu_dcache_inv_range((void *)bpage-&gt;vaddr,<br>
+                                       cpu_dcache_inv_range(bpage-&gt;<wbr>vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy((void *)bpage-&gt;vaddr,<br>
-                                   datavaddr, bpage-&gt;datacount);<br>
+                               bcopy(bpage-&gt;vaddr, datavaddr, bpage-&gt;datacount);<br>
<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
diff --git a/sys/kern/subr_busdma_bounce.<wbr>c b/sys/kern/subr_busdma_bounce.<wbr>c<br>
index 60fe2fc6b2a6..2774128a1ae5 100644<br>
--- a/sys/kern/subr_busdma_bounce.<wbr>c<br>
+++ b/sys/kern/subr_busdma_bounce.<wbr>c<br>
@@ -49,9 +49,9 @@<br>
 #include &lt;sys/sched.h&gt;<br>
<br>
 struct bounce_page {<br>
-       vm_offset_t     vaddr;          /* kva of bounce buffer */<br>
+       char            *vaddr;         /* kva of bounce buffer */<br>
        bus_addr_t      busaddr;        /* Physical address */<br>
-       vm_offset_t     datavaddr;      /* kva of client data */<br>
+       char            *datavaddr;     /* kva of client data */<br>
 #if defined(__amd64__) || defined(__i386__)<br>
        vm_page_t       datapage[2];    /* physical page(s) of client data */<br>
 #else<br>
@@ -282,18 +282,18 @@ alloc_bounce_pages(bus_dma_<wbr>tag_t dmat, u_int numpages)<br>
                if (bpage == NULL)<br>
                        break;<br>
 #ifdef dmat_domain<br>
-               bpage-&gt;vaddr = (vm_offset_t)contigmalloc_<wbr>domainset(PAGE_SIZE,<br>
+               bpage-&gt;vaddr = contigmalloc_domainset(PAGE_<wbr>SIZE,<br>
                    M_BOUNCE, DOMAINSET_PREF(bz-&gt;domain), M_NOWAIT,<br>
                    0ul, bz-&gt;lowaddr, PAGE_SIZE, 0);<br>
 #else<br>
-               bpage-&gt;vaddr = (vm_offset_t)contigmalloc(<wbr>PAGE_SIZE, M_BOUNCE,<br>
+               bpage-&gt;vaddr = contigmalloc(PAGE_SIZE, M_BOUNCE,<br>
                    M_NOWAIT, 0ul, bz-&gt;lowaddr, PAGE_SIZE, 0);<br>
 #endif<br>
-               if (bpage-&gt;vaddr == 0) {<br>
+               if (bpage-&gt;vaddr == NULL) {<br>
                        free(bpage, M_BUSDMA);<br>
                        break;<br>
                }<br>
-               bpage-&gt;busaddr = pmap_kextract(bpage-&gt;vaddr);<br>
+               bpage-&gt;busaddr = pmap_kextract((vm_offset_t)<wbr>bpage-&gt;vaddr);<br>
                mtx_lock(&amp;bounce_lock);<br>
                STAILQ_INSERT_TAIL(&amp;bz-&gt;<wbr>bounce_page_list, bpage, links);<br>
                total_bpages++;<br>
@@ -327,11 +327,11 @@ reserve_bounce_pages(bus_dma_<wbr>tag_t dmat, bus_dmamap_t map, int commit)<br>
<br>
 #if defined(__amd64__) || defined(__i386__)<br>
 static bus_addr_t<br>
-add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,<br>
+add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, void *vaddr,<br>
     vm_paddr_t addr1, vm_paddr_t addr2, bus_size_t size)<br>
 #else<br>
 static bus_addr_t<br>
-add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,<br>
+add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, void *vaddr,<br>
     bus_addr_t addr, bus_size_t size)<br>
 #endif<br>
 {<br>
@@ -370,13 +370,13 @@ add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,<br>
        if (dmat_flags(dmat) &amp; BUS_DMA_KEEP_PG_OFFSET) {<br>
                /* Page offset needs to be preserved. */<br>
 #if defined(__amd64__) || defined(__i386__)<br>
-               bpage-&gt;vaddr |= addr1 &amp; PAGE_MASK;<br>
-               bpage-&gt;busaddr |= addr1 &amp; PAGE_MASK;<br>
+               bpage-&gt;vaddr += addr1 &amp; PAGE_MASK;<br>
+               bpage-&gt;busaddr += addr1 &amp; PAGE_MASK;<br>
                KASSERT(addr2 == 0,<br>
            (&quot;Trying to bounce multiple pages with BUS_DMA_KEEP_PG_OFFSET&quot;));</blockquote><div><br></div><div>These hunks looks different from the commit message.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 #else<br>
-               bpage-&gt;vaddr |= addr &amp; PAGE_MASK;<br>
-               bpage-&gt;busaddr |= addr &amp; PAGE_MASK;<br>
+               bpage-&gt;vaddr += addr &amp; PAGE_MASK;<br>
+               bpage-&gt;busaddr += addr &amp; PAGE_MASK;<br>
 #endif<br>
        }<br>
        bpage-&gt;datavaddr = vaddr;<br>
@@ -409,7 +409,7 @@ free_bounce_pages(bus_dma_tag_<wbr>t dmat, bus_dmamap_t map)<br>
        count = 0;<br>
        schedule_thread = false;<br>
        STAILQ_FOREACH(bpage, &amp;map-&gt;bpages, links) {<br>
-               bpage-&gt;datavaddr = 0;<br>
+               bpage-&gt;datavaddr = NULL;<br>
                bpage-&gt;datacount = 0;<br>
<br>
                if (dmat_flags(dmat) &amp; BUS_DMA_KEEP_PG_OFFSET) {<br>
@@ -419,8 +419,8 @@ free_bounce_pages(bus_dma_tag_<wbr>t dmat, bus_dmamap_t map)<br>
                         * store a full page of data and/or assume it<br>
                         * starts on a page boundary.<br>
                         */<br>
-                       bpage-&gt;vaddr &amp;= ~PAGE_MASK;<br>
-                       bpage-&gt;busaddr &amp;= ~PAGE_MASK;<br>
+                       bpage-&gt;vaddr = trunc_page(bpage-&gt;vaddr);<br>
+                       bpage-&gt;busaddr = trunc_page(bpage-&gt;busaddr);<br>
                }<br>
                count++;<br>
        }<br>
diff --git a/sys/powerpc/powerpc/busdma_<wbr>machdep.c b/sys/powerpc/powerpc/busdma_<wbr>machdep.c<br>
index 56feffde8b37..7fe2fd4ff986 100644<br>
--- a/sys/powerpc/powerpc/busdma_<wbr>machdep.c<br>
+++ b/sys/powerpc/powerpc/busdma_<wbr>machdep.c<br>
@@ -613,7 +613,7 @@ _bus_dmamap_load_buffer(bus_<wbr>dma_tag_t dmat,<br>
 {<br>
        bus_size_t sgsize;<br>
        bus_addr_t curaddr;<br>
-       vm_offset_t kvaddr, vaddr;<br>
+       char *kvaddr, *vaddr;<br>
        int error;<br>
<br>
        if (segs == NULL)<br>
@@ -628,18 +628,18 @@ _bus_dmamap_load_buffer(bus_<wbr>dma_tag_t dmat,<br>
                }<br>
        }<br>
<br>
-       vaddr = (vm_offset_t)buf;<br>
+       vaddr = buf;<br>
<br>
        while (buflen &gt; 0) {<br>
                /*<br>
                 * Get the physical address for this segment.<br>
                 */<br>
                if (pmap == kernel_pmap) {<br>
-                       curaddr = pmap_kextract(vaddr);<br>
+                       curaddr = pmap_kextract((vm_offset_t)<wbr>vaddr);<br>
                        kvaddr = vaddr;<br>
                } else {<br>
-                       curaddr = pmap_extract(pmap, vaddr);<br>
-                       kvaddr = 0;<br>
+                       curaddr = pmap_extract(pmap, (vm_offset_t)vaddr);<br>
+                       kvaddr = NULL;<br>
                }<br>
<br>
                /*<br>
@@ -733,7 +733,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                if (op &amp; BUS_DMASYNC_PREWRITE) {<br>
                        while (bpage != NULL) {<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
@@ -741,8 +741,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                                            bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy(datavaddr,<br>
-                                   (void *)bpage-&gt;vaddr, bpage-&gt;datacount);<br>
+                               bcopy(datavaddr, bpage-&gt;vaddr, bpage-&gt;datacount);<br>
<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
@@ -754,7 +753,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                if (op &amp; BUS_DMASYNC_POSTREAD) {<br>
                        while (bpage != NULL) {<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
@@ -762,8 +761,7 @@ bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)<br>
                                            bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy((void *)bpage-&gt;vaddr,<br>
-                                   datavaddr, bpage-&gt;datacount);<br>
+                               bcopy(bpage-&gt;vaddr, datavaddr, bpage-&gt;datacount);<br>
<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
diff --git a/sys/riscv/riscv/busdma_<wbr>bounce.c b/sys/riscv/riscv/busdma_<wbr>bounce.c<br>
index 0f2d592f4e52..452cead3c6b6 100644<br>
--- a/sys/riscv/riscv/busdma_<wbr>bounce.c<br>
+++ b/sys/riscv/riscv/busdma_<wbr>bounce.c<br>
@@ -673,7 +673,7 @@ bounce_bus_dmamap_load_buffer(<wbr>bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,<br>
                    addr_needs_bounce(dmat, curaddr)) {<br>
                        sgsize = roundup2(sgsize, dmat-&gt;common.alignment);<br>
                        sgsize = MIN(sgsize, buflen);<br>
-                       curaddr = add_bounce_page(dmat, map, (vm_offset_t)kvaddr, curaddr,<br>
+                       curaddr = add_bounce_page(dmat, map, kvaddr, curaddr,<br>
                            sgsize);<br>
                } else if ((dmat-&gt;bounce_flags &amp; BF_COHERENT) == 0) {<br>
                        if (map-&gt;sync_count &gt; 0) {<br>
@@ -850,19 +850,18 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                if ((op &amp; BUS_DMASYNC_PREWRITE) != 0) {<br>
                        while (bpage != NULL) {<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy(datavaddr,<br>
-                                   (void *)bpage-&gt;vaddr, bpage-&gt;datacount);<br>
+                               bcopy(datavaddr, bpage-&gt;vaddr, bpage-&gt;datacount);<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
                                if ((dmat-&gt;bounce_flags &amp; BF_COHERENT) == 0)<br>
-                                       cpu_dcache_wb_range(bpage-&gt;<wbr>vaddr,<br>
+                                       cpu_dcache_wb_range((vm_<wbr>offset_t)bpage-&gt;vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -870,7 +869,7 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                } else if ((op &amp; BUS_DMASYNC_PREREAD) != 0) {<br>
                        while (bpage != NULL) {<br>
                                if ((dmat-&gt;bounce_flags &amp; BF_COHERENT) == 0)<br>
-                                       cpu_dcache_wbinv_range(bpage-&gt;<wbr>vaddr,<br>
+                                       cpu_dcache_wbinv_range((vm_<wbr>offset_t)bpage-&gt;vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                bpage = STAILQ_NEXT(bpage, links);<br>
                        }<br>
@@ -879,18 +878,17 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                if ((op &amp; BUS_DMASYNC_POSTREAD) != 0) {<br>
                        while (bpage != NULL) {<br>
                                if ((dmat-&gt;bounce_flags &amp; BF_COHERENT) == 0)<br>
-                                       cpu_dcache_inv_range(bpage-&gt;<wbr>vaddr,<br>
+                                       cpu_dcache_inv_range((vm_<wbr>offset_t)bpage-&gt;vaddr,<br>
                                            bpage-&gt;datacount);<br>
                                tempvaddr = NULL;<br>
-                               datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                               datavaddr = bpage-&gt;datavaddr;<br>
                                if (datavaddr == NULL) {<br>
                                        tempvaddr = pmap_quick_enter_page(<br>
                                            bpage-&gt;datapage);<br>
                                        datavaddr = tempvaddr + bpage-&gt;dataoffs;<br>
                                }<br>
<br>
-                               bcopy((void *)bpage-&gt;vaddr,<br>
-                                   datavaddr, bpage-&gt;datacount);<br>
+                               bcopy(bpage-&gt;vaddr, datavaddr, bpage-&gt;datacount);<br>
<br>
                                if (tempvaddr != NULL)<br>
                                        pmap_quick_remove_page(<wbr>tempvaddr);<br>
diff --git a/sys/x86/x86/busdma_bounce.c b/sys/x86/x86/busdma_bounce.c<br>
index bc48c60448da..bd700d4d55be 100644<br>
--- a/sys/x86/x86/busdma_bounce.c<br>
+++ b/sys/x86/x86/busdma_bounce.c<br>
@@ -687,7 +687,7 @@ bounce_bus_dmamap_load_buffer(<wbr>bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,<br>
 {<br>
        bus_size_t sgsize;<br>
        vm_paddr_t curaddr;<br>
-       vm_offset_t kvaddr, vaddr;<br>
+       char *kvaddr, *vaddr;<br>
        int error;<br>
<br>
        if (map == NULL)<br>
@@ -705,17 +705,17 @@ bounce_bus_dmamap_load_buffer(<wbr>bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,<br>
                }<br>
        }<br>
<br>
-       vaddr = (vm_offset_t)buf;<br>
+       vaddr = buf;<br>
        while (buflen &gt; 0) {<br>
                /*<br>
                 * Get the physical address for this segment.<br>
                 */<br>
                if (pmap == kernel_pmap) {<br>
-                       curaddr = pmap_kextract(vaddr);<br>
+                       curaddr = pmap_kextract((vm_offset_t)<wbr>vaddr);<br>
                        kvaddr = vaddr;<br>
                } else {<br>
-                       curaddr = pmap_extract(pmap, vaddr);<br>
-                       kvaddr = 0;<br>
+                       curaddr = pmap_extract(pmap, (vm_offset_t)vaddr);<br>
+                       kvaddr = NULL;<br>
                }<br>
<br>
                /*<br>
@@ -879,7 +879,7 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
        if ((op &amp; BUS_DMASYNC_PREWRITE) != 0) {<br>
                while (bpage != NULL) {<br>
                        tempvaddr = NULL;<br>
-                       datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                       datavaddr = bpage-&gt;datavaddr;<br>
                        datacount1 = bpage-&gt;datacount;<br>
                        if (datavaddr == NULL) {<br>
                                tempvaddr =<br>
@@ -889,8 +889,7 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                                    datacount1);<br>
                        }<br>
<br>
-                       bcopy(datavaddr,<br>
-                           (void *)bpage-&gt;vaddr, datacount1);<br>
+                       bcopy(datavaddr, bpage-&gt;vaddr, datacount1);<br>
<br>
                        if (tempvaddr != NULL)<br>
                                pmap_quick_remove_page(<wbr>tempvaddr);<br>
@@ -907,8 +906,7 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br>
                         */<br>
                        datavaddr = pmap_quick_enter_page(bpage-&gt;<wbr>datapage[1]);<br>
                        datacount2 = bpage-&gt;datacount - datacount1;<br>
-                       bcopy(datavaddr,<br>
-                           (void *)(bpage-&gt;vaddr + datacount1), datacount2);<br>
+                       bcopy(datavaddr, bpage-&gt;vaddr + datacount1, datacount2);<br>
                        pmap_quick_remove_page(<wbr>datavaddr);<br>
<br>
 next_w:<br>
@@ -920,7 +918,7 @@ next_w:<br>
        if ((op &amp; BUS_DMASYNC_POSTREAD) != 0) {<br>
                while (bpage != NULL) {<br>
                        tempvaddr = NULL;<br>
-                       datavaddr = (void *)bpage-&gt;datavaddr;<br>
+                       datavaddr = bpage-&gt;datavaddr;<br>
                        datacount1 = bpage-&gt;datacount;<br>
                        if (datavaddr == NULL) {<br>
                                tempvaddr =<br>
@@ -930,8 +928,7 @@ next_w:<br>
                                    datacount1);<br>
                        }<br>
<br>
-                       bcopy((void *)bpage-&gt;vaddr, datavaddr,<br>
-                           datacount1);<br>
+                       bcopy(bpage-&gt;vaddr, datavaddr, datacount1);<br>
<br>
                        if (tempvaddr != NULL)<br>
                                pmap_quick_remove_page(<wbr>tempvaddr);<br>
@@ -948,8 +945,7 @@ next_w:<br>
                         */<br>
                        datavaddr = pmap_quick_enter_page(bpage-&gt;<wbr>datapage[1]);<br>
                        datacount2 = bpage-&gt;datacount - datacount1;<br>
-                       bcopy((void *)(bpage-&gt;vaddr + datacount1),<br>
-                           datavaddr, datacount2);<br>
+                       bcopy(bpage-&gt;vaddr + datacount1, datavaddr, datacount2);<br>
                        pmap_quick_remove_page(<wbr>datavaddr);<br>
<br>
 next_r:<br>
<br>
</blockquote>
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPjTQNGpnG25u00nxrXcpGzipLZ7SKXHPffYWiBt%2BV-TMZDYpA>