aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/ipr.c7
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);