Module Name: src Committed By: skrll Date: Sat Jan 22 15:10:32 UTC 2022
Modified Files: src/sys/arch/alpha/isa: isadma_bounce.c src/sys/arch/arc/isa: isadma_bounce.c src/sys/arch/arm/include: bus_defs.h src/sys/arch/arm/nvidia: tegra_sdhc.c src/sys/arch/atari/isa: isa_dma.c src/sys/arch/emips/emips: bus_dma.c src/sys/arch/evbmips/isa: isadma_bounce.c src/sys/arch/evbmips/malta/pci: pcib.c src/sys/arch/mips/include: bus_dma_defs.h src/sys/arch/mips/mips: bus_dma.c src/sys/arch/mips/rmi: rmixl_obio.c rmixl_pcix.c src/sys/arch/mips/sibyte/pci: sbbrz.c src/sys/arch/newsmips/newsmips: bus.c src/sys/arch/playstation2/playstation2: bus_dma.c src/sys/arch/pmax/pmax: bus_dma.c src/sys/arch/powerpc/isa: isadma_machdep.c src/sys/arch/x86/include: bus_private.h src/sys/arch/x86/x86: bus_dma.c src/sys/dev/pci: if_bce.c if_bge.c if_nfe.c if_stge.c if_vge.c Log Message: Ensure bus_dmatag_subregion is called with an inclusive max_addr everywhere. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/alpha/isa/isadma_bounce.c cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arc/isa/isadma_bounce.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/include/bus_defs.h cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/nvidia/tegra_sdhc.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/atari/isa/isa_dma.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/emips/emips/bus_dma.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/evbmips/isa/isadma_bounce.c cvs rdiff -u -r1.23 -r1.24 src/sys/arch/evbmips/malta/pci/pcib.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/mips/include/bus_dma_defs.h cvs rdiff -u -r1.45 -r1.46 src/sys/arch/mips/mips/bus_dma.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/mips/rmi/rmixl_obio.c cvs rdiff -u -r1.18 -r1.19 src/sys/arch/mips/rmi/rmixl_pcix.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/mips/sibyte/pci/sbbrz.c cvs rdiff -u -r1.36 -r1.37 src/sys/arch/newsmips/newsmips/bus.c cvs rdiff -u -r1.24 -r1.25 src/sys/arch/playstation2/playstation2/bus_dma.c cvs rdiff -u -r1.62 -r1.63 src/sys/arch/pmax/pmax/bus_dma.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/powerpc/isa/isadma_machdep.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/x86/include/bus_private.h cvs rdiff -u -r1.83 -r1.84 src/sys/arch/x86/x86/bus_dma.c cvs rdiff -u -r1.59 -r1.60 src/sys/dev/pci/if_bce.c cvs rdiff -u -r1.349 -r1.350 src/sys/dev/pci/if_bge.c cvs rdiff -u -r1.78 -r1.79 src/sys/dev/pci/if_nfe.c cvs rdiff -u -r1.87 -r1.88 src/sys/dev/pci/if_stge.c cvs rdiff -u -r1.81 -r1.82 src/sys/dev/pci/if_vge.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/alpha/isa/isadma_bounce.c diff -u src/sys/arch/alpha/isa/isadma_bounce.c:1.16 src/sys/arch/alpha/isa/isadma_bounce.c:1.17 --- src/sys/arch/alpha/isa/isadma_bounce.c:1.16 Fri Dec 17 06:28:20 2021 +++ src/sys/arch/alpha/isa/isadma_bounce.c Sat Jan 22 15:10:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: isadma_bounce.c,v 1.16 2021/12/17 06:28:20 skrll Exp $ */ +/* $NetBSD: isadma_bounce.c,v 1.17 2022/01/22 15:10:30 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.16 2021/12/17 06:28:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.17 2022/01/22 15:10:30 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -565,9 +565,9 @@ isadma_bounce_dmamem_alloc(bus_dma_tag_t paddr_t high; if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) - high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); + high = ISA_DMA_BOUNCE_THRESHOLD - 1; else - high = trunc_page(avail_end); + high = avail_end - 1; return (_bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, 0, high)); Index: src/sys/arch/arc/isa/isadma_bounce.c diff -u src/sys/arch/arc/isa/isadma_bounce.c:1.18 src/sys/arch/arc/isa/isadma_bounce.c:1.19 --- src/sys/arch/arc/isa/isadma_bounce.c:1.18 Fri Dec 17 06:28:20 2021 +++ src/sys/arch/arc/isa/isadma_bounce.c Sat Jan 22 15:10:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: isadma_bounce.c,v 1.18 2021/12/17 06:28:20 skrll Exp $ */ +/* $NetBSD: isadma_bounce.c,v 1.19 2022/01/22 15:10:30 skrll Exp $ */ /* NetBSD: isadma_bounce.c,v 1.2 2000/06/01 05:49:36 thorpej Exp */ /*- @@ -33,7 +33,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.18 2021/12/17 06:28:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.19 2022/01/22 15:10:30 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -613,9 +613,9 @@ isadma_bounce_dmamem_alloc(bus_dma_tag_t paddr_t high; if (pmap_limits.avail_end > ISA_DMA_BOUNCE_THRESHOLD) - high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); + high = ISA_DMA_BOUNCE_THRESHOLD - 1; else - high = trunc_page(pmap_limits.avail_end); + high = pmap_limits.avail_end - 1; return _bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, 0, high); Index: src/sys/arch/arm/include/bus_defs.h diff -u src/sys/arch/arm/include/bus_defs.h:1.17 src/sys/arch/arm/include/bus_defs.h:1.18 --- src/sys/arch/arm/include/bus_defs.h:1.17 Mon Aug 30 22:56:26 2021 +++ src/sys/arch/arm/include/bus_defs.h Sat Jan 22 15:10:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_defs.h,v 1.17 2021/08/30 22:56:26 jmcneill Exp $ */ +/* $NetBSD: bus_defs.h,v 1.18 2022/01/22 15:10:30 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2001 The NetBSD Foundation, Inc. @@ -506,7 +506,7 @@ struct arm32_bus_dmamap { #define _BUS_DMA_BUFTYPE_RAW 4 #ifdef _ARM32_BUS_DMA_PRIVATE -#define _BUS_AVAIL_END physical_end +#define _BUS_AVAIL_END (physical_end - 1) /* * Cookie used for bounce buffers. A pointer to one of these it stashed in * the DMA map. Index: src/sys/arch/arm/nvidia/tegra_sdhc.c diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.29 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.30 --- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.29 Wed Jan 27 03:10:19 2021 +++ src/sys/arch/arm/nvidia/tegra_sdhc.c Sat Jan 22 15:10:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_sdhc.c,v 1.29 2021/01/27 03:10:19 thorpej Exp $ */ +/* $NetBSD: tegra_sdhc.c,v 1.30 2022/01/22 15:10:30 skrll Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "locators.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.29 2021/01/27 03:10:19 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.30 2022/01/22 15:10:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -115,7 +115,7 @@ tegra_sdhc_attach(device_t parent, devic sc->sc.sc_dmat = faa->faa_dmat; #ifdef _LP64 - error = bus_dmatag_subregion(faa->faa_dmat, 0, 0xffffffff, + error = bus_dmatag_subregion(faa->faa_dmat, 0, __MASK(32), &sc->sc.sc_dmat, BUS_DMA_WAITOK); if (error != 0) { aprint_error(": couldn't create DMA tag: %d\n", error); Index: src/sys/arch/atari/isa/isa_dma.c diff -u src/sys/arch/atari/isa/isa_dma.c:1.15 src/sys/arch/atari/isa/isa_dma.c:1.16 --- src/sys/arch/atari/isa/isa_dma.c:1.15 Fri Dec 17 06:28:20 2021 +++ src/sys/arch/atari/isa/isa_dma.c Sat Jan 22 15:10:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: isa_dma.c,v 1.15 2021/12/17 06:28:20 skrll Exp $ */ +/* $NetBSD: isa_dma.c,v 1.16 2022/01/22 15:10:30 skrll Exp $ */ #define ISA_DMA_STATS @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: isa_dma.c,v 1.15 2021/12/17 06:28:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: isa_dma.c,v 1.16 2022/01/22 15:10:30 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -614,9 +614,9 @@ _isa_bus_dmamem_alloc(bus_dma_tag_t t, b paddr_t high; if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) - high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); + high = ISA_DMA_BOUNCE_THRESHOLD - 1; else - high = trunc_page(avail_end); + high = avail_end - 1; return (bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, 0, high)); Index: src/sys/arch/emips/emips/bus_dma.c diff -u src/sys/arch/emips/emips/bus_dma.c:1.7 src/sys/arch/emips/emips/bus_dma.c:1.8 --- src/sys/arch/emips/emips/bus_dma.c:1.7 Sat Jan 22 15:08:10 2022 +++ src/sys/arch/emips/emips/bus_dma.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.7 2022/01/22 15:08:10 skrll Exp $ */ +/* $NetBSD: bus_dma.c,v 1.8 2022/01/22 15:10:31 skrll Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.7 2022/01/22 15:08:10 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.8 2022/01/22 15:10:31 skrll Exp $"); #include "opt_cputype.h" @@ -666,7 +666,7 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s return _bus_dmamem_alloc_range_common(t, size, alignment, boundary, segs, nsegs, rsegs, flags, pmap_limits.avail_start /*low*/, - pmap_limits.avail_end - PAGE_SIZE /*high*/); + pmap_limits.avail_end - 1 /*high*/); } /* Index: src/sys/arch/evbmips/isa/isadma_bounce.c diff -u src/sys/arch/evbmips/isa/isadma_bounce.c:1.14 src/sys/arch/evbmips/isa/isadma_bounce.c:1.15 --- src/sys/arch/evbmips/isa/isadma_bounce.c:1.14 Fri Dec 17 06:28:20 2021 +++ src/sys/arch/evbmips/isa/isadma_bounce.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: isadma_bounce.c,v 1.14 2021/12/17 06:28:20 skrll Exp $ */ +/* $NetBSD: isadma_bounce.c,v 1.15 2022/01/22 15:10:31 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000, 2001 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.14 2021/12/17 06:28:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: isadma_bounce.c,v 1.15 2022/01/22 15:10:31 skrll Exp $"); #define _MIPS_BUS_DMA_PRIVATE @@ -99,7 +99,7 @@ isadma_bounce_dmamap_create(bus_dma_tag_ * ISA DMA controller), we may have to bounce it as well. */ cookieflags = 0; - if (_BUS_AVAIL_END > (t->_wbase + t->_bounce_alloc_hi - t->_bounce_alloc_lo) + if (_BUS_AVAIL_END > (t->_wbase + t->_bounce_alloc_hi - t->_bounce_alloc_lo - 1) || ((map->_dm_size / PAGE_SIZE) + 1) > map->_dm_segcnt) { cookieflags |= _BUS_DMA_MIGHT_NEED_BOUNCE; cookiesize += (sizeof(bus_dma_segment_t) * @@ -499,10 +499,10 @@ isadma_bounce_dmamem_alloc(bus_dma_tag_t { paddr_t high; - if (_BUS_AVAIL_END > ISA_DMA_BOUNCE_THRESHOLD) - high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); + if (_BUS_AVAIL_END > ISA_DMA_BOUNCE_THRESHOLD - 1) + high = ISA_DMA_BOUNCE_THRESHOLD - 1; else - high = trunc_page(_BUS_AVAIL_END); + high = _BUS_AVAIL_END; return (_bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, 0, high)); Index: src/sys/arch/evbmips/malta/pci/pcib.c diff -u src/sys/arch/evbmips/malta/pci/pcib.c:1.23 src/sys/arch/evbmips/malta/pci/pcib.c:1.24 --- src/sys/arch/evbmips/malta/pci/pcib.c:1.23 Sat Jan 22 15:08:10 2022 +++ src/sys/arch/evbmips/malta/pci/pcib.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pcib.c,v 1.23 2022/01/22 15:08:10 skrll Exp $ */ +/* $NetBSD: pcib.c,v 1.24 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright 2002 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pcib.c,v 1.23 2022/01/22 15:08:10 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pcib.c,v 1.24 2022/01/22 15:10:31 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -196,7 +196,7 @@ pcib_attach(device_t parent, device_t se * Initialize the DMA tag used for ISA DMA. */ error = bus_dmatag_subregion(pa->pa_dmat, MALTA_DMA_ISA_PHYSBASE, - MALTA_DMA_ISA_PHYSBASE + MALTA_DMA_ISA_SIZE, &sc->sc_dmat, 0); + MALTA_DMA_ISA_PHYSBASE + MALTA_DMA_ISA_SIZE - 1, &sc->sc_dmat, 0); if (error) panic("malta_dma_init: failed to create ISA dma tag: %d", error); Index: src/sys/arch/mips/include/bus_dma_defs.h diff -u src/sys/arch/mips/include/bus_dma_defs.h:1.5 src/sys/arch/mips/include/bus_dma_defs.h:1.6 --- src/sys/arch/mips/include/bus_dma_defs.h:1.5 Sun Jul 26 08:08:41 2020 +++ src/sys/arch/mips/include/bus_dma_defs.h Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma_defs.h,v 1.5 2020/07/26 08:08:41 simonb Exp $ */ +/* $NetBSD: bus_dma_defs.h,v 1.6 2022/01/22 15:10:31 skrll Exp $ */ /*- * Copyright (c) 1997, 1998, 2000, 2001 The NetBSD Foundation, Inc. @@ -215,7 +215,7 @@ struct mips_bus_dmamap { }; #ifdef _MIPS_BUS_DMA_PRIVATE -#define _BUS_AVAIL_END pmap_limits.avail_end +#define _BUS_AVAIL_END (pmap_limits.avail_end - 1) /* * Cookie used for bounce buffers. A pointer to one of these it stashed in * the DMA map. Index: src/sys/arch/mips/mips/bus_dma.c diff -u src/sys/arch/mips/mips/bus_dma.c:1.45 src/sys/arch/mips/mips/bus_dma.c:1.46 --- src/sys/arch/mips/mips/bus_dma.c:1.45 Sat Jan 22 15:08:10 2022 +++ src/sys/arch/mips/mips/bus_dma.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.45 2022/01/22 15:08:10 skrll Exp $ */ +/* $NetBSD: bus_dma.c,v 1.46 2022/01/22 15:10:31 skrll Exp $ */ /*- * Copyright (c) 1997, 1998, 2001, 2020 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.45 2022/01/22 15:08:10 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.46 2022/01/22 15:10:31 skrll Exp $"); #define _MIPS_BUS_DMA_PRIVATE @@ -353,7 +353,7 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_ int cookieflags; void *cookiestore; - if (t->_bounce_thresh == 0 || _BUS_AVAIL_END <= t->_bounce_thresh) + if (t->_bounce_thresh == 0 || _BUS_AVAIL_END <= t->_bounce_thresh - 1) map->_dm_bounce_thresh = 0; cookieflags = 0; @@ -987,10 +987,10 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s { bus_addr_t high; - if (t->_bounce_alloc_hi != 0 && _BUS_AVAIL_END > t->_bounce_alloc_hi) - high = trunc_page(t->_bounce_alloc_hi); + if (t->_bounce_alloc_hi != 0 && _BUS_AVAIL_END > t->_bounce_alloc_hi - 1) + high = t->_bounce_alloc_hi - 1; else - high = trunc_page(_BUS_AVAIL_END); + high = _BUS_AVAIL_END; return _bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, t->_bounce_alloc_lo, high); @@ -1327,8 +1327,8 @@ _bus_dmatag_subregion(bus_dma_tag_t tag, { #ifdef _MIPS_NEED_BUS_DMA_BOUNCE - if ((((tag->_bounce_thresh != 0 && max_addr >= tag->_bounce_thresh) - && (tag->_bounce_alloc_hi != 0 && max_addr >= tag->_bounce_alloc_hi)) + if ((((tag->_bounce_thresh != 0 && max_addr >= tag->_bounce_thresh - 1) + && (tag->_bounce_alloc_hi != 0 && max_addr >= tag->_bounce_alloc_hi - 1)) || (tag->_bounce_alloc_hi == 0 && max_addr > _BUS_AVAIL_END)) && (min_addr <= tag->_bounce_alloc_lo)) { *newtag = tag; Index: src/sys/arch/mips/rmi/rmixl_obio.c diff -u src/sys/arch/mips/rmi/rmixl_obio.c:1.8 src/sys/arch/mips/rmi/rmixl_obio.c:1.9 --- src/sys/arch/mips/rmi/rmixl_obio.c:1.8 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/mips/rmi/rmixl_obio.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: rmixl_obio.c,v 1.8 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: rmixl_obio.c,v 1.9 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rmixl_obio.c,v 1.8 2022/01/22 15:08:11 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rmixl_obio.c,v 1.9 2022/01/22 15:10:31 skrll Exp $"); #include "locators.h" #include "pci.h" @@ -192,7 +192,7 @@ obio_bus_init(struct obio_softc *sc) /* dma space for addr < 4GB */ if (rcp->rc_32bit_dmat == NULL) { error = bus_dmatag_subregion(rcp->rc_64bit_dmat, - 0, (bus_addr_t)1 << 32, &rcp->rc_32bit_dmat, 0); + 0, __MASK(32), &rcp->rc_32bit_dmat, 0); if (error) panic("%s: failed to create 32bit dma tag: %d", __func__, error); @@ -201,7 +201,7 @@ obio_bus_init(struct obio_softc *sc) /* dma space for addr < 512MB */ if (rcp->rc_29bit_dmat == NULL) { error = bus_dmatag_subregion(rcp->rc_32bit_dmat, - 0, (bus_addr_t)1 << 29, &rcp->rc_29bit_dmat, 0); + 0, __MASK(29), &rcp->rc_29bit_dmat, 0); if (error) panic("%s: failed to create 29bit dma tag: %d", __func__, error); Index: src/sys/arch/mips/rmi/rmixl_pcix.c diff -u src/sys/arch/mips/rmi/rmixl_pcix.c:1.18 src/sys/arch/mips/rmi/rmixl_pcix.c:1.19 --- src/sys/arch/mips/rmi/rmixl_pcix.c:1.18 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/mips/rmi/rmixl_pcix.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: rmixl_pcix.c,v 1.18 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: rmixl_pcix.c,v 1.19 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rmixl_pcix.c,v 1.18 2022/01/22 15:08:11 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rmixl_pcix.c,v 1.19 2022/01/22 15:10:31 skrll Exp $"); #include "opt_pci.h" #include "pci.h" @@ -366,7 +366,7 @@ rmixl_pcix_attach(device_t parent, devic */ if (hbar_size < ((uint64_t)1 << 32)) { error = bus_dmatag_subregion(sc->sc_32bit_dmat, - 0, (bus_addr_t)hbar_size, &sc->sc_32bit_dmat, + 0, (bus_addr_t)hbar_size - 1, &sc->sc_32bit_dmat, BUS_DMA_NOWAIT); if (error) panic("%s: failed to subregion 32-bit dma tag:" @@ -374,7 +374,7 @@ rmixl_pcix_attach(device_t parent, devic sc->sc_64bit_dmat = NULL; } else { error = bus_dmatag_subregion(sc->sc_64bit_dmat, - 0, (bus_addr_t)hbar_size, &sc->sc_64bit_dmat, + 0, (bus_addr_t)hbar_size - 1, &sc->sc_64bit_dmat, BUS_DMA_NOWAIT); if (error) panic("%s: failed to subregion 64-bit dma tag:" Index: src/sys/arch/mips/sibyte/pci/sbbrz.c diff -u src/sys/arch/mips/sibyte/pci/sbbrz.c:1.7 src/sys/arch/mips/sibyte/pci/sbbrz.c:1.8 --- src/sys/arch/mips/sibyte/pci/sbbrz.c:1.7 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/mips/sibyte/pci/sbbrz.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: sbbrz.c,v 1.7 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: sbbrz.c,v 1.8 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright 2000, 2001 @@ -157,7 +157,7 @@ sbbrz_init(struct sbbrz_softc *sc) t->_dmamem_ops = mips_bus_dmamem_ops; t->_dmatag_ops = mips_bus_dmatag_ops; - error = bus_dmatag_subregion(t, 0, (bus_addr_t)1 << 32, &sc->sc_dmat32, 0); + error = bus_dmatag_subregion(t, 0, __MASK(32), &sc->sc_dmat32, 0); if (error) panic("%s: failed to create 32bit dma tag: %d", __func__, error); Index: src/sys/arch/newsmips/newsmips/bus.c diff -u src/sys/arch/newsmips/newsmips/bus.c:1.36 src/sys/arch/newsmips/newsmips/bus.c:1.37 --- src/sys/arch/newsmips/newsmips/bus.c:1.36 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/newsmips/newsmips/bus.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus.c,v 1.36 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: bus.c,v 1.37 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus.c,v 1.36 2022/01/22 15:08:11 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus.c,v 1.37 2022/01/22 15:10:31 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -711,7 +711,7 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s return (_bus_dmamem_alloc_range_common(t, size, alignment, boundary, segs, nsegs, rsegs, flags, pmap_limits.avail_start /*low*/, - pmap_limits.avail_end - PAGE_SIZE /*high*/)); + pmap_limits.avail_end - 1 /*high*/)); } /* Index: src/sys/arch/playstation2/playstation2/bus_dma.c diff -u src/sys/arch/playstation2/playstation2/bus_dma.c:1.24 src/sys/arch/playstation2/playstation2/bus_dma.c:1.25 --- src/sys/arch/playstation2/playstation2/bus_dma.c:1.24 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/playstation2/playstation2/bus_dma.c Sat Jan 22 15:10:31 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.24 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: bus_dma.c,v 1.25 2022/01/22 15:10:31 skrll Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.24 2022/01/22 15:08:11 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.25 2022/01/22 15:10:31 skrll Exp $"); #include <sys/param.h> #include <sys/kmem.h> @@ -488,7 +488,7 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s return (_bus_dmamem_alloc_range_common(t, size, alignment, boundary, segs, nsegs, rsegs, flags, avail_start /*low*/, - avail_end - PAGE_SIZE /*high*/)); + avail_end - 1 /*high*/)); } /* Index: src/sys/arch/pmax/pmax/bus_dma.c diff -u src/sys/arch/pmax/pmax/bus_dma.c:1.62 src/sys/arch/pmax/pmax/bus_dma.c:1.63 --- src/sys/arch/pmax/pmax/bus_dma.c:1.62 Sat Jan 22 15:08:11 2022 +++ src/sys/arch/pmax/pmax/bus_dma.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.62 2022/01/22 15:08:11 skrll Exp $ */ +/* $NetBSD: bus_dma.c,v 1.63 2022/01/22 15:10:32 skrll Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.62 2022/01/22 15:08:11 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.63 2022/01/22 15:10:32 skrll Exp $"); #include "opt_cputype.h" @@ -666,7 +666,7 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s return (_bus_dmamem_alloc_range_common(t, size, alignment, boundary, segs, nsegs, rsegs, flags, pmap_limits.avail_start /*low*/, - pmap_limits.avail_end - PAGE_SIZE /*high*/)); + pmap_limits.avail_end - 1 /*high*/)); } /* Index: src/sys/arch/powerpc/isa/isadma_machdep.c diff -u src/sys/arch/powerpc/isa/isadma_machdep.c:1.13 src/sys/arch/powerpc/isa/isadma_machdep.c:1.14 --- src/sys/arch/powerpc/isa/isadma_machdep.c:1.13 Fri Dec 17 06:28:20 2021 +++ src/sys/arch/powerpc/isa/isadma_machdep.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: isadma_machdep.c,v 1.13 2021/12/17 06:28:20 skrll Exp $ */ +/* $NetBSD: isadma_machdep.c,v 1.14 2022/01/22 15:10:32 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: isadma_machdep.c,v 1.13 2021/12/17 06:28:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: isadma_machdep.c,v 1.14 2022/01/22 15:10:32 skrll Exp $"); #define ISA_DMA_STATS @@ -608,9 +608,9 @@ _isa_bus_dmamem_alloc(bus_dma_tag_t t, b } if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) - high = trunc_page(ISA_DMA_BOUNCE_THRESHOLD); + high = ISA_DMA_BOUNCE_THRESHOLD - 1; else - high = trunc_page(avail_end); + high = avail_end - 1; return (_bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs, flags, 0, high)); } Index: src/sys/arch/x86/include/bus_private.h diff -u src/sys/arch/x86/include/bus_private.h:1.15 src/sys/arch/x86/include/bus_private.h:1.16 --- src/sys/arch/x86/include/bus_private.h:1.15 Sat Feb 22 19:49:11 2020 +++ src/sys/arch/x86/include/bus_private.h Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_private.h,v 1.15 2020/02/22 19:49:11 chs Exp $ */ +/* $NetBSD: bus_private.h,v 1.16 2022/01/22 15:10:32 skrll Exp $ */ /* NetBSD: bus.h,v 1.8 2005/03/09 19:04:46 matt Exp */ /*- @@ -151,7 +151,7 @@ _bus_virt_to_bus(struct pmap *pm, vaddr_ * largest physical address. */ #ifndef _BUS_AVAIL_END -#define _BUS_AVAIL_END (avail_end) +#define _BUS_AVAIL_END (avail_end - 1) #endif struct x86_bus_dma_tag { Index: src/sys/arch/x86/x86/bus_dma.c diff -u src/sys/arch/x86/x86/bus_dma.c:1.83 src/sys/arch/x86/x86/bus_dma.c:1.84 --- src/sys/arch/x86/x86/bus_dma.c:1.83 Thu Oct 7 12:52:27 2021 +++ src/sys/arch/x86/x86/bus_dma.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.83 2021/10/07 12:52:27 msaitoh Exp $ */ +/* $NetBSD: bus_dma.c,v 1.84 2022/01/22 15:10:32 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2007, 2020 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.83 2021/10/07 12:52:27 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.84 2022/01/22 15:10:32 skrll Exp $"); /* * The following is included because _bus_dma_uiomove is derived from @@ -308,7 +308,7 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_ map->dm_mapsize = 0; /* no valid mappings */ map->dm_nsegs = 0; - if (t->_bounce_thresh == 0 || _BUS_AVAIL_END <= t->_bounce_thresh) + if (t->_bounce_thresh == 0 || _BUS_AVAIL_END <= t->_bounce_thresh - 1) map->_dm_bounce_thresh = 0; cookieflags = 0; @@ -970,10 +970,10 @@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_s { bus_addr_t high; - if (t->_bounce_alloc_hi != 0 && _BUS_AVAIL_END > t->_bounce_alloc_hi) - high = trunc_page(t->_bounce_alloc_hi); + if (t->_bounce_alloc_hi != 0 && _BUS_AVAIL_END > t->_bounce_alloc_hi - 1) + high = t->_bounce_alloc_hi - 1; else - high = trunc_page(_BUS_AVAIL_END); + high = _BUS_AVAIL_END; return (_BUS_DMAMEM_ALLOC_RANGE(t, size, alignment, boundary, segs, nsegs, rsegs, flags, t->_bounce_alloc_lo, high)); @@ -1278,8 +1278,8 @@ _bus_dmatag_subregion(bus_dma_tag_t tag, bus_addr_t max_addr, bus_dma_tag_t *newtag, int flags) { - if ((tag->_bounce_thresh != 0 && max_addr >= tag->_bounce_thresh) && - (tag->_bounce_alloc_hi != 0 && max_addr >= tag->_bounce_alloc_hi) && + if ((tag->_bounce_thresh != 0 && max_addr >= tag->_bounce_thresh - 1) && + (tag->_bounce_alloc_hi != 0 && max_addr >= tag->_bounce_alloc_hi - 1) && (min_addr <= tag->_bounce_alloc_lo)) { *newtag = tag; /* if the tag must be freed, add a reference */ Index: src/sys/dev/pci/if_bce.c diff -u src/sys/dev/pci/if_bce.c:1.59 src/sys/dev/pci/if_bce.c:1.60 --- src/sys/dev/pci/if_bce.c:1.59 Fri Sep 10 14:43:04 2021 +++ src/sys/dev/pci/if_bce.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bce.c,v 1.59 2021/09/10 14:43:04 jakllsch Exp $ */ +/* $NetBSD: if_bce.c,v 1.60 2022/01/22 15:10:32 skrll Exp $ */ /* * Copyright (c) 2003 Clifford Wright. All rights reserved. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bce.c,v 1.59 2021/09/10 14:43:04 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bce.c,v 1.60 2022/01/22 15:10:32 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -264,7 +264,7 @@ bce_attach(device_t parent, device_t sel sc->bce_pa = *pa; /* BCM440x can only address 30 bits (1GB) */ - if (bus_dmatag_subregion(pa->pa_dmat, 0, (1 << 30), + if (bus_dmatag_subregion(pa->pa_dmat, 0, __MASK(30), &(sc->bce_dmatag), BUS_DMA_NOWAIT) != 0) { aprint_error_dev(self, "WARNING: failed to restrict dma range," Index: src/sys/dev/pci/if_bge.c diff -u src/sys/dev/pci/if_bge.c:1.349 src/sys/dev/pci/if_bge.c:1.350 --- src/sys/dev/pci/if_bge.c:1.349 Thu Sep 16 20:17:47 2021 +++ src/sys/dev/pci/if_bge.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bge.c,v 1.349 2021/09/16 20:17:47 andvar Exp $ */ +/* $NetBSD: if_bge.c,v 1.350 2022/01/22 15:10:32 skrll Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -79,7 +79,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.349 2021/09/16 20:17:47 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.350 2022/01/22 15:10:32 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -3735,9 +3735,8 @@ bge_attach(device_t parent, device_t sel if ((sc->bge_flags & BGEF_40BIT_BUG) != 0) { bus_dma_tag_t olddmatag = sc->bge_dmatag; /* save */ - if (bus_dmatag_subregion(olddmatag, 0, - (bus_addr_t)(1ULL << 40), &(sc->bge_dmatag), - BUS_DMA_NOWAIT) != 0) { + if (bus_dmatag_subregion(olddmatag, 0, __MASK(40), + &(sc->bge_dmatag), BUS_DMA_NOWAIT) != 0) { aprint_error_dev(self, "WARNING: failed to restrict dma range," " falling back to parent bus dma range\n"); Index: src/sys/dev/pci/if_nfe.c diff -u src/sys/dev/pci/if_nfe.c:1.78 src/sys/dev/pci/if_nfe.c:1.79 --- src/sys/dev/pci/if_nfe.c:1.78 Fri Mar 13 05:10:39 2020 +++ src/sys/dev/pci/if_nfe.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_nfe.c,v 1.78 2020/03/13 05:10:39 msaitoh Exp $ */ +/* $NetBSD: if_nfe.c,v 1.79 2022/01/22 15:10:32 skrll Exp $ */ /* $OpenBSD: if_nfe.c,v 1.77 2008/02/05 16:52:50 brad Exp $ */ /*- @@ -21,7 +21,7 @@ /* Driver for NVIDIA nForce MCP Fast Ethernet and Gigabit Ethernet */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_nfe.c,v 1.78 2020/03/13 05:10:39 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_nfe.c,v 1.79 2022/01/22 15:10:32 skrll Exp $"); #include "opt_inet.h" #include "vlan.h" @@ -324,7 +324,7 @@ nfe_attach(device_t parent, device_t sel if (pci_dma64_available(pa) && (sc->sc_flags & NFE_40BIT_ADDR) != 0) { if (bus_dmatag_subregion(pa->pa_dmat64, 0, - (bus_addr_t)(1ULL << 40), + __MASK(40), &sc->sc_dmat, BUS_DMA_WAITOK) != 0) { aprint_error_dev(self, Index: src/sys/dev/pci/if_stge.c diff -u src/sys/dev/pci/if_stge.c:1.87 src/sys/dev/pci/if_stge.c:1.88 --- src/sys/dev/pci/if_stge.c:1.87 Thu Jul 2 09:02:04 2020 +++ src/sys/dev/pci/if_stge.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_stge.c,v 1.87 2020/07/02 09:02:04 msaitoh Exp $ */ +/* $NetBSD: if_stge.c,v 1.88 2022/01/22 15:10:32 skrll Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.87 2020/07/02 09:02:04 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.88 2022/01/22 15:10:32 skrll Exp $"); #include <sys/param.h> @@ -450,7 +450,7 @@ stge_attach(device_t parent, device_t se if (pci_dma64_available(pa)) { if (bus_dmatag_subregion(pa->pa_dmat64, 0, - (bus_addr_t)(FRAG_ADDR_MASK + 1ULL), + FRAG_ADDR_MASK, &sc->sc_dmat, BUS_DMA_WAITOK) != 0) { aprint_error_dev(self, Index: src/sys/dev/pci/if_vge.c diff -u src/sys/dev/pci/if_vge.c:1.81 src/sys/dev/pci/if_vge.c:1.82 --- src/sys/dev/pci/if_vge.c:1.81 Sat Jul 24 21:31:37 2021 +++ src/sys/dev/pci/if_vge.c Sat Jan 22 15:10:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_vge.c,v 1.81 2021/07/24 21:31:37 andvar Exp $ */ +/* $NetBSD: if_vge.c,v 1.82 2022/01/22 15:10:32 skrll Exp $ */ /*- * Copyright (c) 2004 @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_vge.c,v 1.81 2021/07/24 21:31:37 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_vge.c,v 1.82 2022/01/22 15:10:32 skrll Exp $"); /* * VIA Networking Technologies VT612x PCI gigabit ethernet NIC driver. @@ -975,7 +975,7 @@ vge_attach(device_t parent, device_t sel if (pci_dma64_available(pa)) { if (bus_dmatag_subregion(pa->pa_dmat64, 0, - (bus_addr_t)(1ULL << 48), + __MASK(48), &sc->sc_dmat, BUS_DMA_WAITOK) != 0) { aprint_error_dev(self,