Lines Matching refs:fusion

233 	struct fusion_context *fusion;  in megasas_get_cmd_fusion()  local
235 fusion = instance->ctrl_context; in megasas_get_cmd_fusion()
236 return fusion->cmd_list[blk_tag]; in megasas_get_cmd_fusion()
390 struct fusion_context *fusion = instance->ctrl_context; in megasas_free_cmds_fusion() local
393 if (fusion->sense) in megasas_free_cmds_fusion()
394 dma_pool_free(fusion->sense_dma_pool, fusion->sense, in megasas_free_cmds_fusion()
395 fusion->sense_phys_addr); in megasas_free_cmds_fusion()
398 if (fusion->cmd_list) { in megasas_free_cmds_fusion()
400 cmd = fusion->cmd_list[i]; in megasas_free_cmds_fusion()
403 dma_pool_free(fusion->sg_dma_pool, in megasas_free_cmds_fusion()
409 kfree(fusion->cmd_list); in megasas_free_cmds_fusion()
412 if (fusion->sg_dma_pool) { in megasas_free_cmds_fusion()
413 dma_pool_destroy(fusion->sg_dma_pool); in megasas_free_cmds_fusion()
414 fusion->sg_dma_pool = NULL; in megasas_free_cmds_fusion()
416 if (fusion->sense_dma_pool) { in megasas_free_cmds_fusion()
417 dma_pool_destroy(fusion->sense_dma_pool); in megasas_free_cmds_fusion()
418 fusion->sense_dma_pool = NULL; in megasas_free_cmds_fusion()
429 if (fusion->req_frames_desc) in megasas_free_cmds_fusion()
431 fusion->request_alloc_sz, fusion->req_frames_desc, in megasas_free_cmds_fusion()
432 fusion->req_frames_desc_phys); in megasas_free_cmds_fusion()
433 if (fusion->io_request_frames) in megasas_free_cmds_fusion()
434 dma_pool_free(fusion->io_request_frames_pool, in megasas_free_cmds_fusion()
435 fusion->io_request_frames, in megasas_free_cmds_fusion()
436 fusion->io_request_frames_phys); in megasas_free_cmds_fusion()
437 if (fusion->io_request_frames_pool) { in megasas_free_cmds_fusion()
438 dma_pool_destroy(fusion->io_request_frames_pool); in megasas_free_cmds_fusion()
439 fusion->io_request_frames_pool = NULL; in megasas_free_cmds_fusion()
452 struct fusion_context *fusion; in megasas_create_sg_sense_fusion() local
457 fusion = instance->ctrl_context; in megasas_create_sg_sense_fusion()
461 fusion->sg_dma_pool = in megasas_create_sg_sense_fusion()
466 fusion->sense_dma_pool = in megasas_create_sg_sense_fusion()
470 if (!fusion->sense_dma_pool || !fusion->sg_dma_pool) { in megasas_create_sg_sense_fusion()
476 fusion->sense = dma_pool_alloc(fusion->sense_dma_pool, in megasas_create_sg_sense_fusion()
477 GFP_KERNEL, &fusion->sense_phys_addr); in megasas_create_sg_sense_fusion()
478 if (!fusion->sense) { in megasas_create_sg_sense_fusion()
495 if (!megasas_check_same_4gb_region(instance, fusion->sense_phys_addr, in megasas_create_sg_sense_fusion()
497 dma_pool_free(fusion->sense_dma_pool, fusion->sense, in megasas_create_sg_sense_fusion()
498 fusion->sense_phys_addr); in megasas_create_sg_sense_fusion()
499 fusion->sense = NULL; in megasas_create_sg_sense_fusion()
500 dma_pool_destroy(fusion->sense_dma_pool); in megasas_create_sg_sense_fusion()
502 fusion->sense_dma_pool = in megasas_create_sg_sense_fusion()
506 if (!fusion->sense_dma_pool) { in megasas_create_sg_sense_fusion()
511 fusion->sense = dma_pool_alloc(fusion->sense_dma_pool, in megasas_create_sg_sense_fusion()
513 &fusion->sense_phys_addr); in megasas_create_sg_sense_fusion()
514 if (!fusion->sense) { in megasas_create_sg_sense_fusion()
525 cmd = fusion->cmd_list[i]; in megasas_create_sg_sense_fusion()
526 cmd->sg_frame = dma_pool_alloc(fusion->sg_dma_pool, in megasas_create_sg_sense_fusion()
530 cmd->sense = (u8 *)fusion->sense + offset; in megasas_create_sg_sense_fusion()
531 cmd->sense_phys_addr = fusion->sense_phys_addr + offset; in megasas_create_sg_sense_fusion()
542 cmd = fusion->cmd_list[i]; in megasas_create_sg_sense_fusion()
544 cmd->sense = (u8 *)fusion->sense + offset; in megasas_create_sg_sense_fusion()
545 cmd->sense_phys_addr = fusion->sense_phys_addr + offset; in megasas_create_sg_sense_fusion()
556 struct fusion_context *fusion; in megasas_alloc_cmdlist_fusion() local
558 fusion = instance->ctrl_context; in megasas_alloc_cmdlist_fusion()
567 fusion->cmd_list = in megasas_alloc_cmdlist_fusion()
570 if (!fusion->cmd_list) { in megasas_alloc_cmdlist_fusion()
577 fusion->cmd_list[i] = kzalloc(sizeof(struct megasas_cmd_fusion), in megasas_alloc_cmdlist_fusion()
579 if (!fusion->cmd_list[i]) { in megasas_alloc_cmdlist_fusion()
581 kfree(fusion->cmd_list[j]); in megasas_alloc_cmdlist_fusion()
582 kfree(fusion->cmd_list); in megasas_alloc_cmdlist_fusion()
595 struct fusion_context *fusion; in megasas_alloc_request_fusion() local
597 fusion = instance->ctrl_context; in megasas_alloc_request_fusion()
600 fusion->io_request_frames_pool = in megasas_alloc_request_fusion()
602 fusion->io_frames_alloc_sz, 16, 0); in megasas_alloc_request_fusion()
604 if (!fusion->io_request_frames_pool) { in megasas_alloc_request_fusion()
610 fusion->io_request_frames = in megasas_alloc_request_fusion()
611 dma_pool_alloc(fusion->io_request_frames_pool, in megasas_alloc_request_fusion()
613 &fusion->io_request_frames_phys); in megasas_alloc_request_fusion()
614 if (!fusion->io_request_frames) { in megasas_alloc_request_fusion()
617 dma_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_request_fusion()
628 fusion->io_request_frames_phys, in megasas_alloc_request_fusion()
629 fusion->io_frames_alloc_sz)) { in megasas_alloc_request_fusion()
630 dma_pool_free(fusion->io_request_frames_pool, in megasas_alloc_request_fusion()
631 fusion->io_request_frames, in megasas_alloc_request_fusion()
632 fusion->io_request_frames_phys); in megasas_alloc_request_fusion()
633 fusion->io_request_frames = NULL; in megasas_alloc_request_fusion()
634 dma_pool_destroy(fusion->io_request_frames_pool); in megasas_alloc_request_fusion()
636 fusion->io_request_frames_pool = in megasas_alloc_request_fusion()
639 fusion->io_frames_alloc_sz, in megasas_alloc_request_fusion()
640 roundup_pow_of_two(fusion->io_frames_alloc_sz), in megasas_alloc_request_fusion()
643 if (!fusion->io_request_frames_pool) { in megasas_alloc_request_fusion()
649 fusion->io_request_frames = in megasas_alloc_request_fusion()
650 dma_pool_alloc(fusion->io_request_frames_pool, in megasas_alloc_request_fusion()
652 &fusion->io_request_frames_phys); in megasas_alloc_request_fusion()
654 if (!fusion->io_request_frames) { in megasas_alloc_request_fusion()
661 fusion->req_frames_desc = in megasas_alloc_request_fusion()
663 fusion->request_alloc_sz, in megasas_alloc_request_fusion()
664 &fusion->req_frames_desc_phys, GFP_KERNEL); in megasas_alloc_request_fusion()
665 if (!fusion->req_frames_desc) { in megasas_alloc_request_fusion()
678 struct fusion_context *fusion; in megasas_alloc_reply_fusion() local
680 fusion = instance->ctrl_context; in megasas_alloc_reply_fusion()
683 fusion->reply_frames_desc_pool = in megasas_alloc_reply_fusion()
685 fusion->reply_alloc_sz * count, 16, 0); in megasas_alloc_reply_fusion()
687 if (!fusion->reply_frames_desc_pool) { in megasas_alloc_reply_fusion()
693 fusion->reply_frames_desc[0] = in megasas_alloc_reply_fusion()
694 dma_pool_alloc(fusion->reply_frames_desc_pool, in megasas_alloc_reply_fusion()
695 GFP_KERNEL, &fusion->reply_frames_desc_phys[0]); in megasas_alloc_reply_fusion()
696 if (!fusion->reply_frames_desc[0]) { in megasas_alloc_reply_fusion()
703 fusion->reply_frames_desc_phys[0], in megasas_alloc_reply_fusion()
704 (fusion->reply_alloc_sz * count))) { in megasas_alloc_reply_fusion()
705 dma_pool_free(fusion->reply_frames_desc_pool, in megasas_alloc_reply_fusion()
706 fusion->reply_frames_desc[0], in megasas_alloc_reply_fusion()
707 fusion->reply_frames_desc_phys[0]); in megasas_alloc_reply_fusion()
708 fusion->reply_frames_desc[0] = NULL; in megasas_alloc_reply_fusion()
709 dma_pool_destroy(fusion->reply_frames_desc_pool); in megasas_alloc_reply_fusion()
711 fusion->reply_frames_desc_pool = in megasas_alloc_reply_fusion()
714 fusion->reply_alloc_sz * count, in megasas_alloc_reply_fusion()
715 roundup_pow_of_two(fusion->reply_alloc_sz * count), in megasas_alloc_reply_fusion()
718 if (!fusion->reply_frames_desc_pool) { in megasas_alloc_reply_fusion()
724 fusion->reply_frames_desc[0] = in megasas_alloc_reply_fusion()
725 dma_pool_alloc(fusion->reply_frames_desc_pool, in megasas_alloc_reply_fusion()
727 &fusion->reply_frames_desc_phys[0]); in megasas_alloc_reply_fusion()
729 if (!fusion->reply_frames_desc[0]) { in megasas_alloc_reply_fusion()
736 reply_desc = fusion->reply_frames_desc[0]; in megasas_alloc_reply_fusion()
737 for (i = 0; i < fusion->reply_q_depth * count; i++, reply_desc++) in megasas_alloc_reply_fusion()
744 fusion->reply_frames_desc[i + 1] = in megasas_alloc_reply_fusion()
745 fusion->reply_frames_desc[i] + in megasas_alloc_reply_fusion()
746 (fusion->reply_alloc_sz)/sizeof(union MPI2_REPLY_DESCRIPTORS_UNION); in megasas_alloc_reply_fusion()
755 struct fusion_context *fusion; in megasas_alloc_rdpq_fusion() local
762 fusion = instance->ctrl_context; in megasas_alloc_rdpq_fusion()
763 chunk_size = fusion->reply_alloc_sz * RDPQ_MAX_INDEX_IN_ONE_CHUNK; in megasas_alloc_rdpq_fusion()
767 fusion->rdpq_virt = dma_alloc_coherent(&instance->pdev->dev, in megasas_alloc_rdpq_fusion()
768 array_size, &fusion->rdpq_phys, in megasas_alloc_rdpq_fusion()
770 if (!fusion->rdpq_virt) { in megasas_alloc_rdpq_fusion()
778 fusion->reply_frames_desc_pool = dma_pool_create("mr_rdpq", in megasas_alloc_rdpq_fusion()
781 fusion->reply_frames_desc_pool_align = in megasas_alloc_rdpq_fusion()
788 if (!fusion->reply_frames_desc_pool || in megasas_alloc_rdpq_fusion()
789 !fusion->reply_frames_desc_pool_align) { in megasas_alloc_rdpq_fusion()
807 dma_pool_alloc(fusion->reply_frames_desc_pool, in megasas_alloc_rdpq_fusion()
828 dma_pool_free(fusion->reply_frames_desc_pool, in megasas_alloc_rdpq_fusion()
833 dma_pool_alloc(fusion->reply_frames_desc_pool_align, in megasas_alloc_rdpq_fusion()
841 fusion->rdpq_tracker[i].dma_pool_ptr = in megasas_alloc_rdpq_fusion()
842 fusion->reply_frames_desc_pool_align; in megasas_alloc_rdpq_fusion()
844 fusion->rdpq_tracker[i].dma_pool_ptr = in megasas_alloc_rdpq_fusion()
845 fusion->reply_frames_desc_pool; in megasas_alloc_rdpq_fusion()
848 fusion->rdpq_tracker[i].pool_entry_phys = rdpq_chunk_phys[i]; in megasas_alloc_rdpq_fusion()
849 fusion->rdpq_tracker[i].pool_entry_virt = rdpq_chunk_virt[i]; in megasas_alloc_rdpq_fusion()
858 offset = fusion->reply_alloc_sz * i; in megasas_alloc_rdpq_fusion()
859 fusion->rdpq_virt[abs_index].RDPQBaseAddress = in megasas_alloc_rdpq_fusion()
861 fusion->reply_frames_desc_phys[abs_index] = in megasas_alloc_rdpq_fusion()
863 fusion->reply_frames_desc[abs_index] = in megasas_alloc_rdpq_fusion()
866 reply_desc = fusion->reply_frames_desc[abs_index]; in megasas_alloc_rdpq_fusion()
867 for (j = 0; j < fusion->reply_q_depth; j++, reply_desc++) in megasas_alloc_rdpq_fusion()
879 struct fusion_context *fusion; in megasas_free_rdpq_fusion() local
881 fusion = instance->ctrl_context; in megasas_free_rdpq_fusion()
884 if (fusion->rdpq_tracker[i].pool_entry_virt) in megasas_free_rdpq_fusion()
885 dma_pool_free(fusion->rdpq_tracker[i].dma_pool_ptr, in megasas_free_rdpq_fusion()
886 fusion->rdpq_tracker[i].pool_entry_virt, in megasas_free_rdpq_fusion()
887 fusion->rdpq_tracker[i].pool_entry_phys); in megasas_free_rdpq_fusion()
891 dma_pool_destroy(fusion->reply_frames_desc_pool); in megasas_free_rdpq_fusion()
892 dma_pool_destroy(fusion->reply_frames_desc_pool_align); in megasas_free_rdpq_fusion()
894 if (fusion->rdpq_virt) in megasas_free_rdpq_fusion()
897 fusion->rdpq_virt, fusion->rdpq_phys); in megasas_free_rdpq_fusion()
903 struct fusion_context *fusion; in megasas_free_reply_fusion() local
905 fusion = instance->ctrl_context; in megasas_free_reply_fusion()
907 if (fusion->reply_frames_desc[0]) in megasas_free_reply_fusion()
908 dma_pool_free(fusion->reply_frames_desc_pool, in megasas_free_reply_fusion()
909 fusion->reply_frames_desc[0], in megasas_free_reply_fusion()
910 fusion->reply_frames_desc_phys[0]); in megasas_free_reply_fusion()
912 dma_pool_destroy(fusion->reply_frames_desc_pool); in megasas_free_reply_fusion()
937 struct fusion_context *fusion; in megasas_alloc_cmds_fusion() local
944 fusion = instance->ctrl_context; in megasas_alloc_cmds_fusion()
963 io_req_base = fusion->io_request_frames + MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE; in megasas_alloc_cmds_fusion()
964 io_req_base_phys = fusion->io_request_frames_phys + MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE; in megasas_alloc_cmds_fusion()
972 cmd = fusion->cmd_list[i]; in megasas_alloc_cmds_fusion()
1055 struct fusion_context *fusion; in megasas_ioc_init_fusion() local
1066 fusion = instance->ctrl_context; in megasas_ioc_init_fusion()
1068 ioc_init_handle = fusion->ioc_init_request_phys; in megasas_ioc_init_fusion()
1069 IOCInitMessage = fusion->ioc_init_request; in megasas_ioc_init_fusion()
1071 cmd = fusion->ioc_init_cmd; in megasas_ioc_init_fusion()
1121 IOCInitMessage->ReplyDescriptorPostQueueDepth = cpu_to_le16(fusion->reply_q_depth); in megasas_ioc_init_fusion()
1123 cpu_to_le64(fusion->rdpq_phys) : in megasas_ioc_init_fusion()
1124 cpu_to_le64(fusion->reply_frames_desc_phys[0]); in megasas_ioc_init_fusion()
1127 IOCInitMessage->SystemRequestFrameBaseAddress = cpu_to_le64(fusion->io_request_frames_phys); in megasas_ioc_init_fusion()
1128 IOCInitMessage->SenseBufferAddressHigh = cpu_to_le32(upper_32_bits(fusion->sense_phys_addr)); in megasas_ioc_init_fusion()
1273 struct fusion_context *fusion = instance->ctrl_context; in megasas_sync_pd_seq_num() local
1277 pd_sync = (void *)fusion->pd_seq_sync[(instance->pd_seq_map_id & 1)]; in megasas_sync_pd_seq_num()
1278 pd_seq_h = fusion->pd_seq_phys[(instance->pd_seq_map_id & 1)]; in megasas_sync_pd_seq_num()
1367 struct fusion_context *fusion; in megasas_get_ld_map_info() local
1376 fusion = instance->ctrl_context; in megasas_get_ld_map_info()
1378 if (!fusion) { in megasas_get_ld_map_info()
1385 size_map_info = fusion->current_map_sz; in megasas_get_ld_map_info()
1387 ci = (void *) fusion->ld_map[(instance->map_id & 1)]; in megasas_get_ld_map_info()
1388 ci_h = fusion->ld_map_phys[(instance->map_id & 1)]; in megasas_get_ld_map_info()
1396 memset(ci, 0, fusion->max_map_sz); in megasas_get_ld_map_info()
1428 struct fusion_context *fusion = instance->ctrl_context; in megasas_get_map_info() local
1430 fusion->fast_path_io = 0; in megasas_get_map_info()
1433 fusion->fast_path_io = 1; in megasas_get_map_info()
1455 struct fusion_context *fusion; in megasas_sync_map_info() local
1470 fusion = instance->ctrl_context; in megasas_sync_map_info()
1472 if (!fusion) { in megasas_sync_map_info()
1477 map = fusion->ld_drv_map[instance->map_id & 1]; in megasas_sync_map_info()
1486 fusion->ld_map[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
1487 memset(ci, 0, fusion->max_map_sz); in megasas_sync_map_info()
1489 ci_h = fusion->ld_map_phys[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
1499 size_map_info = fusion->current_map_sz; in megasas_sync_map_info()
1602 struct fusion_context *fusion; in megasas_allocate_raid_maps() local
1605 fusion = instance->ctrl_context; in megasas_allocate_raid_maps()
1607 fusion->drv_map_pages = get_order(fusion->drv_map_sz); in megasas_allocate_raid_maps()
1610 fusion->ld_map[i] = NULL; in megasas_allocate_raid_maps()
1612 fusion->ld_drv_map[i] = (void *) in megasas_allocate_raid_maps()
1614 fusion->drv_map_pages); in megasas_allocate_raid_maps()
1616 if (!fusion->ld_drv_map[i]) { in megasas_allocate_raid_maps()
1617 fusion->ld_drv_map[i] = vzalloc(fusion->drv_map_sz); in megasas_allocate_raid_maps()
1619 if (!fusion->ld_drv_map[i]) { in megasas_allocate_raid_maps()
1623 fusion->drv_map_sz); in megasas_allocate_raid_maps()
1630 fusion->ld_map[i] = dma_alloc_coherent(&instance->pdev->dev, in megasas_allocate_raid_maps()
1631 fusion->max_map_sz, in megasas_allocate_raid_maps()
1632 &fusion->ld_map_phys[i], in megasas_allocate_raid_maps()
1634 if (!fusion->ld_map[i]) { in megasas_allocate_raid_maps()
1646 if (fusion->ld_map[i]) in megasas_allocate_raid_maps()
1648 fusion->max_map_sz, in megasas_allocate_raid_maps()
1649 fusion->ld_map[i], in megasas_allocate_raid_maps()
1650 fusion->ld_map_phys[i]); in megasas_allocate_raid_maps()
1655 if (fusion->ld_drv_map[i]) { in megasas_allocate_raid_maps()
1656 if (is_vmalloc_addr(fusion->ld_drv_map[i])) in megasas_allocate_raid_maps()
1657 vfree(fusion->ld_drv_map[i]); in megasas_allocate_raid_maps()
1659 free_pages((ulong)fusion->ld_drv_map[i], in megasas_allocate_raid_maps()
1660 fusion->drv_map_pages); in megasas_allocate_raid_maps()
1677 struct fusion_context *fusion; in megasas_configure_queue_sizes() local
1680 fusion = instance->ctrl_context; in megasas_configure_queue_sizes()
1692 fusion->reply_q_depth = 2 * ((max_cmd + 1 + 15) / 16) * 16; in megasas_configure_queue_sizes()
1694 fusion->request_alloc_sz = sizeof(union MEGASAS_REQUEST_DESCRIPTOR_UNION) * in megasas_configure_queue_sizes()
1696 fusion->reply_alloc_sz = sizeof(union MPI2_REPLY_DESCRIPTORS_UNION) * in megasas_configure_queue_sizes()
1697 (fusion->reply_q_depth); in megasas_configure_queue_sizes()
1698 fusion->io_frames_alloc_sz = MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE + in megasas_configure_queue_sizes()
1705 struct fusion_context *fusion; in megasas_alloc_ioc_init_frame() local
1708 fusion = instance->ctrl_context; in megasas_alloc_ioc_init_frame()
1729 fusion->ioc_init_cmd = cmd; in megasas_alloc_ioc_init_frame()
1739 struct fusion_context *fusion; in megasas_free_ioc_init_cmd() local
1741 fusion = instance->ctrl_context; in megasas_free_ioc_init_cmd()
1743 if (fusion->ioc_init_cmd && fusion->ioc_init_cmd->frame) in megasas_free_ioc_init_cmd()
1746 fusion->ioc_init_cmd->frame, in megasas_free_ioc_init_cmd()
1747 fusion->ioc_init_cmd->frame_phys_addr); in megasas_free_ioc_init_cmd()
1749 kfree(fusion->ioc_init_cmd); in megasas_free_ioc_init_cmd()
1761 struct fusion_context *fusion; in megasas_init_adapter_fusion() local
1766 fusion = instance->ctrl_context; in megasas_init_adapter_fusion()
1802 fusion->max_sge_in_main_msg = in megasas_init_adapter_fusion()
1806 fusion->max_sge_in_chain = in megasas_init_adapter_fusion()
1811 rounddown_pow_of_two(fusion->max_sge_in_main_msg in megasas_init_adapter_fusion()
1812 + fusion->max_sge_in_chain - 2); in megasas_init_adapter_fusion()
1815 fusion->chain_offset_mfi_pthru = in megasas_init_adapter_fusion()
1818 fusion->chain_offset_io_request = in megasas_init_adapter_fusion()
1824 fusion->last_reply_idx[i] = 0; in megasas_init_adapter_fusion()
1874 fusion->fast_path_io = 0; in megasas_init_adapter_fusion()
1988 map_cmd_status(struct fusion_context *fusion, in map_cmd_status() argument
2238 struct fusion_context *fusion; in megasas_make_sgl_fusion() local
2240 fusion = instance->ctrl_context; in megasas_make_sgl_fusion()
2244 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in megasas_make_sgl_fusion()
2258 if ((sg_processed == (fusion->max_sge_in_main_msg - 1)) && in megasas_make_sgl_fusion()
2259 (sge_count > fusion->max_sge_in_main_msg)) { in megasas_make_sgl_fusion()
2267 fusion-> in megasas_make_sgl_fusion()
2273 fusion->chain_offset_io_request; in megasas_make_sgl_fusion()
2527 struct fusion_context *fusion = instance->ctrl_context; in megasas_stream_detect() local
2530 = fusion->stream_detect_by_ld[device_id]; in megasas_stream_detect()
2608 megasas_set_raidflag_cpu_affinity(struct fusion_context *fusion, in megasas_set_raidflag_cpu_affinity() argument
2669 if ((fusion->pcie_bw_limitation) && (raid->level == 1) && (!is_read) && in megasas_set_raidflag_cpu_affinity()
2697 struct fusion_context *fusion; in megasas_build_ldio_fusion() local
2708 fusion = instance->ctrl_context; in megasas_build_ldio_fusion()
2784 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ldio_fusion()
2790 if (!raid || (!fusion->fast_path_io)) { in megasas_build_ldio_fusion()
2817 } else if (fusion->pcie_bw_limitation && in megasas_build_ldio_fusion()
2844 megasas_set_raidflag_cpu_affinity(fusion, &io_request->RaidContext, in megasas_build_ldio_fusion()
2873 if (fusion->load_balance_info && in megasas_build_ldio_fusion()
2874 (fusion->load_balance_info[device_id].loadBalanceFlag) && in megasas_build_ldio_fusion()
2878 &fusion->load_balance_info[device_id], in megasas_build_ldio_fusion()
2950 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_ld_nonrw_fusion() local
2960 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ld_nonrw_fusion()
2969 if (fusion->fast_path_io && ( in megasas_build_ld_nonrw_fusion()
3046 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_syspd_fusion() local
3047 pd_sync = (void *)fusion->pd_seq_sync[(instance->pd_seq_map_id - 1) & 1]; in megasas_build_syspd_fusion()
3108 if (fusion->fast_path_io) { in megasas_build_syspd_fusion()
3110 fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_syspd_fusion()
3261 struct fusion_context *fusion; in megasas_get_request_descriptor() local
3263 fusion = instance->ctrl_context; in megasas_get_request_descriptor()
3264 p = fusion->req_frames_desc + in megasas_get_request_descriptor()
3279 struct fusion_context *fusion; in megasas_prepare_secondRaid1_IO() local
3280 fusion = instance->ctrl_context; in megasas_prepare_secondRaid1_IO()
3286 (fusion->max_sge_in_main_msg * sizeof(union MPI2_SGE_IO_UNION))); in megasas_prepare_secondRaid1_IO()
3413 struct fusion_context *fusion; in megasas_complete_r1_command() local
3419 fusion = instance->ctrl_context; in megasas_complete_r1_command()
3422 r1_cmd = fusion->cmd_list[peer_smid - 1]; in megasas_complete_r1_command()
3442 map_cmd_status(fusion, scmd_local, status, ex_status, in megasas_complete_r1_command()
3469 struct fusion_context *fusion; in complete_cmd_fusion() local
3482 fusion = instance->ctrl_context; in complete_cmd_fusion()
3487 desc = fusion->reply_frames_desc[MSIxIndex] + in complete_cmd_fusion()
3488 fusion->last_reply_idx[MSIxIndex]; in complete_cmd_fusion()
3506 cmd_fusion = fusion->cmd_list[smid - 1]; in complete_cmd_fusion()
3529 if (fusion->load_balance_info && in complete_cmd_fusion()
3533 lbinfo = &fusion->load_balance_info[device_id]; in complete_cmd_fusion()
3541 map_cmd_status(fusion, scmd_local, status, in complete_cmd_fusion()
3567 fusion->last_reply_idx[MSIxIndex]++; in complete_cmd_fusion()
3568 if (fusion->last_reply_idx[MSIxIndex] >= in complete_cmd_fusion()
3569 fusion->reply_q_depth) in complete_cmd_fusion()
3570 fusion->last_reply_idx[MSIxIndex] = 0; in complete_cmd_fusion()
3577 if (!fusion->last_reply_idx[MSIxIndex]) in complete_cmd_fusion()
3578 desc = fusion->reply_frames_desc[MSIxIndex]; in complete_cmd_fusion()
3600 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
3604 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
3622 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
3626 fusion->last_reply_idx[MSIxIndex], in complete_cmd_fusion()
3780 struct fusion_context *fusion; in build_mpt_mfi_pass_thru() local
3783 fusion = instance->ctrl_context; in build_mpt_mfi_pass_thru()
3805 sgl_ptr_end += fusion->max_sge_in_main_msg - 1; in build_mpt_mfi_pass_thru()
3815 io_req->ChainOffset = fusion->chain_offset_mfi_pthru; in build_mpt_mfi_pass_thru()
4164 struct fusion_context *fusion; in megasas_reset_reply_desc() local
4167 fusion = instance->ctrl_context; in megasas_reset_reply_desc()
4170 fusion->last_reply_idx[i] = 0; in megasas_reset_reply_desc()
4171 reply_desc = fusion->reply_frames_desc[i]; in megasas_reset_reply_desc()
4172 for (j = 0 ; j < fusion->reply_q_depth; j++, reply_desc++) in megasas_reset_reply_desc()
4186 struct fusion_context *fusion; in megasas_refire_mgmt_cmd() local
4195 fusion = instance->ctrl_context; in megasas_refire_mgmt_cmd()
4201 cmd_fusion = fusion->cmd_list[j]; in megasas_refire_mgmt_cmd()
4286 struct fusion_context *fusion; in megasas_return_polled_cmds() local
4289 fusion = instance->ctrl_context; in megasas_return_polled_cmds()
4292 cmd_fusion = fusion->cmd_list[i]; in megasas_return_polled_cmds()
4321 struct fusion_context *fusion; in megasas_track_scsiio() local
4322 fusion = instance->ctrl_context; in megasas_track_scsiio()
4325 cmd_fusion = fusion->cmd_list[i]; in megasas_track_scsiio()
4421 struct fusion_context *fusion = NULL; in megasas_issue_tm() local
4427 fusion = instance->ctrl_context; in megasas_issue_tm()
4503 scsi_lookup = fusion->cmd_list[smid_task - 1]; in megasas_issue_tm()
4551 struct fusion_context *fusion; in megasas_fusion_smid_lookup() local
4555 fusion = instance->ctrl_context; in megasas_fusion_smid_lookup()
4558 cmd_fusion = fusion->cmd_list[i]; in megasas_fusion_smid_lookup()
4581 struct fusion_context *fusion; in megasas_get_tm_devhandle() local
4586 fusion = instance->ctrl_context; in megasas_get_tm_devhandle()
4592 pd_sync = (void *)fusion->pd_seq_sync in megasas_get_tm_devhandle()
4794 struct fusion_context *fusion; in megasas_reset_fusion() local
4805 fusion = instance->ctrl_context; in megasas_reset_fusion()
4875 cmd_fusion = fusion->cmd_list[i]; in megasas_reset_fusion()
4878 r1_cmd = fusion->cmd_list[i + instance->max_fw_cmds]; in megasas_reset_fusion()
4966 if (fusion->load_balance_info) in megasas_reset_fusion()
4967 memset(fusion->load_balance_info, 0, in megasas_reset_fusion()
4987 memset(fusion->stream_detect_by_ld[j], in megasas_reset_fusion()
4989 fusion->stream_detect_by_ld[j]->mru_bit_map in megasas_reset_fusion()
5177 struct fusion_context *fusion; in megasas_alloc_fusion_context() local
5187 fusion = instance->ctrl_context; in megasas_alloc_fusion_context()
5189 fusion->log_to_span_pages = get_order(MAX_LOGICAL_DRIVES_EXT * in megasas_alloc_fusion_context()
5191 fusion->log_to_span = in megasas_alloc_fusion_context()
5193 fusion->log_to_span_pages); in megasas_alloc_fusion_context()
5194 if (!fusion->log_to_span) { in megasas_alloc_fusion_context()
5195 fusion->log_to_span = in megasas_alloc_fusion_context()
5198 if (!fusion->log_to_span) { in megasas_alloc_fusion_context()
5205 fusion->load_balance_info_pages = get_order(MAX_LOGICAL_DRIVES_EXT * in megasas_alloc_fusion_context()
5207 fusion->load_balance_info = in megasas_alloc_fusion_context()
5209 fusion->load_balance_info_pages); in megasas_alloc_fusion_context()
5210 if (!fusion->load_balance_info) { in megasas_alloc_fusion_context()
5211 fusion->load_balance_info = in megasas_alloc_fusion_context()
5214 if (!fusion->load_balance_info) in megasas_alloc_fusion_context()
5225 struct fusion_context *fusion = instance->ctrl_context; in megasas_free_fusion_context() local
5227 if (fusion) { in megasas_free_fusion_context()
5228 if (fusion->load_balance_info) { in megasas_free_fusion_context()
5229 if (is_vmalloc_addr(fusion->load_balance_info)) in megasas_free_fusion_context()
5230 vfree(fusion->load_balance_info); in megasas_free_fusion_context()
5232 free_pages((ulong)fusion->load_balance_info, in megasas_free_fusion_context()
5233 fusion->load_balance_info_pages); in megasas_free_fusion_context()
5236 if (fusion->log_to_span) { in megasas_free_fusion_context()
5237 if (is_vmalloc_addr(fusion->log_to_span)) in megasas_free_fusion_context()
5238 vfree(fusion->log_to_span); in megasas_free_fusion_context()
5240 free_pages((ulong)fusion->log_to_span, in megasas_free_fusion_context()
5241 fusion->log_to_span_pages); in megasas_free_fusion_context()
5244 kfree(fusion); in megasas_free_fusion_context()