From 59530d948ac0340cbf97ca8d31f28518f4185094 Mon Sep 17 00:00:00 2001 From: Wayne Boyer Date: Tue, 17 May 2011 09:18:53 -0700 Subject: [PATCH] --- yaml --- r: 252428 b: refs/heads/master c: a5442ba4a428081ebac7090f46c62ffaa17ca951 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/ipr.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 32be8704ce4c..d49bf130cd7f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d85e607b344d8fcd644456508a5bbe63ce011221 +refs/heads/master: a5442ba4a428081ebac7090f46c62ffaa17ca951 diff --git a/trunk/drivers/scsi/ipr.c b/trunk/drivers/scsi/ipr.c index 12868ca46110..888086c4e709 100644 --- a/trunk/drivers/scsi/ipr.c +++ b/trunk/drivers/scsi/ipr.c @@ -5149,21 +5149,21 @@ static irqreturn_t ipr_isr(int irq, void *devp) 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; }