[PATCH] [54/275] rapidio: fix hang on RapidIO doorbell queue full condition

From: Andi Kleen
Date: Wed Mar 30 2011 - 18:01:11 EST


2.6.35-longterm review patch. If anyone has any objections, please let me know.

------------------
From: Thomas Taranowski <tom@xxxxxxxxxxxxxxx>

commit 12a4dc43911785f51a596f771ae0701b18d436f1 upstream.

In fsl_rio_dbell_handler() the code currently simply acknowledges the QFI
queue full interrupt, but does nothing to resolve the queue full
condition. Instead, it jumps to the end of the isr. When a queue full
condition occurs, the isr is then re-entered immediately and continually,
forever.

The fix is to just fall through and read out current doorbell entries.

Signed-off-by: Thomas Taranowski <tom@xxxxxxxxxxxxxxx>
Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
Cc: Alexandre Bounine <alexandre.bounine@xxxxxxx>
Cc: Kumar Gala <galak@xxxxxxxxxxxxxxxxxxx>
Cc: Matt Porter <mporter@xxxxxxxxxxxxxxxxxxx>
Cc: Li Yang <leoli@xxxxxxxxxxxxx>
Cc: Thomas Moll <thomas.moll@xxxxxxxxx>
Cc: Micha Nelissen <micha@xxxxxxxxxxxxxx>
Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
Cc: Grant Likely <grant.likely@xxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
arch/powerpc/sysdev/fsl_rio.c | 1 -
1 file changed, 1 deletion(-)

Index: linux-2.6.35.y/arch/powerpc/sysdev/fsl_rio.c
===================================================================
--- linux-2.6.35.y.orig/arch/powerpc/sysdev/fsl_rio.c 2011-03-29 22:51:48.062493371 -0700
+++ linux-2.6.35.y/arch/powerpc/sysdev/fsl_rio.c 2011-03-29 23:02:59.287318406 -0700
@@ -952,7 +952,6 @@
if (dsr & DOORBELL_DSR_QFI) {
pr_info("RIO: doorbell queue full\n");
out_be32(&priv->msg_regs->dsr, DOORBELL_DSR_QFI);
- goto out;
}

/* XXX Need to check/dispatch until queue empty */
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/