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 <[email protected]>
@@ -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,