Lines Matching refs:instance
62 extern void megasas_free_cmds(struct megasas_instance *instance);
64 *instance);
66 megasas_complete_cmd(struct megasas_instance *instance,
69 wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd,
73 megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd);
74 int megasas_alloc_cmds(struct megasas_instance *instance);
78 megasas_issue_polled(struct megasas_instance *instance,
81 megasas_check_and_restore_queue_depth(struct megasas_instance *instance);
83 int megasas_transition_to_ready(struct megasas_instance *instance, int ocr);
84 void megaraid_sas_kill_hba(struct megasas_instance *instance);
88 int megasas_sriov_start_heartbeat(struct megasas_instance *instance,
90 void megasas_start_timer(struct megasas_instance *instance,
103 megasas_enable_intr_fusion(struct megasas_instance *instance) in megasas_enable_intr_fusion() argument
106 regs = instance->reg_set; in megasas_enable_intr_fusion()
108 instance->mask_interrupts = 0; in megasas_enable_intr_fusion()
124 megasas_disable_intr_fusion(struct megasas_instance *instance) in megasas_disable_intr_fusion() argument
129 regs = instance->reg_set; in megasas_disable_intr_fusion()
130 instance->mask_interrupts = 1; in megasas_disable_intr_fusion()
164 *instance, u32 blk_tag) in megasas_get_cmd_fusion()
168 fusion = instance->ctrl_context; in megasas_get_cmd_fusion()
177 inline void megasas_return_cmd_fusion(struct megasas_instance *instance, in megasas_return_cmd_fusion() argument
188 megasas_fire_cmd_fusion(struct megasas_instance *instance, in megasas_fire_cmd_fusion() argument
195 writeq(req_data, &instance->reg_set->inbound_low_queue_port); in megasas_fire_cmd_fusion()
199 spin_lock_irqsave(&instance->hba_lock, flags); in megasas_fire_cmd_fusion()
201 &instance->reg_set->inbound_low_queue_port); in megasas_fire_cmd_fusion()
203 &instance->reg_set->inbound_high_queue_port); in megasas_fire_cmd_fusion()
204 spin_unlock_irqrestore(&instance->hba_lock, flags); in megasas_fire_cmd_fusion()
214 struct megasas_instance *instance) in megasas_teardown_frame_pool_fusion() argument
217 struct fusion_context *fusion = instance->ctrl_context; in megasas_teardown_frame_pool_fusion()
219 u16 max_cmd = instance->max_fw_cmds; in megasas_teardown_frame_pool_fusion()
224 dev_err(&instance->pdev->dev, "dma pool is null. SG Pool %p, " in megasas_teardown_frame_pool_fusion()
261 megasas_free_cmds_fusion(struct megasas_instance *instance) in megasas_free_cmds_fusion() argument
264 struct fusion_context *fusion = instance->ctrl_context; in megasas_free_cmds_fusion()
273 max_cmds = instance->max_fw_cmds; in megasas_free_cmds_fusion()
277 dma_free_coherent(&instance->pdev->dev, req_sz, in megasas_free_cmds_fusion()
296 megasas_teardown_frame_pool_fusion(instance); in megasas_free_cmds_fusion()
313 static int megasas_create_frame_pool_fusion(struct megasas_instance *instance) in megasas_create_frame_pool_fusion() argument
320 fusion = instance->ctrl_context; in megasas_create_frame_pool_fusion()
321 max_cmd = instance->max_fw_cmds; 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()
329 instance->max_chain_frame_sz, in megasas_create_frame_pool_fusion()
332 dev_printk(KERN_DEBUG, &instance->pdev->dev, "failed to setup request pool fusion\n"); in megasas_create_frame_pool_fusion()
336 instance->pdev, in megasas_create_frame_pool_fusion()
340 dev_printk(KERN_DEBUG, &instance->pdev->dev, "failed to setup sense pool fusion\n"); in megasas_create_frame_pool_fusion()
364 dev_printk(KERN_DEBUG, &instance->pdev->dev, "pci_pool_alloc failed\n"); in megasas_create_frame_pool_fusion()
365 megasas_teardown_frame_pool_fusion(instance); in megasas_create_frame_pool_fusion()
389 megasas_alloc_cmds_fusion(struct megasas_instance *instance) in megasas_alloc_cmds_fusion() argument
400 fusion = instance->ctrl_context; in megasas_alloc_cmds_fusion()
402 max_cmd = instance->max_fw_cmds; in megasas_alloc_cmds_fusion()
405 dma_alloc_coherent(&instance->pdev->dev, in megasas_alloc_cmds_fusion()
410 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_alloc_cmds_fusion()
415 count = instance->msix_vectors > 0 ? instance->msix_vectors : 1; in megasas_alloc_cmds_fusion()
417 pci_pool_create("reply_frames pool", instance->pdev, in megasas_alloc_cmds_fusion()
421 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_alloc_cmds_fusion()
430 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_alloc_cmds_fusion()
443 pci_pool_create("io_request_frames pool", instance->pdev, in megasas_alloc_cmds_fusion()
447 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_alloc_cmds_fusion()
456 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_alloc_cmds_fusion()
471 dev_printk(KERN_DEBUG, &instance->pdev->dev, "out of memory. Could not alloc " in megasas_alloc_cmds_fusion()
476 max_cmd = instance->max_fw_cmds; in megasas_alloc_cmds_fusion()
481 dev_err(&instance->pdev->dev, "Could not alloc cmd list fusion\n"); in megasas_alloc_cmds_fusion()
509 cmd->sync_cmd_idx = (i >= instance->max_scsi_cmds) ? in megasas_alloc_cmds_fusion()
510 (i - instance->max_scsi_cmds) : in megasas_alloc_cmds_fusion()
512 cmd->instance = instance; in megasas_alloc_cmds_fusion()
524 if (megasas_create_frame_pool_fusion(instance)) { in megasas_alloc_cmds_fusion()
525 dev_printk(KERN_DEBUG, &instance->pdev->dev, "Error creating frame DMA pool\n"); in megasas_alloc_cmds_fusion()
526 megasas_free_cmds_fusion(instance); in megasas_alloc_cmds_fusion()
537 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
546 dma_free_coherent(&instance->pdev->dev, fusion->request_alloc_sz, in megasas_alloc_cmds_fusion()
561 wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd, in wait_and_poll() argument
570 fusion = instance->ctrl_context; in wait_and_poll()
593 megasas_ioc_init_fusion(struct megasas_instance *instance) in megasas_ioc_init_fusion() argument
607 fusion = instance->ctrl_context; in megasas_ioc_init_fusion()
609 cmd = megasas_get_cmd(instance); in megasas_ioc_init_fusion()
612 dev_err(&instance->pdev->dev, "Could not allocate cmd for INIT Frame\n"); in megasas_ioc_init_fusion()
618 dma_alloc_coherent(&instance->pdev->dev, in megasas_ioc_init_fusion()
623 dev_err(&instance->pdev->dev, "Could not allocate memory for " in megasas_ioc_init_fusion()
640 IOCInitMessage->HostMSIxVectors = instance->msix_vectors; in megasas_ioc_init_fusion()
665 if (instance->max_chain_frame_sz > MEGASAS_CHAIN_FRAME_SZ_MIN) in megasas_ioc_init_fusion()
672 if (instance->system_info_buf && sys_info) { in megasas_ioc_init_fusion()
673 memcpy(instance->system_info_buf->systemId, sys_info, in megasas_ioc_init_fusion()
675 instance->system_info_buf->systemIdLength = in megasas_ioc_init_fusion()
677 init_frame->system_info_lo = instance->system_info_h; in megasas_ioc_init_fusion()
696 instance->instancet->disable_intr(instance); in megasas_ioc_init_fusion()
699 if (readl(&instance->reg_set->doorbell) & 1) in megasas_ioc_init_fusion()
705 megasas_fire_cmd_fusion(instance, &req_desc); in megasas_ioc_init_fusion()
707 wait_and_poll(instance, cmd, MFI_POLL_TIMEOUT_SECS); in megasas_ioc_init_fusion()
714 dev_err(&instance->pdev->dev, "Init cmd success\n"); in megasas_ioc_init_fusion()
719 megasas_return_cmd(instance, cmd); in megasas_ioc_init_fusion()
721 dma_free_coherent(&instance->pdev->dev, in megasas_ioc_init_fusion()
738 megasas_sync_pd_seq_num(struct megasas_instance *instance, bool pend) { in megasas_sync_pd_seq_num() argument
743 struct fusion_context *fusion = instance->ctrl_context; in megasas_sync_pd_seq_num()
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()
753 cmd = megasas_get_cmd(instance); in megasas_sync_pd_seq_num()
755 dev_err(&instance->pdev->dev, in megasas_sync_pd_seq_num()
778 instance->jbod_seq_cmd = cmd; in megasas_sync_pd_seq_num()
779 instance->instancet->issue_dcmd(instance, cmd); in megasas_sync_pd_seq_num()
786 if (instance->ctrl_context && !instance->mask_interrupts) in megasas_sync_pd_seq_num()
787 ret = megasas_issue_blocked_cmd(instance, cmd, 60); in megasas_sync_pd_seq_num()
789 ret = megasas_issue_polled(instance, cmd); in megasas_sync_pd_seq_num()
792 dev_warn(&instance->pdev->dev, in megasas_sync_pd_seq_num()
799 instance->pd_seq_map_id++; in megasas_sync_pd_seq_num()
801 megasas_return_cmd(instance, cmd); in megasas_sync_pd_seq_num()
821 megasas_get_ld_map_info(struct megasas_instance *instance) in megasas_get_ld_map_info() argument
831 cmd = megasas_get_cmd(instance); in megasas_get_ld_map_info()
834 dev_printk(KERN_DEBUG, &instance->pdev->dev, "Failed to get cmd for map info\n"); in megasas_get_ld_map_info()
838 fusion = instance->ctrl_context; in megasas_get_ld_map_info()
841 megasas_return_cmd(instance, cmd); 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()
853 dev_printk(KERN_DEBUG, &instance->pdev->dev, "Failed to alloc mem for ld_map_info\n"); in megasas_get_ld_map_info()
854 megasas_return_cmd(instance, cmd); in megasas_get_ld_map_info()
861 dev_dbg(&instance->pdev->dev, in megasas_get_ld_map_info()
876 if (instance->ctrl_context && !instance->mask_interrupts) in megasas_get_ld_map_info()
877 ret = megasas_issue_blocked_cmd(instance, cmd, in megasas_get_ld_map_info()
880 ret = megasas_issue_polled(instance, cmd); in megasas_get_ld_map_info()
882 megasas_return_cmd(instance, cmd); in megasas_get_ld_map_info()
888 megasas_get_map_info(struct megasas_instance *instance) in megasas_get_map_info() argument
890 struct fusion_context *fusion = instance->ctrl_context; in megasas_get_map_info()
893 if (!megasas_get_ld_map_info(instance)) { in megasas_get_map_info()
894 if (MR_ValidateMapInfo(instance)) { in megasas_get_map_info()
911 megasas_sync_map_info(struct megasas_instance *instance) in megasas_sync_map_info() argument
925 cmd = megasas_get_cmd(instance); in megasas_sync_map_info()
928 dev_printk(KERN_DEBUG, &instance->pdev->dev, "Failed to get cmd for sync info\n"); in megasas_sync_map_info()
932 fusion = instance->ctrl_context; in megasas_sync_map_info()
935 megasas_return_cmd(instance, cmd); 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()
953 ci_h = fusion->ld_map_phys[(instance->map_id - 1) & 1]; in megasas_sync_map_info()
978 instance->map_update_cmd = cmd; in megasas_sync_map_info()
980 instance->instancet->issue_dcmd(instance, cmd); in megasas_sync_map_info()
992 megasas_display_intel_branding(struct megasas_instance *instance) in megasas_display_intel_branding() argument
994 if (instance->pdev->subsystem_vendor != PCI_VENDOR_ID_INTEL) in megasas_display_intel_branding()
997 switch (instance->pdev->device) { in megasas_display_intel_branding()
999 switch (instance->pdev->subsystem_device) { in megasas_display_intel_branding()
1001 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1002 instance->host->host_no, in megasas_display_intel_branding()
1006 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1007 instance->host->host_no, in megasas_display_intel_branding()
1011 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1012 instance->host->host_no, in megasas_display_intel_branding()
1016 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1017 instance->host->host_no, in megasas_display_intel_branding()
1025 switch (instance->pdev->subsystem_device) { in megasas_display_intel_branding()
1027 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1028 instance->host->host_no, in megasas_display_intel_branding()
1032 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1033 instance->host->host_no, in megasas_display_intel_branding()
1042 switch (instance->pdev->subsystem_device) { in megasas_display_intel_branding()
1044 dev_info(&instance->pdev->dev, "scsi host %d: %s\n", in megasas_display_intel_branding()
1045 instance->host->host_no, in megasas_display_intel_branding()
1064 megasas_init_adapter_fusion(struct megasas_instance *instance) in megasas_init_adapter_fusion() argument
1071 fusion = instance->ctrl_context; in megasas_init_adapter_fusion()
1073 reg_set = instance->reg_set; in megasas_init_adapter_fusion()
1078 instance->max_fw_cmds = in megasas_init_adapter_fusion()
1079 instance->instancet->read_fw_status_reg(reg_set) & 0x00FFFF; in megasas_init_adapter_fusion()
1080 instance->max_fw_cmds = min(instance->max_fw_cmds, (u16)1008); in megasas_init_adapter_fusion()
1087 instance->max_fw_cmds = instance->max_fw_cmds-1; in megasas_init_adapter_fusion()
1092 instance->max_mfi_cmds = in megasas_init_adapter_fusion()
1095 max_cmd = instance->max_fw_cmds; in megasas_init_adapter_fusion()
1107 scratch_pad_2 = readl(&instance->reg_set->outbound_scratch_pad_2); in megasas_init_adapter_fusion()
1115 instance->max_chain_frame_sz = in megasas_init_adapter_fusion()
1119 instance->max_chain_frame_sz = in megasas_init_adapter_fusion()
1123 if (instance->max_chain_frame_sz < MEGASAS_CHAIN_FRAME_SZ_MIN) { in megasas_init_adapter_fusion()
1124 dev_warn(&instance->pdev->dev, "frame size %d invalid, fall back to legacy max frame size %d\n", in megasas_init_adapter_fusion()
1125 instance->max_chain_frame_sz, in megasas_init_adapter_fusion()
1127 instance->max_chain_frame_sz = MEGASAS_CHAIN_FRAME_SZ_MIN; in megasas_init_adapter_fusion()
1135 instance->max_chain_frame_sz in megasas_init_adapter_fusion()
1138 instance->max_num_sge = in megasas_init_adapter_fusion()
1150 count = instance->msix_vectors > 0 ? instance->msix_vectors : 1; in megasas_init_adapter_fusion()
1158 instance->max_scsi_cmds = instance->max_fw_cmds - in megasas_init_adapter_fusion()
1161 sema_init(&instance->ioctl_sem, MEGASAS_FUSION_IOCTL_CMDS); in megasas_init_adapter_fusion()
1167 if (megasas_alloc_cmds(instance)) in megasas_init_adapter_fusion()
1169 if (megasas_alloc_cmds_fusion(instance)) in megasas_init_adapter_fusion()
1172 if (megasas_ioc_init_fusion(instance)) in megasas_init_adapter_fusion()
1175 megasas_display_intel_branding(instance); in megasas_init_adapter_fusion()
1176 if (megasas_get_ctrl_info(instance)) { in megasas_init_adapter_fusion()
1177 dev_err(&instance->pdev->dev, in megasas_init_adapter_fusion()
1183 instance->flag_ieee = 1; in megasas_init_adapter_fusion()
1192 dev_err(&instance->pdev->dev, "Could not allocate " in megasas_init_adapter_fusion()
1205 fusion->ld_map[i] = dma_alloc_coherent(&instance->pdev->dev, in megasas_init_adapter_fusion()
1210 dev_err(&instance->pdev->dev, "Could not allocate memory " in megasas_init_adapter_fusion()
1216 if (!megasas_get_map_info(instance)) in megasas_init_adapter_fusion()
1217 megasas_sync_map_info(instance); in megasas_init_adapter_fusion()
1223 dma_free_coherent(&instance->pdev->dev, fusion->max_map_sz, in megasas_init_adapter_fusion()
1226 megasas_free_cmds_fusion(instance); in megasas_init_adapter_fusion()
1228 megasas_free_cmds(instance); in megasas_init_adapter_fusion()
1275 dev_printk(KERN_DEBUG, &cmd->instance->pdev->dev, "FW status %#x\n", status); in map_cmd_status()
1291 megasas_make_sgl_fusion(struct megasas_instance *instance, in megasas_make_sgl_fusion() argument
1300 fusion = instance->ctrl_context; in megasas_make_sgl_fusion()
1312 if (sge_count > instance->max_num_sge || !sge_count) in megasas_make_sgl_fusion()
1357 memset(sgl_ptr, 0, instance->max_chain_frame_sz); in megasas_make_sgl_fusion()
1550 megasas_build_ldio_fusion(struct megasas_instance *instance, in megasas_build_ldio_fusion() argument
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()
1644 if (MR_BuildRaidContext(instance, &io_info, in megasas_build_ldio_fusion()
1653 cmd->request_desc->SCSIIO.MSIxIndex = instance->msix_vectors ? in megasas_build_ldio_fusion()
1654 raw_smp_processor_id() % instance->msix_vectors : 0; in megasas_build_ldio_fusion()
1679 get_updated_dev_handle(instance, in megasas_build_ldio_fusion()
1689 instance->dev_handle = !(instance->dev_handle); in megasas_build_ldio_fusion()
1691 local_map_ptr->raidMap.devHndlInfo[io_info.pd_after_lb].devHandle[instance->dev_handle]; in megasas_build_ldio_fusion()
1729 static void megasas_build_ld_nonrw_fusion(struct megasas_instance *instance, in megasas_build_ld_nonrw_fusion() argument
1736 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_ld_nonrw_fusion()
1747 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_ld_nonrw_fusion()
1757 device_id < instance->fw_supported_vd_count)) { in megasas_build_ld_nonrw_fusion()
1760 if (ld >= instance->fw_supported_vd_count) in megasas_build_ld_nonrw_fusion()
1817 megasas_build_syspd_fusion(struct megasas_instance *instance, in megasas_build_syspd_fusion() argument
1828 struct fusion_context *fusion = instance->ctrl_context; in megasas_build_syspd_fusion()
1829 pd_sync = (void *)fusion->pd_seq_sync[(instance->pd_seq_map_id - 1) & 1]; in megasas_build_syspd_fusion()
1847 if (instance->use_seqnum_jbod_fp && in megasas_build_syspd_fusion()
1848 instance->pd_list[pd_index].driveType == TYPE_DISK) { in megasas_build_syspd_fusion()
1861 local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)]; in megasas_build_syspd_fusion()
1873 instance->msix_vectors ? in megasas_build_syspd_fusion()
1874 (raw_smp_processor_id() % instance->msix_vectors) : 0; in megasas_build_syspd_fusion()
1915 megasas_build_io_fusion(struct megasas_instance *instance, in megasas_build_io_fusion() argument
1944 megasas_build_ldio_fusion(instance, scp, cmd); in megasas_build_io_fusion()
1947 megasas_build_ld_nonrw_fusion(instance, scp, cmd); in megasas_build_io_fusion()
1951 if (instance->secure_jbod_support && in megasas_build_io_fusion()
1953 megasas_build_syspd_fusion(instance, scp, cmd, 0); in megasas_build_io_fusion()
1955 megasas_build_syspd_fusion(instance, scp, cmd, 1); in megasas_build_io_fusion()
1966 megasas_make_sgl_fusion(instance, scp, in megasas_build_io_fusion()
1970 if (sge_count > instance->max_num_sge) { in megasas_build_io_fusion()
1971 dev_err(&instance->pdev->dev, "Error. sge_count (0x%x) exceeds " in megasas_build_io_fusion()
1973 instance->max_num_sge); in megasas_build_io_fusion()
2003 megasas_get_request_descriptor(struct megasas_instance *instance, u16 index) in megasas_get_request_descriptor() argument
2008 if (index >= instance->max_fw_cmds) { in megasas_get_request_descriptor()
2009 dev_err(&instance->pdev->dev, "Invalid SMID (0x%x)request for " in megasas_get_request_descriptor()
2011 instance->host->host_no); in megasas_get_request_descriptor()
2014 fusion = instance->ctrl_context; in megasas_get_request_descriptor()
2028 megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance, in megasas_build_and_issue_cmd_fusion() argument
2036 fusion = instance->ctrl_context; in megasas_build_and_issue_cmd_fusion()
2038 cmd = megasas_get_cmd_fusion(instance, scmd->request->tag); in megasas_build_and_issue_cmd_fusion()
2042 req_desc = megasas_get_request_descriptor(instance, index-1); in megasas_build_and_issue_cmd_fusion()
2049 if (megasas_build_io_fusion(instance, scmd, cmd)) { in megasas_build_and_issue_cmd_fusion()
2050 megasas_return_cmd_fusion(instance, cmd); in megasas_build_and_issue_cmd_fusion()
2051 dev_err(&instance->pdev->dev, "Error building command\n"); in megasas_build_and_issue_cmd_fusion()
2061 dev_err(&instance->pdev->dev, "The chain offset value is not " in megasas_build_and_issue_cmd_fusion()
2067 atomic_inc(&instance->fw_outstanding); in megasas_build_and_issue_cmd_fusion()
2069 megasas_fire_cmd_fusion(instance, req_desc); in megasas_build_and_issue_cmd_fusion()
2080 complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex) in complete_cmd_fusion() argument
2096 fusion = instance->ctrl_context; in complete_cmd_fusion()
2098 if (instance->adprecovery == MEGASAS_HW_CRITICAL_ERROR) in complete_cmd_fusion()
2149 dev_err(&instance->pdev->dev, "\nFAST Path " in complete_cmd_fusion()
2158 megasas_return_cmd_fusion(instance, cmd_fusion); in complete_cmd_fusion()
2161 atomic_dec(&instance->fw_outstanding); in complete_cmd_fusion()
2165 cmd_mfi = instance->cmd_list[cmd_fusion->sync_cmd_idx]; in complete_cmd_fusion()
2172 megasas_return_cmd(instance, cmd_mfi); in complete_cmd_fusion()
2174 megasas_complete_cmd(instance, cmd_mfi, DID_OK); in complete_cmd_fusion()
2214 instance->reply_post_host_index_addr[MSIxIndex/8]); in complete_cmd_fusion()
2218 instance->reply_post_host_index_addr[0]); in complete_cmd_fusion()
2230 instance->reply_post_host_index_addr[MSIxIndex/8]); in complete_cmd_fusion()
2234 instance->reply_post_host_index_addr[0]); in complete_cmd_fusion()
2235 megasas_check_and_restore_queue_depth(instance); in complete_cmd_fusion()
2248 struct megasas_instance *instance = in megasas_complete_cmd_dpc_fusion() local
2253 count = instance->msix_vectors > 0 ? instance->msix_vectors : 1; in megasas_complete_cmd_dpc_fusion()
2256 spin_lock_irqsave(&instance->hba_lock, flags); in megasas_complete_cmd_dpc_fusion()
2257 if (instance->adprecovery == MEGASAS_HW_CRITICAL_ERROR) { in megasas_complete_cmd_dpc_fusion()
2258 spin_unlock_irqrestore(&instance->hba_lock, flags); in megasas_complete_cmd_dpc_fusion()
2261 spin_unlock_irqrestore(&instance->hba_lock, flags); in megasas_complete_cmd_dpc_fusion()
2264 complete_cmd_fusion(instance, MSIxIndex); in megasas_complete_cmd_dpc_fusion()
2273 struct megasas_instance *instance = irq_context->instance; in megasas_isr_fusion() local
2276 if (instance->mask_interrupts) in megasas_isr_fusion()
2279 if (!instance->msix_vectors) { in megasas_isr_fusion()
2280 mfiStatus = instance->instancet->clear_intr(instance->reg_set); in megasas_isr_fusion()
2286 if (test_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags)) { in megasas_isr_fusion()
2287 instance->instancet->clear_intr(instance->reg_set); in megasas_isr_fusion()
2291 if (!complete_cmd_fusion(instance, irq_context->MSIxIndex)) { in megasas_isr_fusion()
2292 instance->instancet->clear_intr(instance->reg_set); in megasas_isr_fusion()
2294 fw_state = instance->instancet->read_fw_status_reg( in megasas_isr_fusion()
2295 instance->reg_set) & MFI_STATE_MASK; in megasas_isr_fusion()
2296 dma_state = instance->instancet->read_fw_status_reg in megasas_isr_fusion()
2297 (instance->reg_set) & MFI_STATE_DMADONE; in megasas_isr_fusion()
2298 if (instance->crash_dump_drv_support && in megasas_isr_fusion()
2299 instance->crash_dump_app_support) { in megasas_isr_fusion()
2302 schedule_work(&instance->crash_init); in megasas_isr_fusion()
2304 schedule_work(&instance->work_init); in megasas_isr_fusion()
2306 dev_warn(&instance->pdev->dev, "Iop2SysDoorbellInt" in megasas_isr_fusion()
2307 "for scsi%d\n", instance->host->host_no); in megasas_isr_fusion()
2308 schedule_work(&instance->work_init); in megasas_isr_fusion()
2322 build_mpt_mfi_pass_thru(struct megasas_instance *instance, in build_mpt_mfi_pass_thru() argument
2331 fusion = instance->ctrl_context; in build_mpt_mfi_pass_thru()
2333 cmd = megasas_get_cmd_fusion(instance, in build_mpt_mfi_pass_thru()
2334 instance->max_scsi_cmds + mfi_cmd->index); in build_mpt_mfi_pass_thru()
2370 mpi25_ieee_chain->Length = cpu_to_le32(instance->max_chain_frame_sz); in build_mpt_mfi_pass_thru()
2382 build_mpt_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) in build_mpt_cmd() argument
2387 if (build_mpt_mfi_pass_thru(instance, cmd)) { in build_mpt_cmd()
2388 dev_err(&instance->pdev->dev, "Couldn't build MFI pass thru cmd\n"); in build_mpt_cmd()
2394 req_desc = megasas_get_request_descriptor(instance, index - 1); in build_mpt_cmd()
2415 megasas_issue_dcmd_fusion(struct megasas_instance *instance, in megasas_issue_dcmd_fusion() argument
2420 req_desc = build_mpt_cmd(instance, cmd); in megasas_issue_dcmd_fusion()
2422 dev_err(&instance->pdev->dev, "Couldn't issue MFI pass thru cmd\n"); in megasas_issue_dcmd_fusion()
2425 megasas_fire_cmd_fusion(instance, req_desc); in megasas_issue_dcmd_fusion()
2433 megasas_release_fusion(struct megasas_instance *instance) in megasas_release_fusion() argument
2435 megasas_free_cmds(instance); in megasas_release_fusion()
2436 megasas_free_cmds_fusion(instance); in megasas_release_fusion()
2438 iounmap(instance->reg_set); in megasas_release_fusion()
2440 pci_release_selected_regions(instance->pdev, instance->bar); in megasas_release_fusion()
2459 megasas_alloc_host_crash_buffer(struct megasas_instance *instance) in megasas_alloc_host_crash_buffer() argument
2463 instance->crash_buf_pages = get_order(CRASH_DMA_BUF_SIZE); in megasas_alloc_host_crash_buffer()
2465 instance->crash_buf[i] = (void *)__get_free_pages(GFP_KERNEL, in megasas_alloc_host_crash_buffer()
2466 instance->crash_buf_pages); in megasas_alloc_host_crash_buffer()
2467 if (!instance->crash_buf[i]) { in megasas_alloc_host_crash_buffer()
2468 dev_info(&instance->pdev->dev, "Firmware crash dump " in megasas_alloc_host_crash_buffer()
2472 memset(instance->crash_buf[i], 0, in megasas_alloc_host_crash_buffer()
2473 ((1 << PAGE_SHIFT) << instance->crash_buf_pages)); in megasas_alloc_host_crash_buffer()
2475 instance->drv_buf_alloc = i; in megasas_alloc_host_crash_buffer()
2483 megasas_free_host_crash_buffer(struct megasas_instance *instance) in megasas_free_host_crash_buffer() argument
2487 for (i = 0; i < instance->drv_buf_alloc; i++) { in megasas_free_host_crash_buffer()
2488 if (instance->crash_buf[i]) in megasas_free_host_crash_buffer()
2489 free_pages((ulong)instance->crash_buf[i], in megasas_free_host_crash_buffer()
2490 instance->crash_buf_pages); in megasas_free_host_crash_buffer()
2492 instance->drv_buf_index = 0; in megasas_free_host_crash_buffer()
2493 instance->drv_buf_alloc = 0; in megasas_free_host_crash_buffer()
2494 instance->fw_crash_state = UNAVAILABLE; in megasas_free_host_crash_buffer()
2495 instance->fw_crash_buffer_size = 0; in megasas_free_host_crash_buffer()
2503 megasas_adp_reset_fusion(struct megasas_instance *instance, in megasas_adp_reset_fusion() argument
2509 writel(MPI2_WRSEQ_FLUSH_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2510 writel(MPI2_WRSEQ_1ST_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2511 writel(MPI2_WRSEQ_2ND_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2512 writel(MPI2_WRSEQ_3RD_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2513 writel(MPI2_WRSEQ_4TH_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2514 writel(MPI2_WRSEQ_5TH_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2515 writel(MPI2_WRSEQ_6TH_KEY_VALUE, &instance->reg_set->fusion_seq_offset); in megasas_adp_reset_fusion()
2518 host_diag = readl(&instance->reg_set->fusion_host_diag); in megasas_adp_reset_fusion()
2522 host_diag = readl(&instance->reg_set->fusion_host_diag); in megasas_adp_reset_fusion()
2524 dev_warn(&instance->pdev->dev, in megasas_adp_reset_fusion()
2535 &instance->reg_set->fusion_host_diag); in megasas_adp_reset_fusion()
2539 host_diag = readl(&instance->reg_set->fusion_host_diag); in megasas_adp_reset_fusion()
2543 host_diag = readl(&instance->reg_set->fusion_host_diag); in megasas_adp_reset_fusion()
2545 dev_warn(&instance->pdev->dev, in megasas_adp_reset_fusion()
2554 abs_state = instance->instancet->read_fw_status_reg(instance->reg_set) in megasas_adp_reset_fusion()
2560 abs_state = instance->instancet-> in megasas_adp_reset_fusion()
2561 read_fw_status_reg(instance->reg_set) & MFI_STATE_MASK; in megasas_adp_reset_fusion()
2564 dev_warn(&instance->pdev->dev, in megasas_adp_reset_fusion()
2578 megasas_check_reset_fusion(struct megasas_instance *instance, in megasas_check_reset_fusion() argument
2585 int megasas_wait_for_outstanding_fusion(struct megasas_instance *instance, in megasas_wait_for_outstanding_fusion() argument
2593 fw_state = instance->instancet->read_fw_status_reg( in megasas_wait_for_outstanding_fusion()
2594 instance->reg_set) & MFI_STATE_MASK; in megasas_wait_for_outstanding_fusion()
2596 dev_warn(&instance->pdev->dev, "Found FW in FAULT state," in megasas_wait_for_outstanding_fusion()
2598 instance->host->host_no); in megasas_wait_for_outstanding_fusion()
2603 if (instance->requestorId && !iotimeout) { in megasas_wait_for_outstanding_fusion()
2609 if (instance->requestorId && iotimeout) { in megasas_wait_for_outstanding_fusion()
2610 if (instance->hb_host_mem->HB.fwCounter != in megasas_wait_for_outstanding_fusion()
2611 instance->hb_host_mem->HB.driverCounter) { in megasas_wait_for_outstanding_fusion()
2612 instance->hb_host_mem->HB.driverCounter = in megasas_wait_for_outstanding_fusion()
2613 instance->hb_host_mem->HB.fwCounter; in megasas_wait_for_outstanding_fusion()
2619 dev_warn(&instance->pdev->dev, "SR-IOV:" in megasas_wait_for_outstanding_fusion()
2624 instance->host->host_no); in megasas_wait_for_outstanding_fusion()
2632 outstanding = atomic_read(&instance->fw_outstanding); in megasas_wait_for_outstanding_fusion()
2637 dev_notice(&instance->pdev->dev, "[%2d]waiting for %d " in megasas_wait_for_outstanding_fusion()
2639 outstanding, instance->host->host_no); in megasas_wait_for_outstanding_fusion()
2641 (unsigned long)instance); in megasas_wait_for_outstanding_fusion()
2646 if (atomic_read(&instance->fw_outstanding)) { in megasas_wait_for_outstanding_fusion()
2647 dev_err(&instance->pdev->dev, "pending commands remain after waiting, " in megasas_wait_for_outstanding_fusion()
2649 instance->host->host_no); in megasas_wait_for_outstanding_fusion()
2656 void megasas_reset_reply_desc(struct megasas_instance *instance) in megasas_reset_reply_desc() argument
2662 fusion = instance->ctrl_context; in megasas_reset_reply_desc()
2663 count = instance->msix_vectors > 0 ? instance->msix_vectors : 1; in megasas_reset_reply_desc()
2675 void megasas_refire_mgmt_cmd(struct megasas_instance *instance) in megasas_refire_mgmt_cmd() argument
2684 fusion = instance->ctrl_context; in megasas_refire_mgmt_cmd()
2689 for (j = instance->max_scsi_cmds ; j < instance->max_fw_cmds; j++) { in megasas_refire_mgmt_cmd()
2691 cmd_mfi = instance->cmd_list[cmd_fusion->sync_cmd_idx]; in megasas_refire_mgmt_cmd()
2697 (instance, smid - 1); in megasas_refire_mgmt_cmd()
2702 megasas_fire_cmd_fusion(instance, req_desc); in megasas_refire_mgmt_cmd()
2704 megasas_return_cmd(instance, cmd_mfi); in megasas_refire_mgmt_cmd()
2709 int megasas_check_mpio_paths(struct megasas_instance *instance, in megasas_check_mpio_paths() argument
2714 if (instance->mpio && instance->requestorId) { in megasas_check_mpio_paths()
2717 if (megasas_mgmt_info.instance[i] && in megasas_check_mpio_paths()
2718 (megasas_mgmt_info.instance[i] != instance) && in megasas_check_mpio_paths()
2719 megasas_mgmt_info.instance[i]->mpio && in megasas_check_mpio_paths()
2720 megasas_mgmt_info.instance[i]->requestorId in megasas_check_mpio_paths()
2722 (megasas_mgmt_info.instance[i]->ld_ids[j] in megasas_check_mpio_paths()
2736 struct megasas_instance *instance; in megasas_reset_fusion() local
2743 instance = (struct megasas_instance *)shost->hostdata; in megasas_reset_fusion()
2744 fusion = instance->ctrl_context; in megasas_reset_fusion()
2746 mutex_lock(&instance->reset_mutex); in megasas_reset_fusion()
2748 if (instance->adprecovery == MEGASAS_HW_CRITICAL_ERROR) { in megasas_reset_fusion()
2749 dev_warn(&instance->pdev->dev, "Hardware critical error, " in megasas_reset_fusion()
2751 instance->host->host_no); in megasas_reset_fusion()
2752 mutex_unlock(&instance->reset_mutex); in megasas_reset_fusion()
2755 status_reg = instance->instancet->read_fw_status_reg(instance->reg_set); in megasas_reset_fusion()
2759 if (abs_state != MFI_STATE_FAULT && instance->crash_dump_buf && in megasas_reset_fusion()
2760 instance->crash_dump_app_support && iotimeout) { in megasas_reset_fusion()
2761 dev_info(&instance->pdev->dev, "IO timeout is detected, " in megasas_reset_fusion()
2763 instance->adprecovery = MEGASAS_ADPRESET_SM_INFAULT; in megasas_reset_fusion()
2764 status_reg = readl(&instance->reg_set->doorbell); in megasas_reset_fusion()
2766 &instance->reg_set->doorbell); in megasas_reset_fusion()
2767 readl(&instance->reg_set->doorbell); in megasas_reset_fusion()
2768 mutex_unlock(&instance->reset_mutex); in megasas_reset_fusion()
2772 dev_dbg(&instance->pdev->dev, "waiting for [%d] " in megasas_reset_fusion()
2775 } while ((instance->adprecovery != MEGASAS_HBA_OPERATIONAL) && in megasas_reset_fusion()
2778 if (instance->adprecovery == MEGASAS_HBA_OPERATIONAL) { in megasas_reset_fusion()
2779 dev_info(&instance->pdev->dev, "OCR done for IO " in megasas_reset_fusion()
2783 dev_info(&instance->pdev->dev, "Controller is not " in megasas_reset_fusion()
2792 if (instance->requestorId && !instance->skip_heartbeat_timer_del) in megasas_reset_fusion()
2793 del_timer_sync(&instance->sriov_heartbeat_timer); in megasas_reset_fusion()
2794 set_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags); in megasas_reset_fusion()
2795 instance->adprecovery = MEGASAS_ADPRESET_SM_POLLING; in megasas_reset_fusion()
2796 instance->instancet->disable_intr(instance); in megasas_reset_fusion()
2800 if (megasas_wait_for_outstanding_fusion(instance, iotimeout, in megasas_reset_fusion()
2802 instance->adprecovery = MEGASAS_ADPRESET_SM_INFAULT; in megasas_reset_fusion()
2803 dev_warn(&instance->pdev->dev, "resetting fusion " in megasas_reset_fusion()
2804 "adapter scsi%d.\n", instance->host->host_no); in megasas_reset_fusion()
2809 for (i = 0 ; i < instance->max_scsi_cmds; i++) { in megasas_reset_fusion()
2814 megasas_check_mpio_paths(instance, in megasas_reset_fusion()
2816 megasas_return_cmd_fusion(instance, cmd_fusion); in megasas_reset_fusion()
2819 atomic_dec(&instance->fw_outstanding); in megasas_reset_fusion()
2823 status_reg = instance->instancet->read_fw_status_reg( in megasas_reset_fusion()
2824 instance->reg_set); in megasas_reset_fusion()
2827 if (instance->disableOnlineCtrlReset || in megasas_reset_fusion()
2830 dev_warn(&instance->pdev->dev, "Reset not supported" in megasas_reset_fusion()
2832 instance->host->host_no); in megasas_reset_fusion()
2833 megaraid_sas_kill_hba(instance); in megasas_reset_fusion()
2834 instance->skip_heartbeat_timer_del = 1; in megasas_reset_fusion()
2840 if (instance->requestorId && !iotimeout) { in megasas_reset_fusion()
2844 (instance->hb_host_mem->HB.fwCounter != in megasas_reset_fusion()
2845 instance->hb_host_mem->HB.driverCounter)) { in megasas_reset_fusion()
2846 instance->hb_host_mem->HB.driverCounter = in megasas_reset_fusion()
2847 instance->hb_host_mem->HB.fwCounter; in megasas_reset_fusion()
2848 dev_warn(&instance->pdev->dev, "SR-IOV:" in megasas_reset_fusion()
2851 instance->host->host_no); in megasas_reset_fusion()
2858 instance->instancet-> in megasas_reset_fusion()
2860 instance->reg_set); in megasas_reset_fusion()
2864 dev_warn(&instance->pdev->dev, in megasas_reset_fusion()
2868 instance->host->host_no); in megasas_reset_fusion()
2874 dev_warn(&instance->pdev->dev, "SR-IOV: " in megasas_reset_fusion()
2879 instance->host->host_no, in megasas_reset_fusion()
2881 megaraid_sas_kill_hba(instance); in megasas_reset_fusion()
2882 instance->skip_heartbeat_timer_del = 1; in megasas_reset_fusion()
2883 instance->adprecovery = in megasas_reset_fusion()
2894 if (instance->instancet->adp_reset in megasas_reset_fusion()
2895 (instance, instance->reg_set)) in megasas_reset_fusion()
2899 if (megasas_transition_to_ready(instance, 1)) { in megasas_reset_fusion()
2900 dev_warn(&instance->pdev->dev, "Failed to " in megasas_reset_fusion()
2903 instance->host->host_no); in megasas_reset_fusion()
2907 megasas_reset_reply_desc(instance); in megasas_reset_fusion()
2908 if (megasas_ioc_init_fusion(instance)) { in megasas_reset_fusion()
2909 dev_warn(&instance->pdev->dev, in megasas_reset_fusion()
2912 instance->host->host_no); in megasas_reset_fusion()
2916 megasas_refire_mgmt_cmd(instance); in megasas_reset_fusion()
2918 if (megasas_get_ctrl_info(instance)) { in megasas_reset_fusion()
2919 dev_info(&instance->pdev->dev, in megasas_reset_fusion()
2922 megaraid_sas_kill_hba(instance); in megasas_reset_fusion()
2930 if (!megasas_get_map_info(instance)) in megasas_reset_fusion()
2931 megasas_sync_map_info(instance); in megasas_reset_fusion()
2933 megasas_setup_jbod_map(instance); in megasas_reset_fusion()
2936 &instance->reset_flags); in megasas_reset_fusion()
2937 instance->instancet->enable_intr(instance); in megasas_reset_fusion()
2938 instance->adprecovery = MEGASAS_HBA_OPERATIONAL; in megasas_reset_fusion()
2941 if (instance->requestorId) { in megasas_reset_fusion()
2942 if (!megasas_sriov_start_heartbeat(instance, 0)) in megasas_reset_fusion()
2943 megasas_start_timer(instance, in megasas_reset_fusion()
2944 &instance->sriov_heartbeat_timer, in megasas_reset_fusion()
2948 instance->skip_heartbeat_timer_del = 1; in megasas_reset_fusion()
2952 dev_warn(&instance->pdev->dev, "Reset " in megasas_reset_fusion()
2954 instance->host->host_no); in megasas_reset_fusion()
2956 if (instance->crash_dump_drv_support && in megasas_reset_fusion()
2957 instance->crash_dump_app_support) in megasas_reset_fusion()
2958 megasas_set_crash_dump_params(instance, in megasas_reset_fusion()
2961 megasas_set_crash_dump_params(instance, in megasas_reset_fusion()
2968 dev_warn(&instance->pdev->dev, "Reset failed, killing " in megasas_reset_fusion()
2969 "adapter scsi%d.\n", instance->host->host_no); in megasas_reset_fusion()
2970 megaraid_sas_kill_hba(instance); in megasas_reset_fusion()
2971 instance->skip_heartbeat_timer_del = 1; in megasas_reset_fusion()
2975 if (instance->requestorId) { in megasas_reset_fusion()
2976 megasas_start_timer(instance, in megasas_reset_fusion()
2977 &instance->sriov_heartbeat_timer, in megasas_reset_fusion()
2981 clear_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags); in megasas_reset_fusion()
2982 instance->instancet->enable_intr(instance); in megasas_reset_fusion()
2983 instance->adprecovery = MEGASAS_HBA_OPERATIONAL; in megasas_reset_fusion()
2986 clear_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags); in megasas_reset_fusion()
2987 mutex_unlock(&instance->reset_mutex); in megasas_reset_fusion()
2994 struct megasas_instance *instance = in megasas_fusion_crash_dump_wq() local
3000 status_reg = instance->instancet->read_fw_status_reg(instance->reg_set); in megasas_fusion_crash_dump_wq()
3006 if (instance->drv_buf_index == 0) { in megasas_fusion_crash_dump_wq()
3010 if (instance->drv_buf_alloc) { in megasas_fusion_crash_dump_wq()
3011 dev_info(&instance->pdev->dev, "earlier crash dump is " in megasas_fusion_crash_dump_wq()
3016 &instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3017 readl(&instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3020 megasas_alloc_host_crash_buffer(instance); in megasas_fusion_crash_dump_wq()
3021 dev_info(&instance->pdev->dev, "Number of host crash buffers " in megasas_fusion_crash_dump_wq()
3022 "allocated: %d\n", instance->drv_buf_alloc); in megasas_fusion_crash_dump_wq()
3030 if (instance->drv_buf_index >= (instance->drv_buf_alloc)) { in megasas_fusion_crash_dump_wq()
3031 dev_info(&instance->pdev->dev, "Driver is done copying " in megasas_fusion_crash_dump_wq()
3032 "the buffer: %d\n", instance->drv_buf_alloc); in megasas_fusion_crash_dump_wq()
3036 memcpy(instance->crash_buf[instance->drv_buf_index], in megasas_fusion_crash_dump_wq()
3037 instance->crash_dump_buf, CRASH_DMA_BUF_SIZE); in megasas_fusion_crash_dump_wq()
3038 instance->drv_buf_index++; in megasas_fusion_crash_dump_wq()
3043 dev_info(&instance->pdev->dev, "Crash Dump is available,number " in megasas_fusion_crash_dump_wq()
3044 "of copied buffers: %d\n", instance->drv_buf_index); in megasas_fusion_crash_dump_wq()
3045 instance->fw_crash_buffer_size = instance->drv_buf_index; in megasas_fusion_crash_dump_wq()
3046 instance->fw_crash_state = AVAILABLE; in megasas_fusion_crash_dump_wq()
3047 instance->drv_buf_index = 0; in megasas_fusion_crash_dump_wq()
3048 writel(status_reg, &instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3049 readl(&instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3051 megasas_reset_fusion(instance->host, 0); in megasas_fusion_crash_dump_wq()
3053 writel(status_reg, &instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3054 readl(&instance->reg_set->outbound_scratch_pad); in megasas_fusion_crash_dump_wq()
3062 struct megasas_instance *instance = in megasas_fusion_ocr_wq() local
3065 megasas_reset_fusion(instance->host, 0); in megasas_fusion_ocr_wq()