|
@@ -5148,7 +5148,7 @@ static int ipr_cancel_op(struct scsi_cmnd *scsi_cmd)
|
|
ipr_trace;
|
|
ipr_trace;
|
|
}
|
|
}
|
|
|
|
|
|
- list_add_tail(&ipr_cmd->queue, &hrrq->hrrq_free_q);
|
|
|
|
|
|
+ list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q);
|
|
if (!ipr_is_naca_model(res))
|
|
if (!ipr_is_naca_model(res))
|
|
res->needs_sync_complete = 1;
|
|
res->needs_sync_complete = 1;
|
|
|
|
|
|
@@ -9349,7 +9349,10 @@ static int ipr_test_msi(struct ipr_ioa_cfg *ioa_cfg, struct pci_dev *pdev)
|
|
int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
|
|
int_reg = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
|
|
|
|
|
- rc = request_irq(pdev->irq, ipr_test_intr, 0, IPR_NAME, ioa_cfg);
|
|
|
|
|
|
+ if (ioa_cfg->intr_flag == IPR_USE_MSIX)
|
|
|
|
+ rc = request_irq(ioa_cfg->vectors_info[0].vec, ipr_test_intr, 0, IPR_NAME, ioa_cfg);
|
|
|
|
+ else
|
|
|
|
+ rc = request_irq(pdev->irq, ipr_test_intr, 0, IPR_NAME, ioa_cfg);
|
|
if (rc) {
|
|
if (rc) {
|
|
dev_err(&pdev->dev, "Can not assign irq %d\n", pdev->irq);
|
|
dev_err(&pdev->dev, "Can not assign irq %d\n", pdev->irq);
|
|
return rc;
|
|
return rc;
|
|
@@ -9371,7 +9374,10 @@ static int ipr_test_msi(struct ipr_ioa_cfg *ioa_cfg, struct pci_dev *pdev)
|
|
|
|
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
|
|
|
|
|
|
- free_irq(pdev->irq, ioa_cfg);
|
|
|
|
|
|
+ if (ioa_cfg->intr_flag == IPR_USE_MSIX)
|
|
|
|
+ free_irq(ioa_cfg->vectors_info[0].vec, ioa_cfg);
|
|
|
|
+ else
|
|
|
|
+ free_irq(pdev->irq, ioa_cfg);
|
|
|
|
|
|
LEAVE;
|
|
LEAVE;
|
|
|
|
|
|
@@ -9722,6 +9728,7 @@ static void __ipr_remove(struct pci_dev *pdev)
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
|
|
spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
|
|
wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
|
|
wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
|
|
flush_work(&ioa_cfg->work_q);
|
|
flush_work(&ioa_cfg->work_q);
|
|
|
|
+ INIT_LIST_HEAD(&ioa_cfg->used_res_q);
|
|
spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
|
|
spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
|
|
|
|
|
|
spin_lock(&ipr_driver_lock);
|
|
spin_lock(&ipr_driver_lock);
|