summaryrefslogtreecommitdiffstats
path: root/sys/dev/age
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-04-01 16:45:26 +0000
committeryongari <yongari@FreeBSD.org>2011-04-01 16:45:26 +0000
commita5be52d8024f41fc3cdd6c5fdb1ca746a0e9028e (patch)
treed13873f3b51da80cf5a15e91508498d373f9fc03 /sys/dev/age
parent9a8bd81a8442e84e6e92eb038cc48b8a61aef98d (diff)
downloadFreeBSD-src-a5be52d8024f41fc3cdd6c5fdb1ca746a0e9028e.zip
FreeBSD-src-a5be52d8024f41fc3cdd6c5fdb1ca746a0e9028e.tar.gz
64bit DMA caused data corruption. Unfortunately there is no known
workaround to use 64bit DMA. Disable 64bit DMA on Attansic L1 controller. Tested by: Yamagi Burmeister (lists <> yamagi dot org) MFC after: 1 week
Diffstat (limited to 'sys/dev/age')
-rw-r--r--sys/dev/age/if_age.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/age/if_age.c b/sys/dev/age/if_age.c
index d57a51d..c3e95be 100644
--- a/sys/dev/age/if_age.c
+++ b/sys/dev/age/if_age.c
@@ -1092,11 +1092,14 @@ again:
* Create Tx/Rx buffer parent tag.
* L1 supports full 64bit DMA addressing in Tx/Rx buffers
* so it needs separate parent DMA tag.
+ * XXX
+ * It seems enabling 64bit DMA causes data corruption. Limit
+ * DMA address space to 32bit.
*/
error = bus_dma_tag_create(
bus_get_dma_tag(sc->age_dev), /* parent */
1, 0, /* alignment, boundary */
- BUS_SPACE_MAXADDR, /* lowaddr */
+ BUS_SPACE_MAXADDR_32BIT, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
BUS_SPACE_MAXSIZE_32BIT, /* maxsize */
OpenPOWER on IntegriCloud