summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-01-10 19:59:20 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-01-10 19:59:20 +0000
commita1ffee8468932568dbb41bc354a74c56abc5fe82 (patch)
tree280ce19f62a3c447c5cf0e2854eb6d7223df0f46
parent53ceafda2d07f27abffc122ff3a7a125c79b0323 (diff)
Notes
-rw-r--r--sys/dev/bge/if_bge.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 94da0f79a8cae..f48dfbb23c9e1 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -2479,8 +2479,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,