diff options
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r-- | drivers/scsi/ipr.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 12868ca46110..888086c4e709 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -5149,21 +5149,21 @@ static irqreturn_t ipr_isr(int irq, void *devp) | |||
5149 | 5149 | ||
5150 | if (ipr_cmd != NULL) { | 5150 | if (ipr_cmd != NULL) { |
5151 | /* Clear the PCI interrupt */ | 5151 | /* Clear the PCI interrupt */ |
5152 | num_hrrq = 0; | ||
5152 | do { | 5153 | do { |
5153 | writel(IPR_PCII_HRRQ_UPDATED, ioa_cfg->regs.clr_interrupt_reg32); | 5154 | writel(IPR_PCII_HRRQ_UPDATED, ioa_cfg->regs.clr_interrupt_reg32); |
5154 | int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32); | 5155 | int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32); |
5155 | } while (int_reg & IPR_PCII_HRRQ_UPDATED && | 5156 | } while (int_reg & IPR_PCII_HRRQ_UPDATED && |
5156 | num_hrrq++ < IPR_MAX_HRRQ_RETRIES); | 5157 | num_hrrq++ < IPR_MAX_HRRQ_RETRIES); |
5157 | 5158 | ||
5158 | if (int_reg & IPR_PCII_HRRQ_UPDATED) { | ||
5159 | ipr_isr_eh(ioa_cfg, "Error clearing HRRQ"); | ||
5160 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | ||
5161 | return IRQ_HANDLED; | ||
5162 | } | ||
5163 | |||
5164 | } else if (rc == IRQ_NONE && irq_none == 0) { | 5159 | } else if (rc == IRQ_NONE && irq_none == 0) { |
5165 | int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32); | 5160 | int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32); |
5166 | irq_none++; | 5161 | irq_none++; |
5162 | } else if (num_hrrq == IPR_MAX_HRRQ_RETRIES && | ||
5163 | int_reg & IPR_PCII_HRRQ_UPDATED) { | ||
5164 | ipr_isr_eh(ioa_cfg, "Error clearing HRRQ"); | ||
5165 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | ||
5166 | return IRQ_HANDLED; | ||
5167 | } else | 5167 | } else |
5168 | break; | 5168 | break; |
5169 | } | 5169 | } |