On Thu, Dec 17, 2009 at 11:45 AM, Kumar Gala <galak@xxxxxxxxxxxxxxxxxxx> wrote: >> 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. > > Ok, I'm still confused as to how the DMA interrupt interacts with the Talitos/raid side of things. The should be completely independent (separate interrupts, separate IP blocks). > To keep hardware implementation details out of md/raid the async_tx api provides support for managing cross-channel dependency chains. When the raid5 code submits a xor->copy->xor chain the api prepares all the descriptors across all the involved channels but then delays submission as needed to maintain ordering. So at a minimum we need two interrupts in this scenario one from Talitos to kick the submission of the copy-descriptor to fsldma when the first xor completes, and another one to kick the submission of the second xor-descriptor on Talitos when fsldma completes the copy. Needless to say it is more efficient when a channel has all the capabilities, but this channel switch mechanism has proven effective on iop3xx and ppc4xx. -- Dan -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html