On Jul 31, 2012, at 7:10 PM, "Jianbin Kang" [off-list ref] wrote:
quoted
Actually this is what I'm working on now, using async_tx to replace the
memcpy. I believe the changes shouldn't be that significant.
Is the "hardware that can setup dma" you refer to something that does
not use this interface?
Yes, they use this interface, but split 'memcpy_toio' to two operation:
1. setup dma
2. wait/poll for the dma to finish.
So maybe it need to provide a generic function 'tx' for different hardwares.
It's not worth it to do sync DMA. The performance is terrible.
If async_tx is available, it's much better than this 'sync dma/memcpy'.
One problem with async_tx is, it can't detect memcpy error.
If the remote ntb goes down when async_memcpy is in operation, async_tx
will trigger an oops.
Yes that is something that needs to be addressed when we get async DMA support working.