diff options
author | brking@us.ibm.com <brking@us.ibm.com> | 2005-11-01 18:01:54 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-11-06 14:05:42 -0500 |
commit | 3d1d0da67520aa5dbcea617d52546ae046e946a4 (patch) | |
tree | ddbf40e4161cea381add46f34b74f91b9e08f486 /drivers/scsi/ipr.c | |
parent | b0df54bb4c9df6c1b1633a9f990b718059cda394 (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.c | 4 |
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); |