Rafal Jaworowski wrote:
On 2009-08-19, at 17:30, Sam Leffler wrote:
Rafal Jaworowski wrote:
Author: raj
Date: Wed Aug 19 14:39:08 2009
New Revision: 196380
URL: http://svn.freebsd.org/changeset/base/196380
Log:
Fix USB cache sync operations for platforms with non-coherent DMA.
- usb_pc_cpu_invalidate() is called between [consecutive] reads
from a device,
so a sequence of BUS_DMASYNC_POSTREAD and _PREREAD should be used.
Note we
cannot use or'ed shorthand ( _POSTREAD | _PREREAD) for BUS_DMASYNC
flags, as
the low level bus dma sync operation is implementation dependent
and we
cannot assume the required order of operations to be guaranteed.
- usb_pc_cpu_flush() is called before writing to a device, so
BUS_DMASYNC_PREWRITE should be used.
Submitted by: Grzegorz Bernacki
Reviewed by: HPS, arm@, usb@ ML
Tested by: HPS, Mike Tancsa
Approved by: re (kib)
Obtained from: Semihalf
Is this different from the patch I tested on Gateworks 2358 boards
which didn't completely resolve problems?
Hm, not sure what patch you have tested with GW. There was an initial
workaround for this problem from late June time frame, and this commit
is a refined fix identical to the patch posted 05 Aug to a...@. There
were other ARM patches in the meantime involving cache sync, but they
were pmap-related.
I'm pretty sure it's the same one and was combined with other changes
you describe. Unfortunately reproducing the problem requires an
out-of-tree driver so we can't be sure whether all issues are resolved
on the platform.
Sam
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"