On 11/13/02 11:12 PM, Dan Malek wrote: > This isn't something new that hasn't been tried before. The problem > in the past with non-coherent processors, incoming DMA, and skbufs is > the buffers would share cache lines with other data which would get > corrupted as the result of the invalidate for the DMA. Typically, > data that was corrupted were flags and control information for the IP
The problem I was describing related to this patch was due to the L1 cache replacement algorithm. The L1 cache flushes a line to main memory when it's full with some LRU algo. Thus if you have no snooping (860/405), this can interfere with the DMA into the same piece of memory. Invalidating the whole buffer before giving it to DMA solves this and the cost of doing it on the whole buffer is not much. You have already done the big optimisation in removing the memcpy and changing flush to invalidate. Cheers, Hans ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/