Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Apr 2011 16:45:26 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r220249 - head/sys/dev/age
Message-ID:  <201104011645.p31GjQk5052323@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: yongari
Date: Fri Apr  1 16:45:26 2011
New Revision: 220249
URL: http://svn.freebsd.org/changeset/base/220249

Log:
  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

Modified:
  head/sys/dev/age/if_age.c

Modified: head/sys/dev/age/if_age.c
==============================================================================
--- head/sys/dev/age/if_age.c	Fri Apr  1 16:06:19 2011	(r220248)
+++ head/sys/dev/age/if_age.c	Fri Apr  1 16:45:26 2011	(r220249)
@@ -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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104011645.p31GjQk5052323>