* [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet
@ 2008-12-18 18:35 Lee Nipper
2008-12-20 6:10 ` Herbert Xu
0 siblings, 1 reply; 2+ messages in thread
From: Lee Nipper @ 2008-12-18 18:35 UTC (permalink / raw)
To: linux-crypto; +Cc: Kim Phillips
Previous commit for interrupt mitigation moved the done interrupt
acknowlegement from the isr to the talitos_done tasklet.
This patch moves the done interrupt acknowledgement back
into the isr so that done interrupts will always be acknowledged.
This covers the case for acknowledging interrupts for channel done processing
that has actually already been completed by the tasklet prior to fielding
a pending interrupt.
Signed-off-by: Lee Nipper <lee.nipper@freescale.com>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
---
This patch applies to
git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
drivers/crypto/talitos.c | 20 +++++++-------------
1 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index c2294f2..d14c68d 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -330,11 +330,9 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
/* descriptors with their done bits set don't get the error */
rmb();
- if ((request->desc->hdr & DESC_HDR_DONE) == DESC_HDR_DONE) {
+ if ((request->desc->hdr & DESC_HDR_DONE) == DESC_HDR_DONE)
status = 0;
- /* Ack each pkt completed on channel */
- out_be32(priv->reg + TALITOS_ICR, (1 << (ch * 2)));
- } else
+ else
if (!error)
break;
else
@@ -575,17 +573,13 @@ static irqreturn_t talitos_interrupt(int irq, void *data)
isr = in_be32(priv->reg + TALITOS_ISR);
isr_lo = in_be32(priv->reg + TALITOS_ISR_LO);
+ /* Acknowledge interrupt */
+ out_be32(priv->reg + TALITOS_ICR, isr);
+ out_be32(priv->reg + TALITOS_ICR_LO, isr_lo);
- if (unlikely((isr & ~TALITOS_ISR_CHDONE) || isr_lo)) {
- /*
- * Acknowledge error interrupts here.
- * Done interrupts are ack'ed as part of done_task.
- */
- out_be32(priv->reg + TALITOS_ICR, isr);
- out_be32(priv->reg + TALITOS_ICR_LO, isr_lo);
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet
2008-12-18 18:35 [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet Lee Nipper
@ 2008-12-20 6:10 ` Herbert Xu
0 siblings, 0 replies; 2+ messages in thread
From: Herbert Xu @ 2008-12-20 6:10 UTC (permalink / raw)
To: Lee Nipper; +Cc: linux-crypto, Kim Phillips
On Thu, Dec 18, 2008 at 06:35:05PM +0000, Lee Nipper wrote:
> Previous commit for interrupt mitigation moved the done interrupt
> acknowlegement from the isr to the talitos_done tasklet.
> This patch moves the done interrupt acknowledgement back
> into the isr so that done interrupts will always be acknowledged.
> This covers the case for acknowledging interrupts for channel done processing
> that has actually already been completed by the tasklet prior to fielding
> a pending interrupt.
>
> Signed-off-by: Lee Nipper <lee.nipper@freescale.com>
> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Patch applied. Thanks Lee!
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-12-20 6:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-18 18:35 [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet Lee Nipper
2008-12-20 6:10 ` Herbert Xu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox