On 07/19/2015 07:44 PM, Robert Jarzmik wrote:
Vinod Koul <vinod.koul@xxxxxxxxx> writes:
That would be better idea also not confuse folks.
So I would revert the original patch, Documentation update, add new flag
DMA_DESC_REUSE for this and let Robert's driver use this
So is this plan fine with all, if so I push these changes tomorrow
Sure, works for me.
I small detail :
- can I submit a quick patch to renable virt-dma to have reusable txs, using
DMA_DESC_REUSE instead of DMA_CTR_ACK so that you can pick it up in the same
cycle ?
- can I add a function to dmaengine to mark a tx as "finished", ie. not
reusable any more, and freeable ?
If so, I'd like a name for it please.
What about void async_tx_finish_reusable(struct dma_async_tx_descriptor *tx)
?
The naming convention for dmaengine API functions is a bit cluttered at the
moment. For new functions we should agree on a single prefix. I'd suggest to
call the function dmaengine_desc_release().
The other thing is making sure that the new API is complete enough so that
it is possible for different types of dmaengine drivers to implement it.
Currently the dmaengine API has the built-in assumption that
dmaengine_prep_*() function and dmaengine_submit() are always called in
pairs. And some drivers rely on this assumption. It might be a good idea to
add a dmaengine_prep_reuse() function that takes a already allocated
descriptor and must be called before dmaengine_submit() can be called again.
This solves two issues, the first is that prep_*() and submit() will still
be called in pairs, the second one is that drivers have the chance to
re-initialize some state for the descriptor, e.g. set the progress for the
descriptor to 0, or similar. Drivers that don't need to do anything special
to reuse a descriptor don't need to implement the prep_reuse() callback and
the call becomes a no-op.
The other thing I'd like to see is a feature flag in the dma_slave_caps
struct to indicate weather a dmaengine driver supports re-usable descriptors
or not. This is important for generic code so it can figure out in advance
whether a driver supports re-usable descriptors or if it has to fallback
allocating individual descriptors for each transfer.
- Lars
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html