diff options
-rw-r--r-- | drivers/scsi/ipr.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index b15dfcbde4a0..101e519844df 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -7444,7 +7444,7 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev, | |||
7444 | unsigned long ipr_regs_pci; | 7444 | unsigned long ipr_regs_pci; |
7445 | void __iomem *ipr_regs; | 7445 | void __iomem *ipr_regs; |
7446 | int rc = PCIBIOS_SUCCESSFUL; | 7446 | int rc = PCIBIOS_SUCCESSFUL; |
7447 | volatile u32 mask, uproc; | 7447 | volatile u32 mask, uproc, interrupts; |
7448 | 7448 | ||
7449 | ENTER; | 7449 | ENTER; |
7450 | 7450 | ||
@@ -7551,9 +7551,14 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev, | |||
7551 | * the card is in an unknown state and needs a hard reset | 7551 | * the card is in an unknown state and needs a hard reset |
7552 | */ | 7552 | */ |
7553 | mask = readl(ioa_cfg->regs.sense_interrupt_mask_reg); | 7553 | mask = readl(ioa_cfg->regs.sense_interrupt_mask_reg); |
7554 | interrupts = readl(ioa_cfg->regs.sense_interrupt_reg); | ||
7554 | uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg); | 7555 | uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg); |
7555 | if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT)) | 7556 | if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT)) |
7556 | ioa_cfg->needs_hard_reset = 1; | 7557 | ioa_cfg->needs_hard_reset = 1; |
7558 | if (interrupts & IPR_PCII_ERROR_INTERRUPTS) | ||
7559 | ioa_cfg->needs_hard_reset = 1; | ||
7560 | if (interrupts & IPR_PCII_IOA_UNIT_CHECKED) | ||
7561 | ioa_cfg->ioa_unit_checked = 1; | ||
7557 | 7562 | ||
7558 | ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER); | 7563 | ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER); |
7559 | rc = request_irq(pdev->irq, ipr_isr, IRQF_SHARED, IPR_NAME, ioa_cfg); | 7564 | rc = request_irq(pdev->irq, ipr_isr, IRQF_SHARED, IPR_NAME, ioa_cfg); |