Module Name:    src
Committed By:   skrll
Date:           Tue Feb 27 08:28:56 UTC 2024

Modified Files:
        src/sys/dev/ic: dwc_gmac.c

Log Message:
Enforce the device 32 bit DMA limitation via bus_dmatag_subregion if bus
can address more than 4GB.


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/dev/ic/dwc_gmac.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/dev/ic/dwc_gmac.c
diff -u src/sys/dev/ic/dwc_gmac.c:1.82 src/sys/dev/ic/dwc_gmac.c:1.83
--- src/sys/dev/ic/dwc_gmac.c:1.82	Tue Feb 27 08:25:38 2024
+++ src/sys/dev/ic/dwc_gmac.c	Tue Feb 27 08:28:56 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_gmac.c,v 1.82 2024/02/27 08:25:38 skrll Exp $ */
+/* $NetBSD: dwc_gmac.c,v 1.83 2024/02/27 08:28:56 skrll Exp $ */
 
 /*-
  * Copyright (c) 2013, 2014 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.82 2024/02/27 08:25:38 skrll Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.83 2024/02/27 08:28:56 skrll Exp $");
 
 /* #define	DWC_GMAC_DEBUG	1 */
 
@@ -245,6 +245,17 @@ dwc_gmac_attach(struct dwc_gmac_softc *s
 		aprint_normal_dev(sc->sc_dev,
 		    "HW feature mask: %x\n", hwft);
 	}
+
+	if (sizeof(bus_addr_t) > 4) {
+		int error = bus_dmatag_subregion(sc->sc_dmat, 0, __MASK(32),
+		    &sc->sc_dmat, BUS_DMA_WAITOK);
+		if (error != 0) {
+			aprint_error_dev(sc->sc_dev,
+			    "failed to create DMA subregion\n");
+			return ENOMEM;
+		}
+	}
+
 	if (hwft & GMAC_DMA_FEAT_ENHANCED_DESC) {
 		aprint_normal_dev(sc->sc_dev,
 		    "Using enhanced descriptor format\n");

Reply via email to