Commit 12a4dc43 authored by Thomas Taranowski's avatar Thomas Taranowski Committed by Linus Torvalds

rapidio: fix hang on RapidIO doorbell queue full condition

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: default avatarThomas 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 <>
Cc: <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 2e9d4d84
......@@ -973,7 +973,6 @@ fsl_rio_dbell_handler(int irq, void *dev_instance)
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 */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment