svn commit: r198719 - head/sys/dev/sym

Stefan Esser se at FreeBSD.org
Sat Oct 31 17:06:37 UTC 2009


Author: se
Date: Sat Oct 31 17:06:36 2009
New Revision: 198719
URL: http://svn.freebsd.org/changeset/base/198719

Log:
  While certain supported Symbios/LSI SCSI chips (532c896, 53c1000, 53c1010)
  do support 64bit addresses, the current SCRIPTS code supports only 32bit
  addresses causing data corruption for buffer addresses >4GB. This problem
  affects 64bit machines with more than 4GB RAM or amd64 with 4GB and
  memory hole remapping.
  Work-around this problem with a bus_dma tag that requests bounce-buffers
  for addresses >4GB. This causes some overhead, but given the maximum SCSI
  bus speed of 160MB/s compared, the effect should hardly be noticeable.
  The problem was reported by Mike Watters (mike at mwatters net) who also
  verified that this fix cures the problem.
  
  Since this change is a NOOP on systems with less than 4GB RAM and fixes
  data corruption (in RAM and on disk) on systems with more than 4GB, I hope
  that this change is accepted for 8.0.
  
  MFC after:	3 days (pending approval)

Modified:
  head/sys/dev/sym/sym_hipd.c

Modified: head/sys/dev/sym/sym_hipd.c
==============================================================================
--- head/sys/dev/sym/sym_hipd.c	Sat Oct 31 14:19:50 2009	(r198718)
+++ head/sys/dev/sym/sym_hipd.c	Sat Oct 31 17:06:36 2009	(r198719)
@@ -8582,7 +8582,7 @@ sym_pci_attach(device_t dev)
 	 *  Allocate a tag for the DMA of user data.
 	 */
 	if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24),
-				BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
+				BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
 				NULL, NULL,
 				BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG,
 				(1<<24), 0, busdma_lock_mutex, &np->mtx,


More information about the svn-src-all mailing list