CVSROOT:        /cvs
Module name:    src
Changes by:     patr...@cvs.openbsd.org 2020/04/01 02:43:33

Modified files:
        sys/dev/usb    : usbdi.c 

Log message:
USB control requests to the root hub differ from those to devices.  For
devices we have proper DMA transfers, so that the DMA syncs before and
after transfers are necessary.  For the root hub, we seem to fulfill
those requests ourselves, e.g. by using memcpy.  The POSTREAD DMA sync
on a read will invalidate the caches for the buffer, and unless our root
hub code explicitly flushed the data to memory, it's possible that our
memcpy got removed from history.

Until a better solution is implemented, like moving the DMA syncs from
the USB subsystem into the controller driver, allocate all buffers that
are not explicitly allocated using USB_DMA_COHERENT.  The IO buffers
continue to be allocated as non-coherent.

Regression found by jsg@
ok kettenis@

Reply via email to