ref: 6fb9ae8f4356f6b17f15894491d6339245dcd8ec
parent: 50850cf4b93d0a1b3a543a260c367dbf5f3209c1
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Sep 5 06:14:19 EDT 2015
usbehci: clean cache unconditionally before handing a buffer to the hardware even in the read case, we need to clean the cache so the cpu will not flush out old changes while the hardware updates the buffer.
--- a/sys/src/9/port/usbehci.c
+++ b/sys/src/9/port/usbehci.c
@@ -2171,11 +2171,10 @@
td->buff = (*ctlr->dmaalloc)(count+0x1000);
td->data = (uchar*)ROUND((uintptr)td->buff, 0x1000);
}
- if(a != nil && count > 0){
+ if(a != nil && count > 0)
memmove(td->data, a, count);
- if(ctlr->dmaflush != nil && td->buff != nil)
- (*ctlr->dmaflush)(1, td->data, count);
- }
+ if(ctlr->dmaflush != nil && td->buff != nil)
+ (*ctlr->dmaflush)(1, td->data, count);
pa = PADDR(td->data);
for(i = 0; i < nelem(td->buffer); i++){
td->buffer[i] = pa;