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.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 8c2f4c4041c1..2f280d08fcc6 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -7187,13 +7187,14 @@ static int ipr_reset_enable_ioa(struct ipr_cmnd *ipr_cmd)
7187{ 7187{
7188 struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg; 7188 struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
7189 volatile u32 int_reg; 7189 volatile u32 int_reg;
7190 volatile u64 maskval;
7190 7191
7191 ENTER; 7192 ENTER;
7192 ipr_cmd->job_step = ipr_ioafp_identify_hrrq; 7193 ipr_cmd->job_step = ipr_ioafp_identify_hrrq;
7193 ipr_init_ioa_mem(ioa_cfg); 7194 ipr_init_ioa_mem(ioa_cfg);
7194 7195
7195 ioa_cfg->allow_interrupts = 1; 7196 ioa_cfg->allow_interrupts = 1;
7196 int_reg = readl(ioa_cfg->regs.sense_interrupt_reg); 7197 int_reg = readl(ioa_cfg->regs.sense_interrupt_reg32);
7197 7198
7198 if (int_reg & IPR_PCII_IOA_TRANS_TO_OPER) { 7199 if (int_reg & IPR_PCII_IOA_TRANS_TO_OPER) {
7199 writel((IPR_PCII_ERROR_INTERRUPTS | IPR_PCII_HRRQ_UPDATED), 7200 writel((IPR_PCII_ERROR_INTERRUPTS | IPR_PCII_HRRQ_UPDATED),
@@ -7205,9 +7206,12 @@ static int ipr_reset_enable_ioa(struct ipr_cmnd *ipr_cmd)
7205 /* Enable destructive diagnostics on IOA */ 7206 /* Enable destructive diagnostics on IOA */
7206 writel(ioa_cfg->doorbell, ioa_cfg->regs.set_uproc_interrupt_reg32); 7207 writel(ioa_cfg->doorbell, ioa_cfg->regs.set_uproc_interrupt_reg32);
7207 7208
7208 writel(IPR_PCII_OPER_INTERRUPTS, ioa_cfg->regs.clr_interrupt_mask_reg32); 7209 if (ioa_cfg->sis64) {
7209 if (ioa_cfg->sis64) 7210 maskval = IPR_PCII_IPL_STAGE_CHANGE;
7210 writel(IPR_PCII_IPL_STAGE_CHANGE, ioa_cfg->regs.clr_interrupt_mask_reg); 7211 maskval = (maskval << 32) | IPR_PCII_OPER_INTERRUPTS;
7212 writeq(maskval, ioa_cfg->regs.clr_interrupt_mask_reg);
7213 } else
7214 writel(IPR_PCII_OPER_INTERRUPTS, ioa_cfg->regs.clr_interrupt_mask_reg32);
7211 7215
7212 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg); 7216 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
7213 7217