All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] ipr: fix possible false positive detection of stuck interrupt
       [not found] <20110517161648.403401807@linux.vnet.ibm.com>
@ 2011-05-17 16:18 ` Wayne Boyer
  2011-05-17 17:59   ` Brian King
  0 siblings, 1 reply; 2+ messages in thread
From: Wayne Boyer @ 2011-05-17 16:18 UTC (permalink / raw)
  To: James Bottomley; +Cc: linux-scsi, Brian King, Kleber Sacilotto de Souza

If the driver is getting flooded with interrupts, there's a possibility
that the interrupt service routine could falsely detect a stuck interrupt
condition and reset the adapter.

This patch changes the logic such that the routine will loop back into
the command processing code one more time after detecting the stuck
interrupt signature.  If there are no commands to process after that pass,
and the interrupt is still not cleared, then the driver will print the
"Error clearing HRRQ" message and reset the adapter.

Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com>
---

 drivers/scsi/ipr.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Index: b/drivers/scsi/ipr.c
===================================================================
--- a/drivers/scsi/ipr.c	2011-05-03 09:09:53.389771489 -0700
+++ b/drivers/scsi/ipr.c	2011-05-04 11:50:18.855071813 -0700
@@ -5149,21 +5149,21 @@ static irqreturn_t ipr_isr(int irq, void

 		if (ipr_cmd != NULL) {
 			/* Clear the PCI interrupt */
+			num_hrrq = 0;
 			do {
 				writel(IPR_PCII_HRRQ_UPDATED, ioa_cfg->regs.clr_interrupt_reg32);
 				int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32);
 			} while (int_reg & IPR_PCII_HRRQ_UPDATED &&
 					num_hrrq++ < IPR_MAX_HRRQ_RETRIES);

-			if (int_reg & IPR_PCII_HRRQ_UPDATED) {
-				ipr_isr_eh(ioa_cfg, "Error clearing HRRQ");
-				spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
-				return IRQ_HANDLED;
-			}
-
 		} else if (rc == IRQ_NONE && irq_none == 0) {
 			int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32);
 			irq_none++;
+		} else if (num_hrrq == IPR_MAX_HRRQ_RETRIES &&
+			   int_reg & IPR_PCII_HRRQ_UPDATED) {
+			ipr_isr_eh(ioa_cfg, "Error clearing HRRQ");
+			spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
+			return IRQ_HANDLED;
 		} else
 			break;
 	}


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/1] ipr: fix possible false positive detection of stuck interrupt
  2011-05-17 16:18 ` [PATCH 1/1] ipr: fix possible false positive detection of stuck interrupt Wayne Boyer
@ 2011-05-17 17:59   ` Brian King
  0 siblings, 0 replies; 2+ messages in thread
From: Brian King @ 2011-05-17 17:59 UTC (permalink / raw)
  To: Wayne Boyer; +Cc: James Bottomley, linux-scsi, Kleber Sacilotto de Souza

Acked-by: Brian King <brking@linux.vnet.ibm.com>

-- 
Brian King
Linux on Power Virtualization
IBM Linux Technology Center



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-05-17 17:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20110517161648.403401807@linux.vnet.ibm.com>
2011-05-17 16:18 ` [PATCH 1/1] ipr: fix possible false positive detection of stuck interrupt Wayne Boyer
2011-05-17 17:59   ` Brian King

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.