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 <<a href="mailto:jhb@freebsd.org">jhb@freebsd.org</a>> 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 <jhb@FreeBSD.org><br> AuthorDate: 2026-04-23 17:05:53 +0000<br> Commit: John Baldwin <jhb@FreeBSD.org><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->pagesneeded != 0 && 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->flags & BUS_DMA_COHERENT) == 0) {<br> if (map->sync_count > 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 & BUS_DMASYNC_PREWRITE) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> - bcopy(datavaddr, (void *)bpage->vaddr,<br> - bpage->datacount);<br> + bcopy(datavaddr, bpage->vaddr, bpage->datacount);<br> if (tempvaddr != NULL)<br> pmap_quick_remove_page(<wbr>tempvaddr);<br> if ((dmat->flags & BUS_DMA_COHERENT) == 0)<br> - dcache_wb_poc(bpage->vaddr,<br> + dcache_wb_poc((vm_offset_t)<wbr>bpage->vaddr,<br> bpage->busaddr, bpage->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(&map->bpages);<br> while (bpage != NULL) {<br> if ((dmat->flags & BUS_DMA_COHERENT) == 0)<br> - dcache_inv_poc_dma(bpage-><wbr>vaddr,<br> + dcache_inv_poc_dma((vm_offset_<wbr>t)bpage->vaddr,<br> bpage->busaddr, bpage->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 & BUS_DMASYNC_POSTREAD) {<br> while (bpage != NULL) {<br> if ((dmat->flags & BUS_DMA_COHERENT) == 0)<br> - dcache_inv_poc(bpage->vaddr,<br> + dcache_inv_poc((vm_offset_t)<wbr>bpage->vaddr,<br> bpage->busaddr, bpage->datacount);<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> - bcopy((void *)bpage->vaddr, datavaddr,<br> - bpage->datacount);<br> + bcopy(bpage->vaddr, datavaddr, bpage->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->common.alignment <= PAGE_SIZE,<br> ("bounced buffer cannot have alignment bigger "<br> "than PAGE_SIZE: %lu", dmat->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->flags & DMAMAP_COHERENT) == 0) {<br> if (map->sync_count > 0) {<br> @@ -1047,19 +1047,18 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br> if ((op & BUS_DMASYNC_PREWRITE) != 0) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> <br> - bcopy(datavaddr,<br> - (void *)bpage->vaddr, bpage->datacount);<br> + bcopy(datavaddr, bpage->vaddr, bpage->datacount);<br> if (tempvaddr != NULL)<br> pmap_quick_remove_page(<wbr>tempvaddr);<br> if ((map->flags & DMAMAP_COHERENT) == 0)<br> - cpu_dcache_wb_range((void *)bpage->vaddr,<br> + cpu_dcache_wb_range(bpage-><wbr>vaddr,<br> bpage->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 & BUS_DMASYNC_PREREAD) != 0) {<br> while (bpage != NULL) {<br> if ((map->flags & DMAMAP_COHERENT) == 0)<br> - cpu_dcache_wbinv_range((void *)bpage->vaddr,<br> + cpu_dcache_wbinv_range(bpage-><wbr>vaddr,<br> bpage->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 & BUS_DMASYNC_POSTREAD) != 0) {<br> while (bpage != NULL) {<br> if ((map->flags & DMAMAP_COHERENT) == 0)<br> - cpu_dcache_inv_range((void *)bpage->vaddr,<br> + cpu_dcache_inv_range(bpage-><wbr>vaddr,<br> bpage->datacount);<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> <br> - bcopy((void *)bpage->vaddr,<br> - datavaddr, bpage->datacount);<br> + bcopy(bpage->vaddr, datavaddr, bpage->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 <sys/sched.h><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->vaddr = (vm_offset_t)contigmalloc_<wbr>domainset(PAGE_SIZE,<br> + bpage->vaddr = contigmalloc_domainset(PAGE_<wbr>SIZE,<br> M_BOUNCE, DOMAINSET_PREF(bz->domain), M_NOWAIT,<br> 0ul, bz->lowaddr, PAGE_SIZE, 0);<br> #else<br> - bpage->vaddr = (vm_offset_t)contigmalloc(<wbr>PAGE_SIZE, M_BOUNCE,<br> + bpage->vaddr = contigmalloc(PAGE_SIZE, M_BOUNCE,<br> M_NOWAIT, 0ul, bz->lowaddr, PAGE_SIZE, 0);<br> #endif<br> - if (bpage->vaddr == 0) {<br> + if (bpage->vaddr == NULL) {<br> free(bpage, M_BUSDMA);<br> break;<br> }<br> - bpage->busaddr = pmap_kextract(bpage->vaddr);<br> + bpage->busaddr = pmap_kextract((vm_offset_t)<wbr>bpage->vaddr);<br> mtx_lock(&bounce_lock);<br> STAILQ_INSERT_TAIL(&bz-><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) & BUS_DMA_KEEP_PG_OFFSET) {<br> /* Page offset needs to be preserved. */<br> #if defined(__amd64__) || defined(__i386__)<br> - bpage->vaddr |= addr1 & PAGE_MASK;<br> - bpage->busaddr |= addr1 & PAGE_MASK;<br> + bpage->vaddr += addr1 & PAGE_MASK;<br> + bpage->busaddr += addr1 & PAGE_MASK;<br> KASSERT(addr2 == 0,<br> ("Trying to bounce multiple pages with BUS_DMA_KEEP_PG_OFFSET"));</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->vaddr |= addr & PAGE_MASK;<br> - bpage->busaddr |= addr & PAGE_MASK;<br> + bpage->vaddr += addr & PAGE_MASK;<br> + bpage->busaddr += addr & PAGE_MASK;<br> #endif<br> }<br> bpage->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, &map->bpages, links) {<br> - bpage->datavaddr = 0;<br> + bpage->datavaddr = NULL;<br> bpage->datacount = 0;<br> <br> if (dmat_flags(dmat) & 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->vaddr &= ~PAGE_MASK;<br> - bpage->busaddr &= ~PAGE_MASK;<br> + bpage->vaddr = trunc_page(bpage->vaddr);<br> + bpage->busaddr = trunc_page(bpage->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 > 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 & BUS_DMASYNC_PREWRITE) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->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->dataoffs;<br> }<br> <br> - bcopy(datavaddr,<br> - (void *)bpage->vaddr, bpage->datacount);<br> + bcopy(datavaddr, bpage->vaddr, bpage->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 & BUS_DMASYNC_POSTREAD) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->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->dataoffs;<br> }<br> <br> - bcopy((void *)bpage->vaddr,<br> - datavaddr, bpage->datacount);<br> + bcopy(bpage->vaddr, datavaddr, bpage->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->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->bounce_flags & BF_COHERENT) == 0) {<br> if (map->sync_count > 0) {<br> @@ -850,19 +850,18 @@ bounce_bus_dmamap_sync(bus_<wbr>dma_tag_t dmat, bus_dmamap_t map,<br> if ((op & BUS_DMASYNC_PREWRITE) != 0) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> <br> - bcopy(datavaddr,<br> - (void *)bpage->vaddr, bpage->datacount);<br> + bcopy(datavaddr, bpage->vaddr, bpage->datacount);<br> if (tempvaddr != NULL)<br> pmap_quick_remove_page(<wbr>tempvaddr);<br> if ((dmat->bounce_flags & BF_COHERENT) == 0)<br> - cpu_dcache_wb_range(bpage-><wbr>vaddr,<br> + cpu_dcache_wb_range((vm_<wbr>offset_t)bpage->vaddr,<br> bpage->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 & BUS_DMASYNC_PREREAD) != 0) {<br> while (bpage != NULL) {<br> if ((dmat->bounce_flags & BF_COHERENT) == 0)<br> - cpu_dcache_wbinv_range(bpage-><wbr>vaddr,<br> + cpu_dcache_wbinv_range((vm_<wbr>offset_t)bpage->vaddr,<br> bpage->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 & BUS_DMASYNC_POSTREAD) != 0) {<br> while (bpage != NULL) {<br> if ((dmat->bounce_flags & BF_COHERENT) == 0)<br> - cpu_dcache_inv_range(bpage-><wbr>vaddr,<br> + cpu_dcache_inv_range((vm_<wbr>offset_t)bpage->vaddr,<br> bpage->datacount);<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> if (datavaddr == NULL) {<br> tempvaddr = pmap_quick_enter_page(<br> bpage->datapage);<br> datavaddr = tempvaddr + bpage->dataoffs;<br> }<br> <br> - bcopy((void *)bpage->vaddr,<br> - datavaddr, bpage->datacount);<br> + bcopy(bpage->vaddr, datavaddr, bpage->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 > 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 & BUS_DMASYNC_PREWRITE) != 0) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> datacount1 = bpage->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->vaddr, datacount1);<br> + bcopy(datavaddr, bpage->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-><wbr>datapage[1]);<br> datacount2 = bpage->datacount - datacount1;<br> - bcopy(datavaddr,<br> - (void *)(bpage->vaddr + datacount1), datacount2);<br> + bcopy(datavaddr, bpage->vaddr + datacount1, datacount2);<br> pmap_quick_remove_page(<wbr>datavaddr);<br> <br> next_w:<br> @@ -920,7 +918,7 @@ next_w:<br> if ((op & BUS_DMASYNC_POSTREAD) != 0) {<br> while (bpage != NULL) {<br> tempvaddr = NULL;<br> - datavaddr = (void *)bpage->datavaddr;<br> + datavaddr = bpage->datavaddr;<br> datacount1 = bpage->datacount;<br> if (datavaddr == NULL) {<br> tempvaddr =<br> @@ -930,8 +928,7 @@ next_w:<br> datacount1);<br> }<br> <br> - bcopy((void *)bpage->vaddr, datavaddr,<br> - datacount1);<br> + bcopy(bpage->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-><wbr>datapage[1]);<br> datacount2 = bpage->datacount - datacount1;<br> - bcopy((void *)(bpage->vaddr + datacount1),<br> - datavaddr, datacount2);<br> + bcopy(bpage->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>
