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 ----