EHCI driver accesses mmio space using regular struct pointers. In order to avoid any CPU re-ordering, memory barrier is required in async_set_schedule, especially for arm64. Without the memory barrier, there seems to be re-ordering taking place which leads to USB errors with some flash drives as well as transfer errors in netboot. BUG=chrome-os-partner:31533 BRANCH=None TEST=With the memory barrier introduced, netboot for ryu completes transfer without any error and finishes within 6-7 seconds. Change-Id: Ic05d47422312a1cddbebe3180f4f159853604440 Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://chromium-review.googlesource.com/213917 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: Furquan Shaikh <furquan@chromium.org> Commit-Queue: Furquan Shaikh <furquan@chromium.org> |
||
|---|---|---|
| .. | ||
| ehci.c | ||
| ehci.h | ||
| ehci_private.h | ||
| ehci_rh.c | ||
| generic_hub.c | ||
| generic_hub.h | ||
| ohci.c | ||
| ohci.h | ||
| ohci_private.h | ||
| ohci_rh.c | ||
| quirks.c | ||
| TODO | ||
| uhci.c | ||
| uhci.h | ||
| uhci_private.h | ||
| uhci_rh.c | ||
| usb.c | ||
| usb_dev.c | ||
| usbhid.c | ||
| usbhub.c | ||
| usbinit.c | ||
| usbmsc.c | ||
| xhci.c | ||
| xhci.h | ||
| xhci_commands.c | ||
| xhci_debug.c | ||
| xhci_devconf.c | ||
| xhci_events.c | ||
| xhci_private.h | ||
| xhci_rh.c | ||