Lines Matching refs:fusion

165 	struct fusion_context *fusion =  in megasas_get_cmd_fusion()  local
169 spin_lock_irqsave(&fusion->mpt_pool_lock, flags); in megasas_get_cmd_fusion()
171 if (!list_empty(&fusion->cmd_pool)) { in megasas_get_cmd_fusion()
172 cmd = list_entry((&fusion->cmd_pool)->next, in megasas_get_cmd_fusion()
179 spin_unlock_irqrestore(&fusion->mpt_pool_lock, flags); in megasas_get_cmd_fusion()
192 struct fusion_context *fusion = in megasas_return_cmd_fusion() local
195 spin_lock_irqsave(&fusion->mpt_pool_lock, flags); in megasas_return_cmd_fusion()
200 list_add(&cmd->list, (&fusion->cmd_pool)->next); in megasas_return_cmd_fusion()
202 spin_unlock_irqrestore(&fusion->mpt_pool_lock, flags); in megasas_return_cmd_fusion()
240 struct fusion_context *fusion = instance->ctrl_context; in megasas_teardown_frame_pool_fusion() local
246 if (!fusion->sg_dma_pool || !fusion->sense_dma_pool) { in megasas_teardown_frame_pool_fusion()
248 "sense pool : %p\n", fusion->sg_dma_pool, in megasas_teardown_frame_pool_fusion()
249 fusion->sense_dma_pool); in megasas_teardown_frame_pool_fusion()
258 cmd = fusion->cmd_list[i]; in megasas_teardown_frame_pool_fusion()
261 pci_pool_free(fusion->sg_dma_pool, cmd->sg_frame, in megasas_teardown_frame_pool_fusion()
265 pci_pool_free(fusion->sense_dma_pool, cmd->sense, in megasas_teardown_frame_pool_fusion()
272 pci_pool_destroy(fusion->sg_dma_pool); in megasas_teardown_frame_pool_fusion()
273 pci_pool_destroy(fusion->sense_dma_pool); in megasas_teardown_frame_pool_fusion()
275 fusion->sg_dma_pool = NULL; in megasas_teardown_frame_pool_fusion()
276 fusion->sense_dma_pool = NULL; in megasas_teardown_frame_pool_fusion()
287 struct fusion_context *fusion = instance->ctrl_context; in megasas_free_cmds_fusion() local
292 req_sz = fusion->request_alloc_sz; in megasas_free_cmds_fusion()
293 reply_sz = fusion->reply_alloc_sz; in megasas_free_cmds_fusion()
294 io_frames_sz = fusion->io_frames_alloc_sz; in megasas_free_cmds_fusion()
299 if (fusion->req_frames_desc) in megasas_free_cmds_fusion()
301 fusion->req_frames_desc, in megasas_free_cmds_fusion()
302 fusion->req_frames_desc_phys); in megasas_free_cmds_fusion()
304 if (fusion->reply_frames_desc) { in megasas_free_cmds_fusion()
305 pci_pool_free(fusion->reply_frames_desc_pool, in megasas_free_cmds_fusion()
306 fusion->reply_frames_desc, in megasas_free_cmds_fusion()
307 fusion->reply_frames_desc_phys); in megasas_free_cmds_fusion()
308 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_free_cmds_fusion()
311 if (fusion->io_request_frames) { in megasas_free_cmds_fusion()
312 pci_pool_free(fusion->io_request_frames_pool, in megasas_free_cmds_fusion()
313 fusion->io_request_frames, in megasas_free_cmds_fusion()
314 fusion->io_request_frames_phys); in megasas_free_cmds_fusion()
315 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_free_cmds_fusion()
323 kfree(fusion->cmd_list[i]); in megasas_free_cmds_fusion()
326 kfree(fusion->cmd_list); in megasas_free_cmds_fusion()
327 fusion->cmd_list = NULL; in megasas_free_cmds_fusion()
329 INIT_LIST_HEAD(&fusion->cmd_pool); in megasas_free_cmds_fusion()
341 struct fusion_context *fusion; in megasas_create_frame_pool_fusion() local
345 fusion = instance->ctrl_context; in megasas_create_frame_pool_fusion()
354 fusion->sg_dma_pool = pci_pool_create("megasas sg pool fusion", in megasas_create_frame_pool_fusion()
358 if (!fusion->sg_dma_pool) { in megasas_create_frame_pool_fusion()
363 fusion->sense_dma_pool = pci_pool_create("megasas sense pool fusion", in megasas_create_frame_pool_fusion()
367 if (!fusion->sense_dma_pool) { in megasas_create_frame_pool_fusion()
370 pci_pool_destroy(fusion->sg_dma_pool); in megasas_create_frame_pool_fusion()
371 fusion->sg_dma_pool = NULL; in megasas_create_frame_pool_fusion()
380 cmd = fusion->cmd_list[i]; in megasas_create_frame_pool_fusion()
382 cmd->sg_frame = pci_pool_alloc(fusion->sg_dma_pool, in megasas_create_frame_pool_fusion()
386 cmd->sense = pci_pool_alloc(fusion->sense_dma_pool, in megasas_create_frame_pool_fusion()
422 struct fusion_context *fusion; in megasas_alloc_cmds_fusion() local
429 fusion = instance->ctrl_context; in megasas_alloc_cmds_fusion()
433 fusion->req_frames_desc = in megasas_alloc_cmds_fusion()
435 fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
436 &fusion->req_frames_desc_phys, GFP_KERNEL); in megasas_alloc_cmds_fusion()
438 if (!fusion->req_frames_desc) { in megasas_alloc_cmds_fusion()
445 fusion->reply_frames_desc_pool = in megasas_alloc_cmds_fusion()
447 fusion->reply_alloc_sz * count, 16, 0); in megasas_alloc_cmds_fusion()
449 if (!fusion->reply_frames_desc_pool) { in megasas_alloc_cmds_fusion()
455 fusion->reply_frames_desc = in megasas_alloc_cmds_fusion()
456 pci_pool_alloc(fusion->reply_frames_desc_pool, GFP_KERNEL, in megasas_alloc_cmds_fusion()
457 &fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
458 if (!fusion->reply_frames_desc) { in megasas_alloc_cmds_fusion()
461 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_alloc_cmds_fusion()
465 reply_desc = fusion->reply_frames_desc; in megasas_alloc_cmds_fusion()
466 for (i = 0; i < fusion->reply_q_depth * count; i++, reply_desc++) in megasas_alloc_cmds_fusion()
469 io_frames_sz = fusion->io_frames_alloc_sz; in megasas_alloc_cmds_fusion()
471 fusion->io_request_frames_pool = in megasas_alloc_cmds_fusion()
473 fusion->io_frames_alloc_sz, 16, 0); in megasas_alloc_cmds_fusion()
475 if (!fusion->io_request_frames_pool) { in megasas_alloc_cmds_fusion()
481 fusion->io_request_frames = in megasas_alloc_cmds_fusion()
482 pci_pool_alloc(fusion->io_request_frames_pool, GFP_KERNEL, in megasas_alloc_cmds_fusion()
483 &fusion->io_request_frames_phys); in megasas_alloc_cmds_fusion()
484 if (!fusion->io_request_frames) { in megasas_alloc_cmds_fusion()
487 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_cmds_fusion()
496 fusion->cmd_list = kzalloc(sizeof(struct megasas_cmd_fusion *) in megasas_alloc_cmds_fusion()
499 if (!fusion->cmd_list) { in megasas_alloc_cmds_fusion()
507 fusion->cmd_list[i] = kmalloc(sizeof(struct megasas_cmd_fusion), in megasas_alloc_cmds_fusion()
509 if (!fusion->cmd_list[i]) { in megasas_alloc_cmds_fusion()
513 kfree(fusion->cmd_list[j]); in megasas_alloc_cmds_fusion()
515 kfree(fusion->cmd_list); in megasas_alloc_cmds_fusion()
516 fusion->cmd_list = NULL; in megasas_alloc_cmds_fusion()
522 io_req_base = fusion->io_request_frames + in megasas_alloc_cmds_fusion()
524 io_req_base_phys = fusion->io_request_frames_phys + in megasas_alloc_cmds_fusion()
533 cmd = fusion->cmd_list[i]; in megasas_alloc_cmds_fusion()
547 list_add_tail(&cmd->list, &fusion->cmd_pool); in megasas_alloc_cmds_fusion()
562 pci_pool_free(fusion->io_request_frames_pool, fusion->io_request_frames, in megasas_alloc_cmds_fusion()
563 fusion->io_request_frames_phys); in megasas_alloc_cmds_fusion()
564 pci_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_cmds_fusion()
566 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
567 fusion->reply_frames_desc, in megasas_alloc_cmds_fusion()
568 fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
569 pci_pool_free(fusion->reply_frames_desc_pool, in megasas_alloc_cmds_fusion()
570 fusion->reply_frames_desc, in megasas_alloc_cmds_fusion()
571 fusion->reply_frames_desc_phys); in megasas_alloc_cmds_fusion()
572 pci_pool_destroy(fusion->reply_frames_desc_pool); in megasas_alloc_cmds_fusion()
575 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
576 fusion->req_frames_desc, in megasas_alloc_cmds_fusion()
577 fusion->req_frames_desc_phys); in megasas_alloc_cmds_fusion()
595 struct fusion_context *fusion; in wait_and_poll() local
599 fusion = instance->ctrl_context; in wait_and_poll()
609 if (fusion) in wait_and_poll()
632 struct fusion_context *fusion; in megasas_ioc_init_fusion() local
637 fusion = instance->ctrl_context; in megasas_ioc_init_fusion()
667 IOCInitMessage->ReplyDescriptorPostQueueDepth = cpu_to_le16(fusion->reply_q_depth); in megasas_ioc_init_fusion()
668 IOCInitMessage->ReplyDescriptorPostQueueAddress = cpu_to_le64(fusion->reply_frames_desc_phys); in megasas_ioc_init_fusion()
669 IOCInitMessage->SystemRequestFrameBaseAddress = cpu_to_le64(fusion->io_request_frames_phys); in megasas_ioc_init_fusion()
770 struct fusion_context *fusion; in megasas_get_ld_map_info() local
779 fusion = instance->ctrl_context; in megasas_get_ld_map_info()
781 if (!fusion) { in megasas_get_ld_map_info()
788 size_map_info = fusion->current_map_sz; in megasas_get_ld_map_info()
790 ci = (void *) fusion->ld_map[(instance->map_id & 1)]; in megasas_get_ld_map_info()
791 ci_h = fusion->ld_map_phys[(instance->map_id & 1)]; in megasas_get_ld_map_info()
799 memset(ci, 0, fusion->max_map_sz); in megasas_get_ld_map_info()
835 struct fusion_context *fusion = instance->ctrl_context; in megasas_get_map_info() local
837 fusion->fast_path_io = 0; in megasas_get_map_info()
840 fusion->fast_path_io = 1; in megasas_get_map_info()
862 struct fusion_context *fusion; in megasas_sync_map_info() local
878 fusion = instance->ctrl_context; in megasas_sync_map_info()
880 if (!fusion) { in megasas_sync_map_info()
885 map = fusion->ld_drv_map[instance->map_id & 1]; in megasas_sync_map_info()
896 fusion->ld_map[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
897 memset(ci, 0, fusion->max_map_sz); in megasas_sync_map_info()
899 ci_h = fusion->ld_map_phys[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
909 size_map_info = fusion->current_map_sz; in megasas_sync_map_info()
1001 struct fusion_context *fusion; in megasas_init_adapter_fusion() local
1005 fusion = instance->ctrl_context; in megasas_init_adapter_fusion()
1031 fusion->reply_q_depth = 2 * (((max_cmd + 1 + 15)/16)*16); in megasas_init_adapter_fusion()
1033 fusion->request_alloc_sz = in megasas_init_adapter_fusion()
1035 fusion->reply_alloc_sz = sizeof(union MPI2_REPLY_DESCRIPTORS_UNION) in megasas_init_adapter_fusion()
1036 *(fusion->reply_q_depth); in megasas_init_adapter_fusion()
1037 fusion->io_frames_alloc_sz = MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE + in megasas_init_adapter_fusion()
1041 fusion->max_sge_in_main_msg = in megasas_init_adapter_fusion()
1045 fusion->max_sge_in_chain = in megasas_init_adapter_fusion()
1049 fusion->max_sge_in_main_msg + fusion->max_sge_in_chain - 2); in megasas_init_adapter_fusion()
1052 fusion->chain_offset_mfi_pthru = in megasas_init_adapter_fusion()
1055 fusion->chain_offset_io_request = in megasas_init_adapter_fusion()
1061 fusion->last_reply_idx[i] = 0; in megasas_init_adapter_fusion()
1084 fusion->fast_path_io = 0; in megasas_init_adapter_fusion()
1086 fusion->drv_map_pages = get_order(fusion->drv_map_sz); in megasas_init_adapter_fusion()
1088 fusion->ld_map[i] = NULL; in megasas_init_adapter_fusion()
1089 fusion->ld_drv_map[i] = (void *)__get_free_pages(GFP_KERNEL, in megasas_init_adapter_fusion()
1090 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1091 if (!fusion->ld_drv_map[i]) { in megasas_init_adapter_fusion()
1094 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1096 free_pages((ulong)fusion->ld_drv_map[0], in megasas_init_adapter_fusion()
1097 fusion->drv_map_pages); in megasas_init_adapter_fusion()
1100 memset(fusion->ld_drv_map[i], 0, in megasas_init_adapter_fusion()
1101 ((1 << PAGE_SHIFT) << fusion->drv_map_pages)); in megasas_init_adapter_fusion()
1105 fusion->ld_map[i] = dma_alloc_coherent(&instance->pdev->dev, in megasas_init_adapter_fusion()
1106 fusion->max_map_sz, in megasas_init_adapter_fusion()
1107 &fusion->ld_map_phys[i], in megasas_init_adapter_fusion()
1109 if (!fusion->ld_map[i]) { in megasas_init_adapter_fusion()
1123 dma_free_coherent(&instance->pdev->dev, fusion->max_map_sz, in megasas_init_adapter_fusion()
1124 fusion->ld_map[0], fusion->ld_map_phys[0]); in megasas_init_adapter_fusion()
1226 struct fusion_context *fusion; in megasas_make_sgl_fusion() local
1228 fusion = instance->ctrl_context; in megasas_make_sgl_fusion()
1233 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in megasas_make_sgl_fusion()
1257 if ((sg_processed == (fusion->max_sge_in_main_msg - 1)) && in megasas_make_sgl_fusion()
1258 (sge_count > fusion->max_sge_in_main_msg)) { in megasas_make_sgl_fusion()
1269 fusion-> in megasas_make_sgl_fusion()
1275 fusion->chain_offset_io_request; in megasas_make_sgl_fusion()
1496 struct fusion_context *fusion; in megasas_build_ldio_fusion() local
1502 fusion = instance->ctrl_context; in megasas_build_ldio_fusion()
1574 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ldio_fusion()
1577 instance->fw_supported_vd_count) || (!fusion->fast_path_io)) { in megasas_build_ldio_fusion()
1614 if ((fusion->load_balance_info[device_id].loadBalanceFlag) && in megasas_build_ldio_fusion()
1618 &fusion->load_balance_info[device_id], in megasas_build_ldio_fusion()
1671 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_dcdb_fusion() local
1682 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_dcdb_fusion()
1688 if (fusion->fast_path_io) in megasas_build_dcdb_fusion()
1742 if ((!fusion->fast_path_io) || in megasas_build_dcdb_fusion()
1886 struct fusion_context *fusion; in megasas_get_request_descriptor() local
1894 fusion = instance->ctrl_context; in megasas_get_request_descriptor()
1895 p = fusion->req_frames_desc in megasas_get_request_descriptor()
1914 struct fusion_context *fusion; in megasas_build_and_issue_cmd_fusion() local
1916 fusion = instance->ctrl_context; in megasas_build_and_issue_cmd_fusion()
1969 struct fusion_context *fusion; in complete_cmd_fusion() local
1979 fusion = instance->ctrl_context; in complete_cmd_fusion()
1984 desc = fusion->reply_frames_desc; in complete_cmd_fusion()
1985 desc += ((MSIxIndex * fusion->reply_alloc_sz)/ in complete_cmd_fusion()
1987 fusion->last_reply_idx[MSIxIndex]; in complete_cmd_fusion()
2004 cmd_fusion = fusion->cmd_list[smid - 1]; in complete_cmd_fusion()
2021 lbinfo = &fusion->load_balance_info[device_id]; in complete_cmd_fusion()
2064 fusion->last_reply_idx[MSIxIndex]++; in complete_cmd_fusion()
2065 if (fusion->last_reply_idx[MSIxIndex] >= in complete_cmd_fusion()
2066 fusion->reply_q_depth) in complete_cmd_fusion()
2067 fusion->last_reply_idx[MSIxIndex] = 0; in complete_cmd_fusion()
2074 if (!fusion->last_reply_idx[MSIxIndex]) in complete_cmd_fusion()
2075 desc = fusion->reply_frames_desc + in complete_cmd_fusion()
2076 ((MSIxIndex * fusion->reply_alloc_sz)/ in complete_cmd_fusion()
2102 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2106 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2119 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2123 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
2218 struct fusion_context *fusion; in build_mpt_mfi_pass_thru() local
2251 fusion = instance->ctrl_context; in build_mpt_mfi_pass_thru()
2258 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in build_mpt_mfi_pass_thru()
2268 io_req->ChainOffset = fusion->chain_offset_mfi_pthru; in build_mpt_mfi_pass_thru()
2502 struct fusion_context *fusion; in megasas_reset_reply_desc() local
2505 fusion = instance->ctrl_context; in megasas_reset_reply_desc()
2508 fusion->last_reply_idx[i] = 0; in megasas_reset_reply_desc()
2509 reply_desc = fusion->reply_frames_desc; in megasas_reset_reply_desc()
2510 for (i = 0 ; i < fusion->reply_q_depth * count; i++, reply_desc++) in megasas_reset_reply_desc()
2544 struct fusion_context *fusion; in megasas_reset_fusion() local
2551 fusion = instance->ctrl_context; in megasas_reset_fusion()
2617 cmd_fusion = fusion->cmd_list[i]; in megasas_reset_fusion()
2795 cmd_fusion = fusion->cmd_list[j]; in megasas_reset_fusion()
2840 memset(fusion->load_balance_info, 0, in megasas_reset_fusion()