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: Ib6d29dc79fd5722c27284478e8da316929e86bff
5b1c328 libpayload EHCI: Add memory barrier to EHCI driver
payloads/libpayload/drivers/usb/ehci.c | 9 +++++++++
1 file changed, 9 insertions(+)
Upstream: review.coreboot.org