diff options
author | yongari <yongari@FreeBSD.org> | 2011-01-04 20:06:26 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-01-04 20:06:26 +0000 |
commit | ee15a43d8579645bbe3b489df6824586258b77f8 (patch) | |
tree | 1e541a04bb3244c3b3c88b0af4ed67acdb60dc71 /sys/dev/bge | |
parent | 766cc9324189007926510b035c8a4dbae82cdf1e (diff) | |
download | FreeBSD-src-ee15a43d8579645bbe3b489df6824586258b77f8.zip FreeBSD-src-ee15a43d8579645bbe3b489df6824586258b77f8.tar.gz |
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
Diffstat (limited to 'sys/dev/bge')
-rw-r--r-- | sys/dev/bge/if_bge.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index 5bddaa2..0963abe 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) { |