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.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index f328089a1060..2197b57fb225 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -5148,7 +5148,7 @@ static int ipr_cancel_op(struct scsi_cmnd *scsi_cmd)
5148 ipr_trace; 5148 ipr_trace;
5149 } 5149 }
5150 5150
5151 list_add_tail(&ipr_cmd->queue, &hrrq->hrrq_free_q); 5151 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q);
5152 if (!ipr_is_naca_model(res)) 5152 if (!ipr_is_naca_model(res))
5153 res->needs_sync_complete = 1; 5153 res->needs_sync_complete = 1;
5154 5154
@@ -9349,7 +9349,10 @@ static int ipr_test_msi(struct ipr_ioa_cfg *ioa_cfg, struct pci_dev *pdev)
9349 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg); 9349 int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
9350 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); 9350 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
9351 9351
9352 rc = request_irq(pdev->irq, ipr_test_intr, 0, IPR_NAME, ioa_cfg); 9352 if (ioa_cfg->intr_flag == IPR_USE_MSIX)
9353 rc = request_irq(ioa_cfg->vectors_info[0].vec, ipr_test_intr, 0, IPR_NAME, ioa_cfg);
9354 else
9355 rc = request_irq(pdev->irq, ipr_test_intr, 0, IPR_NAME, ioa_cfg);
9353 if (rc) { 9356 if (rc) {
9354 dev_err(&pdev->dev, "Can not assign irq %d\n", pdev->irq); 9357 dev_err(&pdev->dev, "Can not assign irq %d\n", pdev->irq);
9355 return rc; 9358 return rc;
@@ -9371,7 +9374,10 @@ static int ipr_test_msi(struct ipr_ioa_cfg *ioa_cfg, struct pci_dev *pdev)
9371 9374
9372 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); 9375 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
9373 9376
9374 free_irq(pdev->irq, ioa_cfg); 9377 if (ioa_cfg->intr_flag == IPR_USE_MSIX)
9378 free_irq(ioa_cfg->vectors_info[0].vec, ioa_cfg);
9379 else
9380 free_irq(pdev->irq, ioa_cfg);
9375 9381
9376 LEAVE; 9382 LEAVE;
9377 9383
@@ -9722,6 +9728,7 @@ static void __ipr_remove(struct pci_dev *pdev)
9722 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); 9728 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
9723 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); 9729 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
9724 flush_work(&ioa_cfg->work_q); 9730 flush_work(&ioa_cfg->work_q);
9731 INIT_LIST_HEAD(&ioa_cfg->used_res_q);
9725 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); 9732 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
9726 9733
9727 spin_lock(&ipr_driver_lock); 9734 spin_lock(&ipr_driver_lock);