summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-01-10 19:55:30 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-01-10 19:55:30 +0000
commit91b4c841e37756b992096fe652373e90066e5081 (patch)
tree5887c19d5439dbe8aa2047cf8d5aff6022db6daf
parent4e7506a23150896bc5e62e230c330316eb0075e6 (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 09d790ecb4ce..0fb31734ba67 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,