Lines Matching refs:ioc

91 _ctl_sas_device_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)  in _ctl_sas_device_find_by_handle()  argument
96 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_sas_device_find_by_handle()
119 _ctl_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid, in _ctl_display_some_debug() argument
125 if (!(ioc->logging_level & MPT_DEBUG_IOCTL)) in _ctl_display_some_debug()
128 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_display_some_debug()
135 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
139 desc = ioc->tmp_string; in _ctl_display_some_debug()
156 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
161 desc = ioc->tmp_string; in _ctl_display_some_debug()
187 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
191 desc = ioc->tmp_string; in _ctl_display_some_debug()
215 ioc->name, calling_function_name, desc, smid); in _ctl_display_some_debug()
223 ioc->name, le16_to_cpu(mpi_reply->IOCStatus), in _ctl_display_some_debug()
234 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
235 sas_device = _ctl_sas_device_find_by_handle(ioc, in _ctl_display_some_debug()
239 ioc->name, (unsigned long long) in _ctl_display_some_debug()
243 ioc->name, (unsigned long long) in _ctl_display_some_debug()
246 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
250 "(0x%02x)\n", ioc->name, in _ctl_display_some_debug()
270 mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt3sas_ctl_done() argument
278 if (ioc->ctl_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_ctl_done()
280 if (ioc->ctl_cmds.smid != smid) in mpt3sas_ctl_done()
282 ioc->ctl_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_ctl_done()
283 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_ctl_done()
285 memcpy(ioc->ctl_cmds.reply, mpi_reply, mpi_reply->MsgLength*4); in mpt3sas_ctl_done()
286 ioc->ctl_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_ctl_done()
296 sense_data = mpt3sas_base_get_sense_buffer(ioc, in mpt3sas_ctl_done()
298 memcpy(ioc->ctl_cmds.sense, sense_data, sz); in mpt3sas_ctl_done()
302 _ctl_display_some_debug(ioc, smid, "ctl_done", mpi_reply); in mpt3sas_ctl_done()
303 ioc->ctl_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_ctl_done()
304 complete(&ioc->ctl_cmds.done); in mpt3sas_ctl_done()
319 _ctl_check_event_type(struct MPT3SAS_ADAPTER *ioc, u16 event) in _ctl_check_event_type() argument
324 if (event >= 128 || !event || !ioc->event_log) in _ctl_check_event_type()
331 return desired_event & ioc->event_type[i]; in _ctl_check_event_type()
342 mpt3sas_ctl_add_to_event_log(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_ctl_add_to_event_log() argument
351 if (!ioc->event_log) in mpt3sas_ctl_add_to_event_log()
356 if (_ctl_check_event_type(ioc, event)) { in mpt3sas_ctl_add_to_event_log()
359 i = ioc->event_context % MPT3SAS_CTL_EVENT_LOG_SIZE; in mpt3sas_ctl_add_to_event_log()
360 event_log = ioc->event_log; in mpt3sas_ctl_add_to_event_log()
362 event_log[i].context = ioc->event_context++; in mpt3sas_ctl_add_to_event_log()
376 (send_aen && !ioc->aen_event_read_flag)) { in mpt3sas_ctl_add_to_event_log()
377 ioc->aen_event_read_flag = 1; in mpt3sas_ctl_add_to_event_log()
398 mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index, in mpt3sas_ctl_event_callback() argument
403 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_ctl_event_callback()
404 mpt3sas_ctl_add_to_event_log(ioc, mpi_reply); in mpt3sas_ctl_event_callback()
421 struct MPT3SAS_ADAPTER *ioc; in _ctl_verify_adapter() local
424 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in _ctl_verify_adapter()
425 if (ioc->id != ioc_number) in _ctl_verify_adapter()
430 if (ioc->hba_mpi_version_belonged != mpi_version) in _ctl_verify_adapter()
433 *iocpp = ioc; in _ctl_verify_adapter()
452 mpt3sas_ctl_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase) in mpt3sas_ctl_reset_handler() argument
459 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
460 "%s: MPT3_IOC_PRE_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
462 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
465 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
468 mpt3sas_send_diag_release(ioc, i, &issue_reset); in mpt3sas_ctl_reset_handler()
472 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
473 "%s: MPT3_IOC_AFTER_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
474 if (ioc->ctl_cmds.status & MPT3_CMD_PENDING) { in mpt3sas_ctl_reset_handler()
475 ioc->ctl_cmds.status |= MPT3_CMD_RESET; in mpt3sas_ctl_reset_handler()
476 mpt3sas_base_free_smid(ioc, ioc->ctl_cmds.smid); in mpt3sas_ctl_reset_handler()
477 complete(&ioc->ctl_cmds.done); in mpt3sas_ctl_reset_handler()
481 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
482 "%s: MPT3_IOC_DONE_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
485 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
488 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
491 ioc->diag_buffer_status[i] |= in mpt3sas_ctl_reset_handler()
521 struct MPT3SAS_ADAPTER *ioc; in _ctl_poll() local
527 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in _ctl_poll()
528 if (ioc->aen_event_read_flag) { in _ctl_poll()
547 _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg, in _ctl_set_task_mid() argument
571 spin_lock_irqsave(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
572 for (i = ioc->scsiio_depth; i && !found; i--) { in _ctl_set_task_mid()
573 scmd = ioc->scsi_lookup[i - 1].scmd; in _ctl_set_task_mid()
584 tm_request->TaskMID = cpu_to_le16(ioc->scsi_lookup[i - 1].smid); in _ctl_set_task_mid()
587 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
590 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_set_task_mid()
592 ioc->name, in _ctl_set_task_mid()
594 tm_reply = ioc->ctl_cmds.reply; in _ctl_set_task_mid()
601 sz = min_t(u32, karg->max_reply_bytes, ioc->reply_sz); in _ctl_set_task_mid()
602 if (copy_to_user(karg->reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_set_task_mid()
609 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_set_task_mid()
610 "%s: handle(0x%04x), lun(%d), task_mid(%d)\n", ioc->name, in _ctl_set_task_mid()
623 _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg, in _ctl_do_mpt_command() argument
646 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_do_mpt_command()
648 ioc->name, __func__); in _ctl_do_mpt_command()
654 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
659 ioc->name, __func__); in _ctl_do_mpt_command()
664 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
667 ioc->name, in _ctl_do_mpt_command()
672 ioc->name, __func__); in _ctl_do_mpt_command()
674 mpi_request = kzalloc(ioc->request_sz, GFP_KERNEL); in _ctl_do_mpt_command()
678 ioc->name, __func__); in _ctl_do_mpt_command()
684 if (karg.data_sge_offset * 4 > ioc->request_sz || in _ctl_do_mpt_command()
699 smid = mpt3sas_base_get_smid_hpr(ioc, ioc->ctl_cb_idx); in _ctl_do_mpt_command()
702 ioc->name, __func__); in _ctl_do_mpt_command()
708 smid = mpt3sas_base_get_smid_scsiio(ioc, ioc->ctl_cb_idx, NULL); in _ctl_do_mpt_command()
711 ioc->name, __func__); in _ctl_do_mpt_command()
718 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_do_mpt_command()
719 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_do_mpt_command()
720 request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_do_mpt_command()
722 ioc->ctl_cmds.smid = smid; in _ctl_do_mpt_command()
730 ioc->facts.MaxDevHandle) { in _ctl_do_mpt_command()
732 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
739 data_out = pci_alloc_consistent(ioc->pdev, data_out_sz, in _ctl_do_mpt_command()
745 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
753 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
759 data_in = pci_alloc_consistent(ioc->pdev, data_in_sz, in _ctl_do_mpt_command()
765 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
773 _ctl_display_some_debug(ioc, smid, "ctl_request", NULL); in _ctl_do_mpt_command()
775 init_completion(&ioc->ctl_cmds.done); in _ctl_do_mpt_command()
784 mpt3sas_base_get_sense_buffer_dma(ioc, smid); in _ctl_do_mpt_command()
785 memset(ioc->ctl_cmds.sense, 0, SCSI_SENSE_BUFFERSIZE); in _ctl_do_mpt_command()
786 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
790 mpt3sas_base_put_smid_scsi_io(ioc, smid, in _ctl_do_mpt_command()
793 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
801 dtmprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_do_mpt_command()
803 ioc->name, in _ctl_do_mpt_command()
810 if (_ctl_set_task_mid(ioc, &karg, tm_request)) { in _ctl_do_mpt_command()
811 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
816 mpt3sas_scsih_set_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
818 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
820 mpt3sas_base_put_smid_hi_priority(ioc, smid); in _ctl_do_mpt_command()
838 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
846 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
847 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
849 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _ctl_do_mpt_command()
851 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
858 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _ctl_do_mpt_command()
860 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
869 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
872 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
875 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
886 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
887 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
892 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
894 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
902 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_do_mpt_command()
907 mpt3sas_scsih_clear_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
909 mpt3sas_trigger_master(ioc, MASTER_TRIGGER_TASK_MANAGMENT); in _ctl_do_mpt_command()
912 ioc->ioc_link_reset_in_progress) { in _ctl_do_mpt_command()
913 ioc->ioc_link_reset_in_progress = 0; in _ctl_do_mpt_command()
914 ioc->ignore_loginfos = 0; in _ctl_do_mpt_command()
916 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_do_mpt_command()
917 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_do_mpt_command()
920 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_do_mpt_command()
925 mpi_reply = ioc->ctl_cmds.reply; in _ctl_do_mpt_command()
929 (ioc->logging_level & MPT_DEBUG_TM)) { in _ctl_do_mpt_command()
935 "TerminationCount(0x%08x)\n", ioc->name, in _ctl_do_mpt_command()
954 sz = min_t(u32, karg.max_reply_bytes, ioc->reply_sz); in _ctl_do_mpt_command()
955 if (copy_to_user(karg.reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_do_mpt_command()
969 if (copy_to_user(karg.sense_data_ptr, ioc->ctl_cmds.sense, in _ctl_do_mpt_command()
986 ioc->name, in _ctl_do_mpt_command()
988 mpt3sas_halt_firmware(ioc); in _ctl_do_mpt_command()
989 mpt3sas_scsih_issue_tm(ioc, in _ctl_do_mpt_command()
994 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_mpt_command()
1002 pci_free_consistent(ioc->pdev, data_in_sz, data_in, in _ctl_do_mpt_command()
1006 pci_free_consistent(ioc->pdev, data_out_sz, data_out, in _ctl_do_mpt_command()
1010 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_do_mpt_command()
1020 _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_getiocinfo() argument
1030 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_getiocinfo()
1034 if (ioc->pfacts) in _ctl_getiocinfo()
1035 karg.port_number = ioc->pfacts[0].PortNumber; in _ctl_getiocinfo()
1036 karg.hw_rev = ioc->pdev->revision; in _ctl_getiocinfo()
1037 karg.pci_id = ioc->pdev->device; in _ctl_getiocinfo()
1038 karg.subsystem_device = ioc->pdev->subsystem_device; in _ctl_getiocinfo()
1039 karg.subsystem_vendor = ioc->pdev->subsystem_vendor; in _ctl_getiocinfo()
1040 karg.pci_information.u.bits.bus = ioc->pdev->bus->number; in _ctl_getiocinfo()
1041 karg.pci_information.u.bits.device = PCI_SLOT(ioc->pdev->devfn); in _ctl_getiocinfo()
1042 karg.pci_information.u.bits.function = PCI_FUNC(ioc->pdev->devfn); in _ctl_getiocinfo()
1043 karg.pci_information.segment_id = pci_domain_nr(ioc->pdev->bus); in _ctl_getiocinfo()
1044 karg.firmware_version = ioc->facts.FWVersion.Word; in _ctl_getiocinfo()
1045 strcpy(karg.driver_version, ioc->driver_name); in _ctl_getiocinfo()
1047 switch (ioc->hba_mpi_version_belonged) { in _ctl_getiocinfo()
1049 if (ioc->is_warpdrive) in _ctl_getiocinfo()
1060 karg.bios_version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_getiocinfo()
1076 _ctl_eventquery(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventquery() argument
1086 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventquery()
1090 memcpy(karg.event_types, ioc->event_type, in _ctl_eventquery()
1107 _ctl_eventenable(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventenable() argument
1117 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventenable()
1120 memcpy(ioc->event_type, karg.event_types, in _ctl_eventenable()
1122 mpt3sas_base_validate_event_type(ioc, ioc->event_type); in _ctl_eventenable()
1124 if (ioc->event_log) in _ctl_eventenable()
1127 ioc->event_context = 0; in _ctl_eventenable()
1128 ioc->aen_event_read_flag = 0; in _ctl_eventenable()
1129 ioc->event_log = kcalloc(MPT3SAS_CTL_EVENT_LOG_SIZE, in _ctl_eventenable()
1131 if (!ioc->event_log) { in _ctl_eventenable()
1145 _ctl_eventreport(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventreport() argument
1157 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventreport()
1168 if (!max || !ioc->event_log) in _ctl_eventreport()
1172 if (copy_to_user(uarg->event_data, ioc->event_log, number_bytes)) { in _ctl_eventreport()
1179 ioc->aen_event_read_flag = 0; in _ctl_eventreport()
1189 _ctl_do_reset(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_do_reset() argument
1200 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_do_reset()
1201 ioc->is_driver_loading) in _ctl_do_reset()
1204 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_do_reset()
1207 retval = mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_reset()
1210 ioc->name, ((!retval) ? "SUCCESS" : "FAILED")); in _ctl_do_reset()
1220 _ctl_btdh_search_sas_device(struct MPT3SAS_ADAPTER *ioc, in _ctl_btdh_search_sas_device() argument
1227 if (list_empty(&ioc->sas_device_list)) in _ctl_btdh_search_sas_device()
1230 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1231 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_btdh_search_sas_device()
1246 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1256 _ctl_btdh_search_raid_device(struct MPT3SAS_ADAPTER *ioc, in _ctl_btdh_search_raid_device() argument
1263 if (list_empty(&ioc->raid_device_list)) in _ctl_btdh_search_raid_device()
1266 spin_lock_irqsave(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1267 list_for_each_entry(raid_device, &ioc->raid_device_list, list) { in _ctl_btdh_search_raid_device()
1282 spin_unlock_irqrestore(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1292 _ctl_btdh_mapping(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_btdh_mapping() argument
1303 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_btdh_mapping()
1306 rc = _ctl_btdh_search_sas_device(ioc, &karg); in _ctl_btdh_mapping()
1308 _ctl_btdh_search_raid_device(ioc, &karg); in _ctl_btdh_mapping()
1326 _ctl_diag_capability(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type) in _ctl_diag_capability() argument
1332 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1337 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1342 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1358 _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc, in _ctl_diag_register_2() argument
1374 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_register_2()
1377 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_diag_register_2()
1381 ioc->name, __func__); in _ctl_diag_register_2()
1386 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_diag_register_2()
1388 ioc->name, __func__); in _ctl_diag_register_2()
1394 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_register_2()
1397 ioc->name, __func__, buffer_type); in _ctl_diag_register_2()
1401 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_register_2()
1405 ioc->name, __func__, in _ctl_diag_register_2()
1413 ioc->name, __func__); in _ctl_diag_register_2()
1417 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_register_2()
1420 ioc->name, __func__); in _ctl_diag_register_2()
1426 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_diag_register_2()
1427 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_register_2()
1428 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_diag_register_2()
1429 ioc->ctl_cmds.smid = smid; in _ctl_diag_register_2()
1431 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_register_2()
1433 ioc->unique_id[buffer_type] = diag_register->unique_id; in _ctl_diag_register_2()
1434 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_register_2()
1435 memcpy(ioc->product_specific[buffer_type], in _ctl_diag_register_2()
1437 ioc->diagnostic_flags[buffer_type] = diag_register->diagnostic_flags; in _ctl_diag_register_2()
1440 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_register_2()
1441 if (request_data_sz != ioc->diag_buffer_sz[buffer_type]) { in _ctl_diag_register_2()
1442 pci_free_consistent(ioc->pdev, in _ctl_diag_register_2()
1443 ioc->diag_buffer_sz[buffer_type], in _ctl_diag_register_2()
1450 ioc->diag_buffer_sz[buffer_type] = 0; in _ctl_diag_register_2()
1451 ioc->diag_buffer_dma[buffer_type] = 0; in _ctl_diag_register_2()
1453 ioc->pdev, request_data_sz, &request_data_dma); in _ctl_diag_register_2()
1457 ioc->name, __func__, request_data_sz); in _ctl_diag_register_2()
1458 mpt3sas_base_free_smid(ioc, smid); in _ctl_diag_register_2()
1461 ioc->diag_buffer[buffer_type] = request_data; in _ctl_diag_register_2()
1462 ioc->diag_buffer_sz[buffer_type] = request_data_sz; in _ctl_diag_register_2()
1463 ioc->diag_buffer_dma[buffer_type] = request_data_dma; in _ctl_diag_register_2()
1474 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_register_2()
1476 ioc->name, __func__, request_data, in _ctl_diag_register_2()
1482 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_register_2()
1484 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_register_2()
1485 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_diag_register_2()
1486 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_register_2()
1489 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_diag_register_2()
1490 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_diag_register_2()
1494 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_diag_register_2()
1500 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in _ctl_diag_register_2()
1502 ioc->name, __func__); in _ctl_diag_register_2()
1507 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_register_2()
1511 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_register_2()
1513 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in _ctl_diag_register_2()
1514 ioc->name, __func__)); in _ctl_diag_register_2()
1518 ioc->name, __func__, in _ctl_diag_register_2()
1525 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_register_2()
1531 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_register_2()
1534 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_diag_register_2()
1547 mpt3sas_enable_diag_buffer(struct MPT3SAS_ADAPTER *ioc, u8 bits_to_register) in mpt3sas_enable_diag_buffer() argument
1555 ioc->name); in mpt3sas_enable_diag_buffer()
1556 ioc->diag_trigger_master.MasterData = in mpt3sas_enable_diag_buffer()
1562 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1567 ioc->name); in mpt3sas_enable_diag_buffer()
1572 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1577 ioc->name); in mpt3sas_enable_diag_buffer()
1582 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1595 _ctl_diag_register(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_register() argument
1606 rc = _ctl_diag_register_2(ioc, &karg); in _ctl_diag_register()
1619 _ctl_diag_unregister(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_unregister() argument
1633 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_unregister()
1637 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_unregister()
1640 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1644 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1648 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1651 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1655 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1659 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_unregister()
1662 ioc->name, __func__, karg.unique_id); in _ctl_diag_unregister()
1666 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_unregister()
1670 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1674 request_data_sz = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_unregister()
1675 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_unregister()
1676 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_unregister()
1678 ioc->diag_buffer[buffer_type] = NULL; in _ctl_diag_unregister()
1679 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_unregister()
1693 _ctl_diag_query(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_query() argument
1706 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_query()
1712 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_query()
1715 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1719 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_query()
1723 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1728 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_query()
1731 ioc->name, __func__, karg.unique_id); in _ctl_diag_query()
1736 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_query()
1740 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1744 if (ioc->diag_buffer_status[buffer_type] & MPT3_DIAG_BUFFER_IS_RELEASED) in _ctl_diag_query()
1754 ioc->product_specific[buffer_type][i]; in _ctl_diag_query()
1756 karg.total_buffer_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_query()
1758 karg.unique_id = ioc->unique_id[buffer_type]; in _ctl_diag_query()
1759 karg.diagnostic_flags = ioc->diagnostic_flags[buffer_type]; in _ctl_diag_query()
1764 ioc->name, __func__, arg); in _ctl_diag_query()
1778 mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type, in mpt3sas_send_diag_release() argument
1789 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in mpt3sas_send_diag_release()
1795 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in mpt3sas_send_diag_release()
1797 if (ioc->diag_buffer_status[buffer_type] & in mpt3sas_send_diag_release()
1799 ioc->diag_buffer_status[buffer_type] |= in mpt3sas_send_diag_release()
1801 dctlprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_send_diag_release()
1802 "%s: skipping due to FAULT state\n", ioc->name, in mpt3sas_send_diag_release()
1808 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in mpt3sas_send_diag_release()
1810 ioc->name, __func__); in mpt3sas_send_diag_release()
1815 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in mpt3sas_send_diag_release()
1818 ioc->name, __func__); in mpt3sas_send_diag_release()
1823 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in mpt3sas_send_diag_release()
1824 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in mpt3sas_send_diag_release()
1825 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in mpt3sas_send_diag_release()
1826 ioc->ctl_cmds.smid = smid; in mpt3sas_send_diag_release()
1833 init_completion(&ioc->ctl_cmds.done); in mpt3sas_send_diag_release()
1834 mpt3sas_base_put_smid_default(ioc, smid); in mpt3sas_send_diag_release()
1835 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in mpt3sas_send_diag_release()
1838 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in mpt3sas_send_diag_release()
1839 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in mpt3sas_send_diag_release()
1843 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in mpt3sas_send_diag_release()
1850 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in mpt3sas_send_diag_release()
1852 ioc->name, __func__); in mpt3sas_send_diag_release()
1857 mpi_reply = ioc->ctl_cmds.reply; in mpt3sas_send_diag_release()
1861 ioc->diag_buffer_status[buffer_type] |= in mpt3sas_send_diag_release()
1863 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in mpt3sas_send_diag_release()
1864 ioc->name, __func__)); in mpt3sas_send_diag_release()
1868 ioc->name, __func__, in mpt3sas_send_diag_release()
1874 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in mpt3sas_send_diag_release()
1887 _ctl_diag_release(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_release() argument
1901 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_release()
1905 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_release()
1908 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1912 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1916 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1920 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_release()
1923 ioc->name, __func__, karg.unique_id); in _ctl_diag_release()
1927 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1931 ioc->name, __func__, in _ctl_diag_release()
1936 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_release()
1941 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1946 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1948 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_release()
1950 ioc->diag_buffer_status[buffer_type] &= in _ctl_diag_release()
1954 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1958 rc = mpt3sas_send_diag_release(ioc, buffer_type, &issue_reset); in _ctl_diag_release()
1961 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_release()
1973 _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_read_buffer() argument
1993 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_read_buffer()
1997 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_read_buffer()
2000 ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
2004 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_read_buffer()
2007 ioc->name, __func__, karg.unique_id); in _ctl_diag_read_buffer()
2011 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_read_buffer()
2015 ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
2019 request_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_read_buffer()
2023 "or bytes_to_read are not 4 byte aligned\n", ioc->name, in _ctl_diag_read_buffer()
2032 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2034 ioc->name, __func__, in _ctl_diag_read_buffer()
2048 ioc->name, __func__, diag_data); in _ctl_diag_read_buffer()
2055 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2057 ioc->name, __func__, buffer_type)); in _ctl_diag_read_buffer()
2058 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_read_buffer()
2060 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2062 ioc->name, __func__, buffer_type)); in _ctl_diag_read_buffer()
2068 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_diag_read_buffer()
2070 ioc->name, __func__); in _ctl_diag_read_buffer()
2075 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_read_buffer()
2078 ioc->name, __func__); in _ctl_diag_read_buffer()
2084 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_diag_read_buffer()
2085 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_read_buffer()
2086 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_diag_read_buffer()
2087 ioc->ctl_cmds.smid = smid; in _ctl_diag_read_buffer()
2092 cpu_to_le32(ioc->diag_buffer_sz[buffer_type]); in _ctl_diag_read_buffer()
2094 cpu_to_le64(ioc->diag_buffer_dma[buffer_type]); in _ctl_diag_read_buffer()
2097 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_read_buffer()
2101 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_read_buffer()
2102 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_diag_read_buffer()
2103 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_read_buffer()
2106 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_diag_read_buffer()
2107 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_diag_read_buffer()
2111 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_diag_read_buffer()
2117 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in _ctl_diag_read_buffer()
2119 ioc->name, __func__); in _ctl_diag_read_buffer()
2124 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_read_buffer()
2128 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_read_buffer()
2130 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in _ctl_diag_read_buffer()
2131 ioc->name, __func__)); in _ctl_diag_read_buffer()
2135 ioc->name, __func__, in _ctl_diag_read_buffer()
2142 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_read_buffer()
2147 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_diag_read_buffer()
2163 _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd, in _ctl_compat_mpt_command() argument
2195 return _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_compat_mpt_command()
2212 struct MPT3SAS_ADAPTER *ioc; in _ctl_ioctl_main() local
2226 &ioc, mpi_version) == -1 || !ioc) in _ctl_ioctl_main()
2230 mutex_lock(&ioc->pci_access_mutex); in _ctl_ioctl_main()
2232 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_ioctl_main()
2233 ioc->is_driver_loading || ioc->remove_host) { in _ctl_ioctl_main()
2240 if (!mutex_trylock(&ioc->ctl_cmds.mutex)) { in _ctl_ioctl_main()
2244 } else if (mutex_lock_interruptible(&ioc->ctl_cmds.mutex)) { in _ctl_ioctl_main()
2253 ret = _ctl_getiocinfo(ioc, arg); in _ctl_ioctl_main()
2265 ret = _ctl_compat_mpt_command(ioc, cmd, arg); in _ctl_ioctl_main()
2278 ret = _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_ioctl_main()
2284 ret = _ctl_eventquery(ioc, arg); in _ctl_ioctl_main()
2288 ret = _ctl_eventenable(ioc, arg); in _ctl_ioctl_main()
2291 ret = _ctl_eventreport(ioc, arg); in _ctl_ioctl_main()
2295 ret = _ctl_do_reset(ioc, arg); in _ctl_ioctl_main()
2299 ret = _ctl_btdh_mapping(ioc, arg); in _ctl_ioctl_main()
2303 ret = _ctl_diag_register(ioc, arg); in _ctl_ioctl_main()
2307 ret = _ctl_diag_unregister(ioc, arg); in _ctl_ioctl_main()
2311 ret = _ctl_diag_query(ioc, arg); in _ctl_ioctl_main()
2315 ret = _ctl_diag_release(ioc, arg); in _ctl_ioctl_main()
2319 ret = _ctl_diag_read_buffer(ioc, arg); in _ctl_ioctl_main()
2322 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_ioctl_main()
2323 "unsupported ioctl opcode(0x%08x)\n", ioc->name, cmd)); in _ctl_ioctl_main()
2327 mutex_unlock(&ioc->ctl_cmds.mutex); in _ctl_ioctl_main()
2329 mutex_unlock(&ioc->pci_access_mutex); in _ctl_ioctl_main()
2417 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_fw_show() local
2420 (ioc->facts.FWVersion.Word & 0xFF000000) >> 24, in _ctl_version_fw_show()
2421 (ioc->facts.FWVersion.Word & 0x00FF0000) >> 16, in _ctl_version_fw_show()
2422 (ioc->facts.FWVersion.Word & 0x0000FF00) >> 8, in _ctl_version_fw_show()
2423 ioc->facts.FWVersion.Word & 0x000000FF); in _ctl_version_fw_show()
2439 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_bios_show() local
2441 u32 version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_version_bios_show()
2463 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_mpi_show() local
2466 ioc->facts.MsgVersion, ioc->facts.HeaderVersion >> 8); in _ctl_version_mpi_show()
2482 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_product_show() local
2484 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.ChipName); in _ctl_version_product_show()
2500 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_persistent_show() local
2503 le32_to_cpu(ioc->iounit_pg0.NvdataVersionPersistent.Word)); in _ctl_version_nvdata_persistent_show()
2520 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_default_show() local
2523 le32_to_cpu(ioc->iounit_pg0.NvdataVersionDefault.Word)); in _ctl_version_nvdata_default_show()
2540 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_name_show() local
2542 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardName); in _ctl_board_name_show()
2558 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_assembly_show() local
2560 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardAssembly); in _ctl_board_assembly_show()
2576 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_tracer_show() local
2578 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardTracerNumber); in _ctl_board_tracer_show()
2597 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_io_delay_show() local
2599 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->io_missing_delay); in _ctl_io_delay_show()
2618 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_device_delay_show() local
2620 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->device_missing_delay); in _ctl_device_delay_show()
2638 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fw_queue_depth_show() local
2640 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->facts.RequestCredit); in _ctl_fw_queue_depth_show()
2659 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_sas_address_show() local
2662 (unsigned long long)ioc->sas_hba.sas_address); in _ctl_host_sas_address_show()
2679 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_show() local
2681 return snprintf(buf, PAGE_SIZE, "%08xh\n", ioc->logging_level); in _ctl_logging_level_show()
2688 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_store() local
2694 ioc->logging_level = val; in _ctl_logging_level_store()
2695 pr_info(MPT3SAS_FMT "logging_level=%08xh\n", ioc->name, in _ctl_logging_level_store()
2696 ioc->logging_level); in _ctl_logging_level_store()
2715 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_show() local
2717 return snprintf(buf, PAGE_SIZE, "%d\n", ioc->fwfault_debug); in _ctl_fwfault_debug_show()
2724 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_store() local
2730 ioc->fwfault_debug = val; in _ctl_fwfault_debug_store()
2731 pr_info(MPT3SAS_FMT "fwfault_debug=%d\n", ioc->name, in _ctl_fwfault_debug_store()
2732 ioc->fwfault_debug); in _ctl_fwfault_debug_store()
2752 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reset_count_show() local
2754 return snprintf(buf, PAGE_SIZE, "%d\n", ioc->ioc_reset_count); in _ctl_ioc_reset_count_show()
2773 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reply_queue_count_show() local
2775 if ((ioc->facts.IOCCapabilities & in _ctl_ioc_reply_queue_count_show()
2776 MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX) && ioc->msix_enable) in _ctl_ioc_reply_queue_count_show()
2777 reply_queue_count = ioc->reply_queue_count; in _ctl_ioc_reply_queue_count_show()
2800 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_BRM_status_show() local
2808 if (!ioc->is_warpdrive) { in _ctl_BRM_status_show()
2810 " warpdrive\n", ioc->name, __func__); in _ctl_BRM_status_show()
2814 mutex_lock(&ioc->pci_access_mutex); in _ctl_BRM_status_show()
2815 if (ioc->pci_error_recovery || ioc->remove_host) { in _ctl_BRM_status_show()
2816 mutex_unlock(&ioc->pci_access_mutex); in _ctl_BRM_status_show()
2825 "for iounit_pg3: (%d) bytes\n", ioc->name, __func__, sz); in _ctl_BRM_status_show()
2829 if (mpt3sas_config_get_iounit_pg3(ioc, &mpi_reply, io_unit_pg3, sz) != in _ctl_BRM_status_show()
2832 "%s: failed reading iounit_pg3\n", ioc->name, in _ctl_BRM_status_show()
2840 "ioc_status(0x%04x)\n", ioc->name, __func__, ioc_status); in _ctl_BRM_status_show()
2846 "25 entries, detected (%d) entries\n", ioc->name, __func__, in _ctl_BRM_status_show()
2857 mutex_unlock(&ioc->pci_access_mutex); in _ctl_BRM_status_show()
2884 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_size_show() local
2888 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_size_show()
2891 ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2895 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_size_show()
2899 ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2904 ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]; in _ctl_host_trace_buffer_size_show()
2911 ioc->ring_buffer_sz = size; in _ctl_host_trace_buffer_size_show()
2933 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_show() local
2937 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_show()
2940 ioc->name, __func__); in _ctl_host_trace_buffer_show()
2944 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_show()
2948 ioc->name, __func__); in _ctl_host_trace_buffer_show()
2952 if (ioc->ring_buffer_offset > ioc->ring_buffer_sz) in _ctl_host_trace_buffer_show()
2955 size = ioc->ring_buffer_sz - ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2957 request_data = ioc->diag_buffer[0] + ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2967 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_store() local
2973 ioc->ring_buffer_offset = val; in _ctl_host_trace_buffer_store()
2996 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_show() local
2998 if ((!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) || in _ctl_host_trace_buffer_enable_show()
2999 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
3002 else if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
3014 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_store() local
3020 if (ioc->shost_recovery || ioc->remove_host || in _ctl_host_trace_buffer_enable_store()
3021 ioc->pci_error_recovery || ioc->is_driver_loading) in _ctl_host_trace_buffer_enable_store()
3029 if ((ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) && in _ctl_host_trace_buffer_enable_store()
3030 (ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
3032 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
3037 ioc->name); in _ctl_host_trace_buffer_enable_store()
3041 ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] = 0; in _ctl_host_trace_buffer_enable_store()
3042 _ctl_diag_register_2(ioc, &diag_register); in _ctl_host_trace_buffer_enable_store()
3045 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) in _ctl_host_trace_buffer_enable_store()
3047 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
3050 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
3054 ioc->name); in _ctl_host_trace_buffer_enable_store()
3055 mpt3sas_send_diag_release(ioc, MPI2_DIAG_BUF_TYPE_TRACE, in _ctl_host_trace_buffer_enable_store()
3081 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_master_show() local
3085 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_show()
3087 memcpy(buf, &ioc->diag_trigger_master, rc); in _ctl_diag_trigger_master_show()
3088 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_show()
3105 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_master_store() local
3109 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_store()
3111 memset(&ioc->diag_trigger_master, 0, in _ctl_diag_trigger_master_store()
3113 memcpy(&ioc->diag_trigger_master, buf, rc); in _ctl_diag_trigger_master_store()
3114 ioc->diag_trigger_master.MasterData |= in _ctl_diag_trigger_master_store()
3116 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_store()
3135 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_event_show() local
3139 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_show()
3141 memcpy(buf, &ioc->diag_trigger_event, rc); in _ctl_diag_trigger_event_show()
3142 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_show()
3159 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_event_store() local
3163 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_store()
3165 memset(&ioc->diag_trigger_event, 0, in _ctl_diag_trigger_event_store()
3167 memcpy(&ioc->diag_trigger_event, buf, sz); in _ctl_diag_trigger_event_store()
3168 if (ioc->diag_trigger_event.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_event_store()
3169 ioc->diag_trigger_event.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_event_store()
3170 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_store()
3189 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_scsi_show() local
3193 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_show()
3195 memcpy(buf, &ioc->diag_trigger_scsi, rc); in _ctl_diag_trigger_scsi_show()
3196 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_show()
3212 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_scsi_store() local
3216 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_store()
3218 memset(&ioc->diag_trigger_scsi, 0, in _ctl_diag_trigger_scsi_store()
3220 memcpy(&ioc->diag_trigger_scsi, buf, sz); in _ctl_diag_trigger_scsi_store()
3221 if (ioc->diag_trigger_scsi.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_scsi_store()
3222 ioc->diag_trigger_scsi.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_scsi_store()
3223 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_store()
3242 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_mpi_show() local
3246 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_show()
3248 memcpy(buf, &ioc->diag_trigger_mpi, rc); in _ctl_diag_trigger_mpi_show()
3249 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_show()
3265 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_mpi_store() local
3269 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_store()
3271 memset(&ioc->diag_trigger_mpi, 0, in _ctl_diag_trigger_mpi_store()
3272 sizeof(ioc->diag_trigger_mpi)); in _ctl_diag_trigger_mpi_store()
3273 memcpy(&ioc->diag_trigger_mpi, buf, sz); in _ctl_diag_trigger_mpi_store()
3274 if (ioc->diag_trigger_mpi.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_mpi_store()
3275 ioc->diag_trigger_mpi.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_mpi_store()
3276 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_store()
3437 struct MPT3SAS_ADAPTER *ioc; in mpt3sas_ctl_exit() local
3440 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in mpt3sas_ctl_exit()
3444 if (!ioc->diag_buffer[i]) in mpt3sas_ctl_exit()
3446 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_exit()
3449 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_exit()
3452 pci_free_consistent(ioc->pdev, ioc->diag_buffer_sz[i], in mpt3sas_ctl_exit()
3453 ioc->diag_buffer[i], ioc->diag_buffer_dma[i]); in mpt3sas_ctl_exit()
3454 ioc->diag_buffer[i] = NULL; in mpt3sas_ctl_exit()
3455 ioc->diag_buffer_status[i] = 0; in mpt3sas_ctl_exit()
3458 kfree(ioc->event_log); in mpt3sas_ctl_exit()