aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Smith <kensmith@FreeBSD.org>2009-11-09 21:28:07 +0000
committerKen Smith <kensmith@FreeBSD.org>2009-11-09 21:28:07 +0000
commit65a1fd769a3ac665cf9e489ef70c575d6e2a4946 (patch)
treed8b007c69f29c3ee6820445eee36a5ef7d7be002
parent3092cfd15bd4a120aaae8981890157b8e2ce0024 (diff)
downloadsrc-65a1fd769a3ac665cf9e489ef70c575d6e2a4946.tar.gz
src-65a1fd769a3ac665cf9e489ef70c575d6e2a4946.zip
MFC r198719 (head) r199095 (stable/8):
> 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. Requested by: Stefan Esser (se at freebsd dot org)[1] Reviewed by: jhb, scottl [1] Stefan requested this be part of 8.0 but has been unavailable to do the MFC since submitting the request. We want to get 8.0-RC3 started so I'm doing the merges with re@ hat on. Approved by: re (bz)
Notes
Notes: svn path=/releng/8.0/; revision=199109
-rw-r--r--sys/dev/sym/sym_hipd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c
index ab74a55c94d7..a43c816c65fe 100644
--- a/sys/dev/sym/sym_hipd.c
+++ b/sys/dev/sym/sym_hipd.c
@@ -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,