Thread (14 messages) 14 messages, 7 authors, 2010-07-14

Re: [PATCH v2 2/2] Crypto: Talitos: Support for Async_tx XOR offload

From: Ira W. Snyder <hidden>
Date: 2009-12-26 21:41:50
Also in: linux-crypto, linuxppc-dev, lkml

On Fri, Dec 18, 2009 at 03:17:42PM -0700, Dan Williams wrote:
On Fri, Dec 18, 2009 at 8:02 AM, Li Yang-R58472 [off-list ref] wrote:
quoted
quoted
Subject: Re: [PATCH v2 2/2] Crypto: Talitos: Support for
Async_tx XOR offload

Ira W. Snyder wrote:
quoted
Yes, I have used the device_prep_dma_interrupt()
functionality quite a
quoted
while back. However, I found it to be pretty much useless.
The specific case it is needed for Talitos/raid is a channel
switch interrupt.  The interrupt causes the cleanup operation
to be run which will kick off any pending dependent operations
on the xor channel.  In the raid case we only have callbacks
at the end of a chain, so we need the interrupt to kick the
engine in an operation chain like
xor->copy->xor->callback.
I am wondering if can use more callbacks to kick off pending dependent operations?
Like xor->callback->copy->callback->xor->callback?
No, the callback field is reserved for clients of the api.  What you want is:

xor->cleanupT->copy->cleanupF->xor->cleanupT->callback

Where cleanupT is the Talitos descriptor cleanup routine and cleanupF
is from fsldma.  The assumption is that the interrupt kicks the
cleanup routine and that calls dma_run_dependencies().
Hello Dan,

I guess it is not clear to driver authors that they should call
dma_run_dependencies() for each dma_async_tx_descriptor that is
processed. Without a careful re-reading of this email, I would not have
known. I guess anyone reviewing the driver missed it too. Judging by the
code in other drivers, it should be called immediately after calling the
callback function. The fsldma driver doesn't even call the function at
the moment.

To the people testing fsldma with talitos: you should probably try
adding a call to dma_run_dependencies() in the fsl_chan_ld_cleanup()
function. Then run your tests again, and see if the interoperability
problems are fixed.

I'm still working through a cleanup patch series. There are some places
where the locking doesn't seem right to me, and I'll be attempting to
fix those as I go through the driver.

Ira
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help