aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index ce839c8eeea3..f73007db2bec 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -7169,12 +7169,15 @@ static int ipr_reset_next_stage(struct ipr_cmnd *ipr_cmd)
7169 stage_time = ioa_cfg->transop_timeout; 7169 stage_time = ioa_cfg->transop_timeout;
7170 ipr_cmd->job_step = ipr_ioafp_identify_hrrq; 7170 ipr_cmd->job_step = ipr_ioafp_identify_hrrq;
7171 } else if (stage == IPR_IPL_INIT_STAGE_TRANSOP) { 7171 } else if (stage == IPR_IPL_INIT_STAGE_TRANSOP) {
7172 ipr_cmd->job_step = ipr_ioafp_identify_hrrq; 7172 int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32);
7173 maskval = IPR_PCII_IPL_STAGE_CHANGE; 7173 if (int_reg & IPR_PCII_IOA_TRANS_TO_OPER) {
7174 maskval = (maskval << 32) | IPR_PCII_IOA_TRANS_TO_OPER; 7174 ipr_cmd->job_step = ipr_ioafp_identify_hrrq;
7175 writeq(maskval, ioa_cfg->regs.set_interrupt_mask_reg); 7175 maskval = IPR_PCII_IPL_STAGE_CHANGE;
7176 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg); 7176 maskval = (maskval << 32) | IPR_PCII_IOA_TRANS_TO_OPER;
7177 return IPR_RC_JOB_CONTINUE; 7177 writeq(maskval, ioa_cfg->regs.set_interrupt_mask_reg);
7178 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
7179 return IPR_RC_JOB_CONTINUE;
7180 }
7178 } 7181 }
7179 7182
7180 ipr_cmd->timer.data = (unsigned long) ipr_cmd; 7183 ipr_cmd->timer.data = (unsigned long) ipr_cmd;