Lines Matching refs:fusion

166 	struct fusion_context *fusion;  in megasas_get_cmd_fusion()  local
168 fusion = instance->ctrl_context; in megasas_get_cmd_fusion()
169 return fusion->cmd_list[blk_tag]; in megasas_get_cmd_fusion()
217 struct fusion_context *fusion = instance->ctrl_context; in megasas_teardown_frame_pool_fusion() local
223 if (!fusion->sg_dma_pool || !fusion->sense_dma_pool) { in megasas_teardown_frame_pool_fusion()
225 "sense pool : %p\n", fusion->sg_dma_pool, in megasas_teardown_frame_pool_fusion()
226 fusion->sense_dma_pool); in megasas_teardown_frame_pool_fusion()
235 cmd = fusion->cmd_list[i]; in megasas_teardown_frame_pool_fusion()
238 pci_pool_free(fusion->sg_dma_pool, cmd->sg_frame, in megasas_teardown_frame_pool_fusion()
242 pci_pool_free(fusion->sense_dma_pool, cmd->sense, in megasas_teardown_frame_pool_fusion()
249 pci_pool_destroy(fusion->sg_dma_pool); in megasas_teardown_frame_pool_fusion()
250 pci_pool_destroy(fusion->sense_dma_pool); in megasas_teardown_frame_pool_fusion()
252 fusion->sg_dma_pool = NULL; in megasas_teardown_frame_pool_fusion()
253 fusion->sense_dma_pool = NULL; in megasas_teardown_frame_pool_fusion()
264 struct fusion_context *fusion = instance->ctrl_context; in megasas_free_cmds_fusion() local
269 req_sz = fusion->request_alloc_sz; in megasas_free_cmds_fusion()
270 reply_sz = fusion->reply_alloc_sz; in megasas_free_cmds_fusion()
271 io_frames_sz = fusion->io_frames_alloc_sz; in megasas_free_cmds_fusion()
276 if (fusion->req_frames_desc) in megasas_free_cmds_fusion()
278 fusion->req_frames_desc, in megasas_free_cmds_fusion()
279 fusion->req_frames_desc_phys); in megasas_free_cmds_fusion()
281 if (fusion->reply_frames_desc) { in megasas_free_cmds_fusion()
282 pci_pool_free(fusion->reply_frames_desc_pool, in megasas_free_cmds_fusion()
283 fusion->reply_frames_desc, in megasas_free_cmds_fusion()
284 fusion->reply_frames_desc_phys); in megasas_free_cmds_fusion()
285 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_free_cmds_fusion()
288 if (fusion->io_request_frames) { in megasas_free_cmds_fusion()
289 pci_pool_free(fusion->io_request_frames_pool, in megasas_free_cmds_fusion()
290 fusion->io_request_frames, in megasas_free_cmds_fusion()
291 fusion->io_request_frames_phys); in megasas_free_cmds_fusion()
292 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_free_cmds_fusion()
300 kfree(fusion->cmd_list[i]); in megasas_free_cmds_fusion()
303 kfree(fusion->cmd_list); in megasas_free_cmds_fusion()
304 fusion->cmd_list = NULL; in megasas_free_cmds_fusion()
317 struct fusion_context *fusion; in megasas_create_frame_pool_fusion() local
320 fusion = instance->ctrl_context; in megasas_create_frame_pool_fusion()
328 fusion->sg_dma_pool = pci_pool_create("sg_pool_fusion", instance->pdev, in megasas_create_frame_pool_fusion()
331 if (!fusion->sg_dma_pool) { in megasas_create_frame_pool_fusion()
335 fusion->sense_dma_pool = pci_pool_create("sense pool fusion", in megasas_create_frame_pool_fusion()
339 if (!fusion->sense_dma_pool) { in megasas_create_frame_pool_fusion()
341 pci_pool_destroy(fusion->sg_dma_pool); in megasas_create_frame_pool_fusion()
342 fusion->sg_dma_pool = NULL; in megasas_create_frame_pool_fusion()
351 cmd = fusion->cmd_list[i]; in megasas_create_frame_pool_fusion()
353 cmd->sg_frame = pci_pool_alloc(fusion->sg_dma_pool, in megasas_create_frame_pool_fusion()
357 cmd->sense = pci_pool_alloc(fusion->sense_dma_pool, in megasas_create_frame_pool_fusion()
393 struct fusion_context *fusion; in megasas_alloc_cmds_fusion() local
400 fusion = instance->ctrl_context; in megasas_alloc_cmds_fusion()
404 fusion->req_frames_desc = in megasas_alloc_cmds_fusion()
406 fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
407 &fusion->req_frames_desc_phys, GFP_KERNEL); in megasas_alloc_cmds_fusion()
409 if (!fusion->req_frames_desc) { in megasas_alloc_cmds_fusion()
416 fusion->reply_frames_desc_pool = in megasas_alloc_cmds_fusion()
418 fusion->reply_alloc_sz * count, 16, 0); in megasas_alloc_cmds_fusion()
420 if (!fusion->reply_frames_desc_pool) { in megasas_alloc_cmds_fusion()
426 fusion->reply_frames_desc = in megasas_alloc_cmds_fusion()
427 pci_pool_alloc(fusion->reply_frames_desc_pool, GFP_KERNEL, in megasas_alloc_cmds_fusion()
428 &fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
429 if (!fusion->reply_frames_desc) { in megasas_alloc_cmds_fusion()
432 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_alloc_cmds_fusion()
436 reply_desc = fusion->reply_frames_desc; in megasas_alloc_cmds_fusion()
437 for (i = 0; i < fusion->reply_q_depth * count; i++, reply_desc++) in megasas_alloc_cmds_fusion()
440 io_frames_sz = fusion->io_frames_alloc_sz; in megasas_alloc_cmds_fusion()
442 fusion->io_request_frames_pool = in megasas_alloc_cmds_fusion()
444 fusion->io_frames_alloc_sz, 16, 0); in megasas_alloc_cmds_fusion()
446 if (!fusion->io_request_frames_pool) { in megasas_alloc_cmds_fusion()
452 fusion->io_request_frames = in megasas_alloc_cmds_fusion()
453 pci_pool_alloc(fusion->io_request_frames_pool, GFP_KERNEL, in megasas_alloc_cmds_fusion()
454 &fusion->io_request_frames_phys); in megasas_alloc_cmds_fusion()
455 if (!fusion->io_request_frames) { in megasas_alloc_cmds_fusion()
458 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_cmds_fusion()
467 fusion->cmd_list = kzalloc(sizeof(struct megasas_cmd_fusion *) in megasas_alloc_cmds_fusion()
470 if (!fusion->cmd_list) { in megasas_alloc_cmds_fusion()
478 fusion->cmd_list[i] = kmalloc(sizeof(struct megasas_cmd_fusion), in megasas_alloc_cmds_fusion()
480 if (!fusion->cmd_list[i]) { in megasas_alloc_cmds_fusion()
484 kfree(fusion->cmd_list[j]); in megasas_alloc_cmds_fusion()
486 kfree(fusion->cmd_list); in megasas_alloc_cmds_fusion()
487 fusion->cmd_list = NULL; in megasas_alloc_cmds_fusion()
493 io_req_base = fusion->io_request_frames + in megasas_alloc_cmds_fusion()
495 io_req_base_phys = fusion->io_request_frames_phys + in megasas_alloc_cmds_fusion()
504 cmd = fusion->cmd_list[i]; in megasas_alloc_cmds_fusion()
533 pci_pool_free(fusion->io_request_frames_pool, fusion->io_request_frames, in megasas_alloc_cmds_fusion()
534 fusion->io_request_frames_phys); in megasas_alloc_cmds_fusion()
535 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_cmds_fusion()
537 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
538 fusion->reply_frames_desc, in megasas_alloc_cmds_fusion()
539 fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
540 pci_pool_free(fusion->reply_frames_desc_pool, in megasas_alloc_cmds_fusion()
541 fusion->reply_frames_desc, in megasas_alloc_cmds_fusion()
542 fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
543 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_alloc_cmds_fusion()
546 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
547 fusion->req_frames_desc, in megasas_alloc_cmds_fusion()
548 fusion->req_frames_desc_phys); in megasas_alloc_cmds_fusion()
566 struct fusion_context *fusion; in wait_and_poll() local
570 fusion = instance->ctrl_context; in wait_and_poll()
600 struct fusion_context *fusion; in megasas_ioc_init_fusion() local
607 fusion = instance->ctrl_context; in megasas_ioc_init_fusion()
637 IOCInitMessage->ReplyDescriptorPostQueueDepth = cpu_to_le16(fusion->reply_q_depth); in megasas_ioc_init_fusion()
638 IOCInitMessage->ReplyDescriptorPostQueueAddress = cpu_to_le64(fusion->reply_frames_desc_phys); in megasas_ioc_init_fusion()
639 IOCInitMessage->SystemRequestFrameBaseAddress = cpu_to_le64(fusion->io_request_frames_phys); in megasas_ioc_init_fusion()
656 if (fusion->adapter_type == INVADER_SERIES) in megasas_ioc_init_fusion()
743 struct fusion_context *fusion = instance->ctrl_context; in megasas_sync_pd_seq_num() local
747 pd_sync = (void *)fusion->pd_seq_sync[(instance->pd_seq_map_id & 1)]; in megasas_sync_pd_seq_num()
748 pd_seq_h = fusion->pd_seq_phys[(instance->pd_seq_map_id & 1)]; in megasas_sync_pd_seq_num()
829 struct fusion_context *fusion; in megasas_get_ld_map_info() local
838 fusion = instance->ctrl_context; in megasas_get_ld_map_info()
840 if (!fusion) { in megasas_get_ld_map_info()
847 size_map_info = fusion->current_map_sz; in megasas_get_ld_map_info()
849 ci = (void *) fusion->ld_map[(instance->map_id & 1)]; in megasas_get_ld_map_info()
850 ci_h = fusion->ld_map_phys[(instance->map_id & 1)]; in megasas_get_ld_map_info()
858 memset(ci, 0, fusion->max_map_sz); in megasas_get_ld_map_info()
890 struct fusion_context *fusion = instance->ctrl_context; in megasas_get_map_info() local
892 fusion->fast_path_io = 0; in megasas_get_map_info()
895 fusion->fast_path_io = 1; in megasas_get_map_info()
917 struct fusion_context *fusion; in megasas_sync_map_info() local
932 fusion = instance->ctrl_context; in megasas_sync_map_info()
934 if (!fusion) { in megasas_sync_map_info()
939 map = fusion->ld_drv_map[instance->map_id & 1]; in megasas_sync_map_info()
950 fusion->ld_map[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
951 memset(ci, 0, fusion->max_map_sz); in megasas_sync_map_info()
953 ci_h = fusion->ld_map_phys[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
963 size_map_info = fusion->current_map_sz; in megasas_sync_map_info()
1067 struct fusion_context *fusion; in megasas_init_adapter_fusion() local
1071 fusion = instance->ctrl_context; in megasas_init_adapter_fusion()
1097 fusion->reply_q_depth = 2 * (((max_cmd + 1 + 15)/16)*16); in megasas_init_adapter_fusion()
1099 fusion->request_alloc_sz = in megasas_init_adapter_fusion()
1101 fusion->reply_alloc_sz = sizeof(union MPI2_REPLY_DESCRIPTORS_UNION) in megasas_init_adapter_fusion()
1102 *(fusion->reply_q_depth); in megasas_init_adapter_fusion()
1103 fusion->io_frames_alloc_sz = MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE + in megasas_init_adapter_fusion()
1130 fusion->max_sge_in_main_msg = in megasas_init_adapter_fusion()
1134 fusion->max_sge_in_chain = in megasas_init_adapter_fusion()
1139 rounddown_pow_of_two(fusion->max_sge_in_main_msg in megasas_init_adapter_fusion()
1140 + fusion->max_sge_in_chain - 2); in megasas_init_adapter_fusion()
1143 fusion->chain_offset_mfi_pthru = in megasas_init_adapter_fusion()
1146 fusion->chain_offset_io_request = in megasas_init_adapter_fusion()
1152 fusion->last_reply_idx[i] = 0; in megasas_init_adapter_fusion()
1184 fusion->fast_path_io = 0; in megasas_init_adapter_fusion()
1186 fusion->drv_map_pages = get_order(fusion->drv_map_sz); in megasas_init_adapter_fusion()
1188 fusion->ld_map[i] = NULL; in megasas_init_adapter_fusion()
1189 fusion->ld_drv_map[i] = (void *)__get_free_pages(GFP_KERNEL, in megasas_init_adapter_fusion()
1190 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1191 if (!fusion->ld_drv_map[i]) { in megasas_init_adapter_fusion()
1194 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1196 free_pages((ulong)fusion->ld_drv_map[0], in megasas_init_adapter_fusion()
1197 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1200 memset(fusion->ld_drv_map[i], 0, in megasas_init_adapter_fusion()
1201 ((1 << PAGE_SHIFT) << fusion->drv_map_pages)); in megasas_init_adapter_fusion()
1205 fusion->ld_map[i] = dma_alloc_coherent(&instance->pdev->dev, in megasas_init_adapter_fusion()
1206 fusion->max_map_sz, in megasas_init_adapter_fusion()
1207 &fusion->ld_map_phys[i], in megasas_init_adapter_fusion()
1209 if (!fusion->ld_map[i]) { in megasas_init_adapter_fusion()
1223 dma_free_coherent(&instance->pdev->dev, fusion->max_map_sz, in megasas_init_adapter_fusion()
1224 fusion->ld_map[0], fusion->ld_map_phys[0]); in megasas_init_adapter_fusion()
1298 struct fusion_context *fusion; in megasas_make_sgl_fusion() local
1300 fusion = instance->ctrl_context; in megasas_make_sgl_fusion()
1302 if (fusion->adapter_type == INVADER_SERIES) { in megasas_make_sgl_fusion()
1304 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in megasas_make_sgl_fusion()
1319 if (fusion->adapter_type == INVADER_SERIES) in megasas_make_sgl_fusion()
1326 if ((sg_processed == (fusion->max_sge_in_main_msg - 1)) && in megasas_make_sgl_fusion()
1327 (sge_count > fusion->max_sge_in_main_msg)) { in megasas_make_sgl_fusion()
1330 if (fusion->adapter_type == INVADER_SERIES) { in megasas_make_sgl_fusion()
1335 fusion-> in megasas_make_sgl_fusion()
1341 fusion->chain_offset_io_request; in megasas_make_sgl_fusion()
1346 if (fusion->adapter_type == INVADER_SERIES) in megasas_make_sgl_fusion()
1559 struct fusion_context *fusion; in megasas_build_ldio_fusion() local
1565 fusion = instance->ctrl_context; in megasas_build_ldio_fusion()
1637 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ldio_fusion()
1640 instance->fw_supported_vd_count) || (!fusion->fast_path_io)) { in megasas_build_ldio_fusion()
1663 if (fusion->adapter_type == INVADER_SERIES) { in megasas_build_ldio_fusion()
1676 if ((fusion->load_balance_info[device_id].loadBalanceFlag) && in megasas_build_ldio_fusion()
1680 &fusion->load_balance_info[device_id], in megasas_build_ldio_fusion()
1704 if (fusion->adapter_type == INVADER_SERIES) { in megasas_build_ldio_fusion()
1736 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_ld_nonrw_fusion() local
1747 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ld_nonrw_fusion()
1756 if (fusion->fast_path_io && ( in megasas_build_ld_nonrw_fusion()
1828 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_syspd_fusion() local
1829 pd_sync = (void *)fusion->pd_seq_sync[(instance->pd_seq_map_id - 1) & 1]; in megasas_build_syspd_fusion()
1858 } else if (fusion->fast_path_io) { in megasas_build_syspd_fusion()
1861 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_syspd_fusion()
1893 if (fusion->adapter_type == INVADER_SERIES) { in megasas_build_syspd_fusion()
2006 struct fusion_context *fusion; in megasas_get_request_descriptor() local
2014 fusion = instance->ctrl_context; in megasas_get_request_descriptor()
2015 p = fusion->req_frames_desc in megasas_get_request_descriptor()
2034 struct fusion_context *fusion; in megasas_build_and_issue_cmd_fusion() local
2036 fusion = instance->ctrl_context; in megasas_build_and_issue_cmd_fusion()
2085 struct fusion_context *fusion; in complete_cmd_fusion() local
2096 fusion = instance->ctrl_context; in complete_cmd_fusion()
2101 desc = fusion->reply_frames_desc; in complete_cmd_fusion()
2102 desc += ((MSIxIndex * fusion->reply_alloc_sz)/ in complete_cmd_fusion()
2104 fusion->last_reply_idx[MSIxIndex]; in complete_cmd_fusion()
2122 cmd_fusion = fusion->cmd_list[smid - 1]; in complete_cmd_fusion()
2139 lbinfo = &fusion->load_balance_info[device_id]; in complete_cmd_fusion()
2178 fusion->last_reply_idx[MSIxIndex]++; in complete_cmd_fusion()
2179 if (fusion->last_reply_idx[MSIxIndex] >= in complete_cmd_fusion()
2180 fusion->reply_q_depth) in complete_cmd_fusion()
2181 fusion->last_reply_idx[MSIxIndex] = 0; in complete_cmd_fusion()
2188 if (!fusion->last_reply_idx[MSIxIndex]) in complete_cmd_fusion()
2189 desc = fusion->reply_frames_desc + in complete_cmd_fusion()
2190 ((MSIxIndex * fusion->reply_alloc_sz)/ in complete_cmd_fusion()
2211 if (fusion->adapter_type == INVADER_SERIES) in complete_cmd_fusion()
2213 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2217 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2227 if (fusion->adapter_type == INVADER_SERIES) in complete_cmd_fusion()
2229 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2233 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2328 struct fusion_context *fusion; in build_mpt_mfi_pass_thru() local
2331 fusion = instance->ctrl_context; in build_mpt_mfi_pass_thru()
2350 if (fusion->adapter_type == INVADER_SERIES) { in build_mpt_mfi_pass_thru()
2353 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in build_mpt_mfi_pass_thru()
2363 io_req->ChainOffset = fusion->chain_offset_mfi_pthru; in build_mpt_mfi_pass_thru()
2659 struct fusion_context *fusion; in megasas_reset_reply_desc() local
2662 fusion = instance->ctrl_context; in megasas_reset_reply_desc()
2665 fusion->last_reply_idx[i] = 0; in megasas_reset_reply_desc()
2666 reply_desc = fusion->reply_frames_desc; in megasas_reset_reply_desc()
2667 for (i = 0 ; i < fusion->reply_q_depth * count; i++, reply_desc++) in megasas_reset_reply_desc()
2679 struct fusion_context *fusion; in megasas_refire_mgmt_cmd() local
2684 fusion = instance->ctrl_context; in megasas_refire_mgmt_cmd()
2690 cmd_fusion = fusion->cmd_list[j]; in megasas_refire_mgmt_cmd()
2738 struct fusion_context *fusion; in megasas_reset_fusion() local
2744 fusion = instance->ctrl_context; in megasas_reset_fusion()
2810 cmd_fusion = fusion->cmd_list[i]; in megasas_reset_fusion()
2926 memset(fusion->load_balance_info, 0, in megasas_reset_fusion()