[lkml]   [2011]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[051/115] rapidio: fix hang on RapidIO doorbell queue full condition
2.6.32-longterm review patch.  If anyone has any objections, please let us know.

From: Thomas Taranowski <>

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,

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

Signed-off-by: Thomas Taranowski <>
Cc: Alexandre Bounine <>
Cc: Kumar Gala <>
Cc: Matt Porter <>
Cc: Li Yang <>
Cc: Thomas Moll <>
Cc: Micha Nelissen <>
Cc: Benjamin Herrenschmidt <>
Cc: Grant Likely <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Greg Kroah-Hartman <>

arch/powerpc/sysdev/fsl_rio.c | 1 -
1 file changed, 1 deletion(-)
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -832,7 +832,6 @@ fsl_rio_dbell_handler(int irq, void *dev
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 */

 \ /
  Last update: 2011-02-16 03:09    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean