Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Jan 2011 17:45:09 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r217226 - head/sys/dev/bge
Message-ID:  <201101101745.p0AHj9Sl088191@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: yongari
Date: Mon Jan 10 17:45:09 2011
New Revision: 217226
URL: http://svn.freebsd.org/changeset/base/217226

Log:
  Apply DMA address space restriction to controllers that have 4GB
  DMA boundary bug and runs with PCI-X mode.  watchdog timeout was
  observed on BCM5704 which lives behind certain PCI-X bridge(e.g.
  AMD 8131 PCI-X bridge).  It's still not clear whether the root
  cause came from that PCI-X bridge or not. The watchdog timeout
  indicates the issue is in TX path. If the bridge reorders TX
  mailbox write accesses it would generate all kinds of problems but
  I'm not sure.  This should be revisited.
  
  Tested by:	Michael L. Squires (mikes <> siralan dot org)

Modified:
  head/sys/dev/bge/if_bge.c

Modified: head/sys/dev/bge/if_bge.c
==============================================================================
--- head/sys/dev/bge/if_bge.c	Mon Jan 10 17:37:49 2011	(r217225)
+++ head/sys/dev/bge/if_bge.c	Mon Jan 10 17:45:09 2011	(r217226)
@@ -2473,8 +2473,18 @@ bge_dma_alloc(struct bge_softc *sc)
 
 	/* Create parent tag for buffers. */
 	boundary = 0;
-	if ((sc->bge_flags & BGE_FLAG_4G_BNDRY_BUG) != 0)
+	if ((sc->bge_flags & BGE_FLAG_4G_BNDRY_BUG) != 0) {
 		boundary = BGE_DMA_BNDRY;
+		/*
+		 * XXX
+		 * watchdog timeout issue was observed on BCM5704 which
+		 * lives behind PCI-X bridge(e.g AMD 8131 PCI-X bridge).
+		 * Limiting DMA address space to 32bits seems to address
+		 * it.
+		 */
+		if (sc->bge_flags & BGE_FLAG_PCIX)
+			lowaddr = BUS_SPACE_MAXADDR_32BIT;
+	}
 	error = bus_dma_tag_create(bus_get_dma_tag(sc->bge_dev),
 	    1, boundary, lowaddr, BUS_SPACE_MAXADDR, NULL,
 	    NULL, BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101101745.p0AHj9Sl088191>