aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
authorbrking@us.ibm.com <brking@us.ibm.com>2005-11-01 18:01:54 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2005-11-06 14:05:42 -0500
commit3d1d0da67520aa5dbcea617d52546ae046e946a4 (patch)
treeddbf40e4161cea381add46f34b74f91b9e08f486 /drivers/scsi/ipr.c
parentb0df54bb4c9df6c1b1633a9f990b718059cda394 (diff)
[SCSI] ipr: Runtime reset
Some IPR RAID adapter will automatically create single device RAID arrays for all attached devices when the card is initialized. Setting the RUNTIME_RESET doorbell bit will prevent this from occurring, since we only want this behavior the first time the card is initialized and not each time the card happens to get reset. Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index b773852b4ea8..97f33ddc7bdd 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -4281,6 +4281,7 @@ static int ipr_ioa_reset_done(struct ipr_cmnd *ipr_cmd)
4281 ioa_cfg->in_reset_reload = 0; 4281 ioa_cfg->in_reset_reload = 0;
4282 ioa_cfg->allow_cmds = 1; 4282 ioa_cfg->allow_cmds = 1;
4283 ioa_cfg->reset_cmd = NULL; 4283 ioa_cfg->reset_cmd = NULL;
4284 ioa_cfg->doorbell |= IPR_RUNTIME_RESET;
4284 4285
4285 list_for_each_entry(res, &ioa_cfg->used_res_q, queue) { 4286 list_for_each_entry(res, &ioa_cfg->used_res_q, queue) {
4286 if (ioa_cfg->allow_ml_add_del && (res->add_to_ml || res->del_from_ml)) { 4287 if (ioa_cfg->allow_ml_add_del && (res->add_to_ml || res->del_from_ml)) {
@@ -5101,7 +5102,7 @@ static int ipr_reset_enable_ioa(struct ipr_cmnd *ipr_cmd)
5101 } 5102 }
5102 5103
5103 /* Enable destructive diagnostics on IOA */ 5104 /* Enable destructive diagnostics on IOA */
5104 writel(IPR_DOORBELL, ioa_cfg->regs.set_uproc_interrupt_reg); 5105 writel(ioa_cfg->doorbell, ioa_cfg->regs.set_uproc_interrupt_reg);
5105 5106
5106 writel(IPR_PCII_OPER_INTERRUPTS, ioa_cfg->regs.clr_interrupt_mask_reg); 5107 writel(IPR_PCII_OPER_INTERRUPTS, ioa_cfg->regs.clr_interrupt_mask_reg);
5107 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg); 5108 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
@@ -5917,6 +5918,7 @@ static void __devinit ipr_init_ioa_cfg(struct ipr_ioa_cfg *ioa_cfg,
5917 ioa_cfg->host = host; 5918 ioa_cfg->host = host;
5918 ioa_cfg->pdev = pdev; 5919 ioa_cfg->pdev = pdev;
5919 ioa_cfg->log_level = ipr_log_level; 5920 ioa_cfg->log_level = ipr_log_level;
5921 ioa_cfg->doorbell = IPR_DOORBELL;
5920 sprintf(ioa_cfg->eye_catcher, IPR_EYECATCHER); 5922 sprintf(ioa_cfg->eye_catcher, IPR_EYECATCHER);
5921 sprintf(ioa_cfg->trace_start, IPR_TRACE_START_LABEL); 5923 sprintf(ioa_cfg->trace_start, IPR_TRACE_START_LABEL);
5922 sprintf(ioa_cfg->ipr_free_label, IPR_FREEQ_LABEL); 5924 sprintf(ioa_cfg->ipr_free_label, IPR_FREEQ_LABEL);