Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-3] src/sys/dev/usb



Module Name:    src
Committed By:   jdc
Date:           Sun Sep 28 16:06:39 UTC 2008

Modified Files:
        src/sys/dev/usb [netbsd-3]: ehci.c ehcivar.h ohci.c ohcivar.h uhci.c
            uhcivar.h usb_mem.c usb_mem.h

Log Message:
Pull up revisions:
  sys/dev/usb/ehci.c            1.138 via patch
  sys/dev/usb/ehcivar.h         1.31 via patch
  sys/dev/usb/ohci.c            1.195 via patch
  sys/dev/usb/ohcivar.h         1.45 via patch
  sys/dev/usb/uhci.c            1.223 via patch
  sys/dev/usb/uhcivar.h         1.45 via patch
  sys/dev/usb/usb_mem.c         1.37 via patch
  sys/dev/usb/usb_mem.h         1.27 via patch
requested by bouyer in ticket 1946.

Add appropriate bus_dmamap_sync() calls to uhci(4), ohci(4) and ehci(4),
as proposed on tech-kern@.
While all DMA memory used in the USB framework is mapped BUS_DMAMAP_COHERENT
(including data memory, which is memcpy'd from/to USB-private buffers),
the CPU can reorder loads or stores from/to main memory, causing the
controller to have an incoherent view of the DMA descriptors lists for a
short time. bus_dmamap_sync() should contain memory barriers that prevents
the CPU from reordering load/store. Note that BUS_DMAMAP_COHERENT is
still required for the DMA descriptor lists - these can't work properly
with software cache coherency.
This fixes "host controller process error/host controller halted" errors
I'm occasionally seeing with a umodem device on uhci on x86.
Thanks to Michael Lorenz for testing it on his O2, and Izumi Tsutsui on
his Cobalt Qube 2700.


To generate a diff of this commit:
cvs rdiff -r1.91.2.9 -r1.91.2.10 src/sys/dev/usb/ehci.c
cvs rdiff -r1.17.8.2 -r1.17.8.3 src/sys/dev/usb/ehcivar.h
cvs rdiff -r1.157.2.1 -r1.157.2.2 src/sys/dev/usb/ohci.c
cvs rdiff -r1.36 -r1.36.2.1 src/sys/dev/usb/ohcivar.h
cvs rdiff -r1.185.2.2 -r1.185.2.3 src/sys/dev/usb/uhci.c
cvs rdiff -r1.38 -r1.38.8.1 src/sys/dev/usb/uhcivar.h
cvs rdiff -r1.28 -r1.28.8.1 src/sys/dev/usb/usb_mem.c
cvs rdiff -r1.22 -r1.22.8.1 src/sys/dev/usb/usb_mem.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Home | Main Index | Thread Index | Old Index