Date: Sat, 31 Oct 2009 17:06:36 +0000 (UTC) From: Stefan Esser <se@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r198719 - head/sys/dev/sym Message-ID: <200910311706.n9VH6abO096748@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910311706.n9VH6abO096748>