Print this page
*** NO COMMENTS ***
*** 734,782 ****
goto fail_attach;
}
/* Initialize all Mutex */
INIT_LIST_HEAD(&instance->completed_pool_list);
! mutex_init(&instance->completed_pool_mtx,
! "completed_pool_mtx", MUTEX_DRIVER,
! DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->sync_map_mtx,
! "sync_map_mtx", MUTEX_DRIVER,
! DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->app_cmd_pool_mtx,
! "app_cmd_pool_mtx", MUTEX_DRIVER,
! DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->config_dev_mtx, "config_dev_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->cmd_pend_mtx, "cmd_pend_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->ocr_flags_mtx, "ocr_flags_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->int_cmd_mtx, "int_cmd_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
cv_init(&instance->int_cmd_cv, NULL, CV_DRIVER, NULL);
! mutex_init(&instance->cmd_pool_mtx, "cmd_pool_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->reg_write_mtx, "reg_write_mtx",
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
if (instance->tbolt) {
! mutex_init(&instance->cmd_app_pool_mtx,
! "cmd_app_pool_mtx", MUTEX_DRIVER,
! DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->chip_mtx,
! "chip_mtx", MUTEX_DRIVER,
! DDI_INTR_PRI(instance->intr_pri));
}
instance->unroll.mutexs = 1;
--- 734,777 ----
goto fail_attach;
}
/* Initialize all Mutex */
INIT_LIST_HEAD(&instance->completed_pool_list);
! mutex_init(&instance->completed_pool_mtx, NULL,
! MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->sync_map_mtx, NULL,
! MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->app_cmd_pool_mtx, NULL,
! MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->config_dev_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->cmd_pend_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->ocr_flags_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->int_cmd_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
cv_init(&instance->int_cmd_cv, NULL, CV_DRIVER, NULL);
! mutex_init(&instance->cmd_pool_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->reg_write_mtx, NULL,
MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
if (instance->tbolt) {
! mutex_init(&instance->cmd_app_pool_mtx, NULL,
! MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
! mutex_init(&instance->chip_mtx, NULL,
! MUTEX_DRIVER, DDI_INTR_PRI(instance->intr_pri));
}
instance->unroll.mutexs = 1;
*** 940,954 ****
}
instance->mr_ld_list =
kmem_zalloc(MRDRV_MAX_LD * sizeof (struct mrsas_ld),
KM_SLEEP);
- if (instance->mr_ld_list == NULL) {
- cmn_err(CE_WARN, "mr_sas attach(): "
- "failed to allocate ld_list array");
- goto fail_attach;
- }
instance->unroll.ldlist_buff = 1;
#ifdef PDSUPPORT
if (instance->tbolt) {
instance->mr_tbolt_pd_max = MRSAS_TBOLT_PD_TGT_MAX;
--- 935,944 ----
*** 1443,1458 ****
return (ENXIO);
}
ioctl = (struct mrsas_ioctl *)kmem_zalloc(sizeof (struct mrsas_ioctl),
KM_SLEEP);
! if (ioctl == NULL) {
! /* Failed to allocate memory for ioctl */
! con_log(CL_ANN, (CE_WARN, "mr_sas_ioctl: "
! "failed to allocate memory for ioctl"));
! return (ENOMEM);
! }
switch ((uint_t)cmd) {
case MRSAS_IOCTL_FIRMWARE:
if (ddi_copyin((void *)arg, ioctl,
sizeof (struct mrsas_ioctl), mode)) {
--- 1433,1443 ----
return (ENXIO);
}
ioctl = (struct mrsas_ioctl *)kmem_zalloc(sizeof (struct mrsas_ioctl),
KM_SLEEP);
! ASSERT(ioctl);
switch ((uint_t)cmd) {
case MRSAS_IOCTL_FIRMWARE:
if (ddi_copyin((void *)arg, ioctl,
sizeof (struct mrsas_ioctl), mode)) {
*** 1475,1487 ****
rval = 1;
}
break;
case MRSAS_IOCTL_AEN:
- con_log(CL_ANN,
- (CE_NOTE, "mrsas_ioctl: IOCTL Register AEN.\n"));
-
if (ddi_copyin((void *) arg, &aen,
sizeof (struct mrsas_aen), mode)) {
con_log(CL_ANN, (CE_WARN,
"mrsas_ioctl: ERROR AEN copyin"));
kmem_free(ioctl, sizeof (struct mrsas_ioctl));
--- 1460,1469 ----
*** 3197,3222 ****
* instance->cmd_list is an array of struct mrsas_cmd pointers.
* Allocate the dynamic array first and then allocate individual
* commands.
*/
instance->cmd_list = kmem_zalloc(sz, KM_SLEEP);
! if (instance->cmd_list == NULL) {
! con_log(CL_NONE, (CE_WARN,
! "Failed to allocate memory for cmd_list"));
! return (DDI_FAILURE);
! }
/* create a frame pool and assign one frame to each cmd */
for (count = 0; count < max_cmd; count++) {
instance->cmd_list[count] =
kmem_zalloc(sizeof (struct mrsas_cmd), KM_SLEEP);
! if (instance->cmd_list[count] == NULL) {
! con_log(CL_NONE, (CE_WARN,
! "Failed to allocate memory for mrsas_cmd"));
! goto mrsas_undo_cmds;
}
- }
/* add all the commands to command pool */
INIT_LIST_HEAD(&instance->cmd_pool_list);
INIT_LIST_HEAD(&instance->cmd_pend_list);
--- 3179,3196 ----
* instance->cmd_list is an array of struct mrsas_cmd pointers.
* Allocate the dynamic array first and then allocate individual
* commands.
*/
instance->cmd_list = kmem_zalloc(sz, KM_SLEEP);
! ASSERT(instance->cmd_list);
/* create a frame pool and assign one frame to each cmd */
for (count = 0; count < max_cmd; count++) {
instance->cmd_list[count] =
kmem_zalloc(sizeof (struct mrsas_cmd), KM_SLEEP);
! ASSERT(instance->cmd_list[count]);
}
/* add all the commands to command pool */
INIT_LIST_HEAD(&instance->cmd_pool_list);
INIT_LIST_HEAD(&instance->cmd_pend_list);
*** 3728,3745 ****
} else {
instance->max_sectors_per_req = instance->max_num_sge *
PAGESIZE / 512;
}
! if (ctrl_info.properties.on_off_properties & DISABLE_OCR_PROP_FLAG) {
instance->disable_online_ctrl_reset = 1;
- con_log(CL_ANN1,
- (CE_NOTE, "Disable online control Flag is set\n"));
- } else {
- con_log(CL_ANN1,
- (CE_NOTE, "Disable online control Flag is not set\n"));
- }
return (DDI_SUCCESS);
}
--- 3702,3713 ----
} else {
instance->max_sectors_per_req = instance->max_num_sge *
PAGESIZE / 512;
}
! if (ctrl_info.properties.on_off_properties & DISABLE_OCR_PROP_FLAG)
instance->disable_online_ctrl_reset = 1;
return (DDI_SUCCESS);
}
*** 4018,4028 ****
*/
WR_IB_DOORBELL(0xF, instance);
}
if (mrsas_check_acc_handle(instance->regmap_handle) != DDI_SUCCESS) {
! return (ENODEV);
}
return (DDI_SUCCESS);
}
--- 3986,3996 ----
*/
WR_IB_DOORBELL(0xF, instance);
}
if (mrsas_check_acc_handle(instance->regmap_handle) != DDI_SUCCESS) {
! return (EIO);
}
return (DDI_SUCCESS);
}
*** 4876,4886 ****
* mrsas_free_dma_obj(struct mrsas_instance *, dma_obj_t)
*
* De-allocate the memory and other resources for an dma object, which must
* have been alloated by a previous call to mrsas_alloc_dma_obj()
*/
- /* ARGSUSED */
int
mrsas_free_dma_obj(struct mrsas_instance *instance, dma_obj_t obj)
{
if ((obj.dma_handle == NULL) || (obj.acc_handle == NULL)) {
--- 4844,4853 ----
*** 5590,5600 ****
con_log(CL_ANN, (CE_WARN,
"issue_mfi_pthru : "
"copy to user space failed"));
}
con_log(CL_DLEVEL1, (CE_WARN,
! "Copying Sense info sense_buff[%d] = 0x%X\n",
i, *((uint8_t *)cmd->sense + i)));
}
}
(void) ddi_dma_sync(cmd->frame_dma_obj.dma_handle, 0, 0,
DDI_DMA_SYNC_FORDEV);
--- 5557,5567 ----
con_log(CL_ANN, (CE_WARN,
"issue_mfi_pthru : "
"copy to user space failed"));
}
con_log(CL_DLEVEL1, (CE_WARN,
! "Copying Sense info sense_buff[%d] = 0x%X",
i, *((uint8_t *)cmd->sense + i)));
}
}
(void) ddi_dma_sync(cmd->frame_dma_obj.dma_handle, 0, 0,
DDI_DMA_SYNC_FORDEV);
*** 5627,5638 ****
int i;
dcmd = &cmd->frame->dcmd;
kdcmd = (struct mrsas_dcmd_frame *)&ioctl->frame[0];
if (instance->adapterresetinprogress) {
! con_log(CL_ANN1, (CE_WARN, "Reset flag set, "
! "returning mfi_pkt and setting TRAN_BUSY\n"));
return (DDI_FAILURE);
}
model = ddi_model_convert_from(mode & FMODELS);
if (model == DDI_MODEL_ILP32) {
con_log(CL_ANN1, (CE_CONT, "issue_mfi_dcmd: DDI_MODEL_ILP32"));
--- 5594,5605 ----
int i;
dcmd = &cmd->frame->dcmd;
kdcmd = (struct mrsas_dcmd_frame *)&ioctl->frame[0];
if (instance->adapterresetinprogress) {
! con_log(CL_ANN1, (CE_NOTE, "Reset flag set, "
! "returning mfi_pkt and setting TRAN_BUSY"));
return (DDI_FAILURE);
}
model = ddi_model_convert_from(mode & FMODELS);
if (model == DDI_MODEL_ILP32) {
con_log(CL_ANN1, (CE_CONT, "issue_mfi_dcmd: DDI_MODEL_ILP32"));
*** 7039,7049 ****
while (!(status & DIAG_WRITE_ENABLE)) {
delay(100 * drv_usectohz(MILLISEC));
status = RD_OB_DRWE(instance);
if (retry++ == 100) {
cmn_err(CE_WARN, "mrsas_reset_ppc: DRWE bit "
! "check retry count %d\n", retry);
return (DDI_FAILURE);
}
}
WR_IB_DRWE(status | DIAG_RESET_ADAPTER, instance);
delay(100 * drv_usectohz(MILLISEC));
--- 7006,7016 ----
while (!(status & DIAG_WRITE_ENABLE)) {
delay(100 * drv_usectohz(MILLISEC));
status = RD_OB_DRWE(instance);
if (retry++ == 100) {
cmn_err(CE_WARN, "mrsas_reset_ppc: DRWE bit "
! "check retry count %d", retry);
return (DDI_FAILURE);
}
}
WR_IB_DRWE(status | DIAG_RESET_ADAPTER, instance);
delay(100 * drv_usectohz(MILLISEC));
*** 7051,7061 ****
while (status & DIAG_RESET_ADAPTER) {
delay(100 * drv_usectohz(MILLISEC));
status = RD_OB_DRWE(instance);
if (retry++ == 100) {
cmn_err(CE_WARN, "mrsas_reset_ppc: "
! "RESET FAILED. KILL adapter called\n.");
(void) mrsas_kill_adapter(instance);
return (DDI_FAILURE);
}
}
--- 7018,7028 ----
while (status & DIAG_RESET_ADAPTER) {
delay(100 * drv_usectohz(MILLISEC));
status = RD_OB_DRWE(instance);
if (retry++ == 100) {
cmn_err(CE_WARN, "mrsas_reset_ppc: "
! "RESET FAILED. KILL adapter called.");
(void) mrsas_kill_adapter(instance);
return (DDI_FAILURE);
}
}
*** 7378,7393 ****
* only one interrupt. The framework can be extended later.
*/
instance->intr_htable_size = count * sizeof (ddi_intr_handle_t);
instance->intr_htable = kmem_zalloc(instance->intr_htable_size,
KM_SLEEP);
! if (instance->intr_htable == NULL) {
! con_log(CL_ANN, (CE_WARN, "mrsas_add_intrs: "
! "failed to allocate memory for intr-handle table"));
! instance->intr_htable_size = 0;
! return (DDI_FAILURE);
! }
flag = ((intr_type == DDI_INTR_TYPE_MSI) ||
(intr_type == DDI_INTR_TYPE_MSIX)) ?
DDI_INTR_ALLOC_STRICT : DDI_INTR_ALLOC_NORMAL;
--- 7345,7355 ----
* only one interrupt. The framework can be extended later.
*/
instance->intr_htable_size = count * sizeof (ddi_intr_handle_t);
instance->intr_htable = kmem_zalloc(instance->intr_htable_size,
KM_SLEEP);
! ASSERT(instance->intr_htable);
flag = ((intr_type == DDI_INTR_TYPE_MSI) ||
(intr_type == DDI_INTR_TYPE_MSIX)) ?
DDI_INTR_ALLOC_STRICT : DDI_INTR_ALLOC_NORMAL;
*** 7682,7696 ****
}
return (NDI_SUCCESS);
}
sd = kmem_zalloc(sizeof (struct scsi_device), KM_SLEEP);
- if (sd == NULL) {
- con_log(CL_ANN1, (CE_WARN, "mrsas_config_ld: "
- "failed to allocate mem for scsi_device"));
- return (NDI_FAILURE);
- }
sd->sd_address.a_hba_tran = instance->tran;
sd->sd_address.a_target = (uint16_t)tgt;
sd->sd_address.a_lun = (uint8_t)lun;
if (scsi_hba_probe(sd, NULL) == SCSIPROBE_EXISTS)
--- 7644,7653 ----