From baceff2f498e395ee32dc645cbae1c7370bc07b8 Mon Sep 17 00:00:00 2001 From: Pyun YongHyeon Date: Tue, 4 Jan 2011 20:06:26 +0000 Subject: [PATCH] Limit hardware bug workaround to controllers that have 4GB boundary bug instead of blindly applying it to all controllers. Pointed out by: marius MFC after: 3 days --- sys/dev/bge/if_bge.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index 5bddaa24182..0963abe76a5 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -2482,8 +2482,11 @@ bge_dma_alloc(struct bge_softc *sc) * restriction and limit DMA address space to 32bit. It's not * clear whether there is another hardware issue here. */ + lowaddr = BUS_SPACE_MAXADDR; + if ((sc->bge_flags & BGE_FLAG_40BIT_BUG) != 0) + lowaddr = BUS_SPACE_MAXADDR_32BIT; error = bus_dma_tag_create(bus_get_dma_tag(sc->bge_dev), - 1, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, + 1, 0, lowaddr, BUS_SPACE_MAXADDR, NULL, NULL, BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL, &sc->bge_cdata.bge_buffer_tag); if (error != 0) {