Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley: "This is a large set of updates, mostly for drivers (qla2xxx [including support for new 83xx based card], qla4xxx, mpt2sas, bfa, zfcp, hpsa, be2iscsi, isci, lpfc, ipr, ibmvfc, ibmvscsi, megaraid_sas). There's also a rework for tape adding virtually unlimited numbers of tape drives plus a set of dif fixes for sd and a fix for a live lock on hot remove of SCSI devices. This round includes a signed tag pull of isci-for-3.6 Signed-off-by: James Bottomley <JBottomley@Parallels.com>" Fix up trivial conflict in drivers/scsi/qla2xxx/qla_nx.c due to new PCI helper function use in a function that was removed by this pull. * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (198 commits) [SCSI] st: remove st_mutex [SCSI] sd: Ensure we correctly disable devices with unknown protection type [SCSI] hpsa: gen8plus Smart Array IDs [SCSI] qla4xxx: Update driver version to 5.03.00-k1 [SCSI] qla4xxx: Disable generating pause frames for ISP83XX [SCSI] qla4xxx: Fix double clearing of risc_intr for ISP83XX [SCSI] qla4xxx: IDC implementation for Loopback [SCSI] qla4xxx: update copyrights in LICENSE.qla4xxx [SCSI] qla4xxx: Fix panic while rmmod [SCSI] qla4xxx: Fail probe_adapter if IRQ allocation fails [SCSI] qla4xxx: Prevent MSI/MSI-X falling back to INTx for ISP82XX [SCSI] qla4xxx: Update idc reg in case of PCI AER [SCSI] qla4xxx: Fix double IDC locking in qla4_8xxx_error_recovery [SCSI] qla4xxx: Clear interrupt while unloading driver for ISP83XX [SCSI] qla4xxx: Print correct IDC version [SCSI] qla4xxx: Added new mbox cmd to pass driver version to FW [SCSI] scsi_dh_alua: Enable STPG for unavailable ports [SCSI] scsi_remove_target: fix softlockup regression on hot remove [SCSI] ibmvscsi: Fix host config length field overflow [SCSI] ibmvscsi: Remove backend abstraction ...
This commit is contained in:
@@ -1044,7 +1044,7 @@ static enum sci_status sci_controller_start(struct isci_host *ihost,
|
||||
return SCI_SUCCESS;
|
||||
}
|
||||
|
||||
void isci_host_scan_start(struct Scsi_Host *shost)
|
||||
void isci_host_start(struct Scsi_Host *shost)
|
||||
{
|
||||
struct isci_host *ihost = SHOST_TO_SAS_HA(shost)->lldd_ha;
|
||||
unsigned long tmo = sci_controller_get_suggested_start_timeout(ihost);
|
||||
@@ -1079,7 +1079,6 @@ static void sci_controller_completion_handler(struct isci_host *ihost)
|
||||
|
||||
void ireq_done(struct isci_host *ihost, struct isci_request *ireq, struct sas_task *task)
|
||||
{
|
||||
task->lldd_task = NULL;
|
||||
if (!test_bit(IREQ_ABORT_PATH_ACTIVE, &ireq->flags) &&
|
||||
!(task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
|
||||
if (test_bit(IREQ_COMPLETE_IN_TARGET, &ireq->flags)) {
|
||||
@@ -1087,16 +1086,19 @@ void ireq_done(struct isci_host *ihost, struct isci_request *ireq, struct sas_ta
|
||||
dev_dbg(&ihost->pdev->dev,
|
||||
"%s: Normal - ireq/task = %p/%p\n",
|
||||
__func__, ireq, task);
|
||||
|
||||
task->lldd_task = NULL;
|
||||
task->task_done(task);
|
||||
} else {
|
||||
dev_dbg(&ihost->pdev->dev,
|
||||
"%s: Error - ireq/task = %p/%p\n",
|
||||
__func__, ireq, task);
|
||||
|
||||
if (sas_protocol_ata(task->task_proto))
|
||||
task->lldd_task = NULL;
|
||||
sas_task_abort(task);
|
||||
}
|
||||
}
|
||||
} else
|
||||
task->lldd_task = NULL;
|
||||
|
||||
if (test_and_clear_bit(IREQ_ABORT_PATH_ACTIVE, &ireq->flags))
|
||||
wake_up_all(&ihost->eventq);
|
||||
|
||||
@@ -1120,10 +1122,16 @@ void isci_host_completion_routine(unsigned long data)
|
||||
sci_controller_completion_handler(ihost);
|
||||
spin_unlock_irq(&ihost->scic_lock);
|
||||
|
||||
/* the coalesence timeout doubles at each encoding step, so
|
||||
/*
|
||||
* we subtract SCI_MAX_PORTS to account for the number of dummy TCs
|
||||
* issued for hardware issue workaround
|
||||
*/
|
||||
active = isci_tci_active(ihost) - SCI_MAX_PORTS;
|
||||
|
||||
/*
|
||||
* the coalesence timeout doubles at each encoding step, so
|
||||
* update it based on the ilog2 value of the outstanding requests
|
||||
*/
|
||||
active = isci_tci_active(ihost);
|
||||
writel(SMU_ICC_GEN_VAL(NUMBER, active) |
|
||||
SMU_ICC_GEN_VAL(TIMER, ISCI_COALESCE_BASE + ilog2(active)),
|
||||
&ihost->smu_registers->interrupt_coalesce_control);
|
||||
@@ -1973,7 +1981,7 @@ static void sci_controller_afe_initialization(struct isci_host *ihost)
|
||||
}
|
||||
|
||||
for (phy_id = 0; phy_id < SCI_MAX_PHYS; phy_id++) {
|
||||
struct scu_afe_transceiver *xcvr = &afe->scu_afe_xcvr[phy_id];
|
||||
struct scu_afe_transceiver __iomem *xcvr = &afe->scu_afe_xcvr[phy_id];
|
||||
const struct sci_phy_oem_params *oem_phy = &oem->phys[phy_id];
|
||||
int cable_length_long =
|
||||
is_long_cable(phy_id, cable_selection_mask);
|
||||
|
Reference in New Issue
Block a user