Lines Matching refs:a
72 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_fw() local
74 return esas2r_read_fw(a, buf, off, count); in read_fw()
81 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in write_fw() local
83 return esas2r_write_fw(a, buf, off, count); in write_fw()
90 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_fs() local
92 return esas2r_read_fs(a, buf, off, count); in read_fs()
99 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in write_fs() local
103 result = esas2r_write_fs(a, buf, off, count); in write_fs()
115 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_vda() local
117 return esas2r_read_vda(a, buf, off, count); in read_vda()
124 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in write_vda() local
126 return esas2r_write_vda(a, buf, off, count); in write_vda()
133 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_live_nvram() local
136 memcpy(buf, a->nvram, length); in read_live_nvram()
144 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in write_live_nvram() local
148 rq = esas2r_alloc_request(a); in write_live_nvram()
152 if (esas2r_write_params(a, rq, (struct esas2r_sas_nvram *)buf)) in write_live_nvram()
155 esas2r_free_request(a, rq); in write_live_nvram()
164 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_default_nvram() local
166 esas2r_nvram_get_defaults(a, (struct esas2r_sas_nvram *)buf); in read_default_nvram()
175 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in read_hw() local
178 if (!a->local_atto_ioctl) in read_hw()
181 if (handle_hba_ioctl(a, a->local_atto_ioctl) != IOCTL_SUCCESS) in read_hw()
184 memcpy(buf, a->local_atto_ioctl, length); in read_hw()
193 struct esas2r_adapter *a = esas2r_adapter_from_kobj(kobj); in write_hw() local
196 if (!a->local_atto_ioctl) { in write_hw()
197 a->local_atto_ioctl = kzalloc(sizeof(struct atto_ioctl), in write_hw()
199 if (a->local_atto_ioctl == NULL) { in write_hw()
207 memset(a->local_atto_ioctl, 0, sizeof(struct atto_ioctl)); in write_hw()
208 memcpy(a->local_atto_ioctl, buf, length); in write_hw()
360 struct esas2r_adapter *a; in esas2r_probe() local
401 a = (struct esas2r_adapter *)host->hostdata; in esas2r_probe()
472 esas2r_fw_event_on(a); in esas2r_probe()
484 a->sysfs_fw_created = 1; in esas2r_probe()
490 a->sysfs_fs_created = 1; in esas2r_probe()
496 a->sysfs_vda_created = 1; in esas2r_probe()
502 a->sysfs_hw_created = 1; in esas2r_probe()
508 a->sysfs_live_nvram_created = 1; in esas2r_probe()
515 a->sysfs_default_nvram_created = 1; in esas2r_probe()
704 struct esas2r_adapter *a = (struct esas2r_adapter *)sh->hostdata; in esas2r_show_info() local
718 a->flash_rev, in esas2r_show_info()
719 a->fw_rev[0] ? a->fw_rev : "(none)"); in esas2r_show_info()
726 esas2r_get_model_name(a), in esas2r_show_info()
727 a->nvram->sas_addr[0], in esas2r_show_info()
728 a->nvram->sas_addr[1], in esas2r_show_info()
729 a->nvram->sas_addr[2], in esas2r_show_info()
730 a->nvram->sas_addr[3], in esas2r_show_info()
731 a->nvram->sas_addr[4], in esas2r_show_info()
732 a->nvram->sas_addr[5], in esas2r_show_info()
733 a->nvram->sas_addr[6], in esas2r_show_info()
734 a->nvram->sas_addr[7]); in esas2r_show_info()
742 for (t = a->targetdb; t < a->targetdb_end; t++) in esas2r_show_info()
746 (u16)(uintptr_t)(t - a->targetdb)); in esas2r_show_info()
771 struct esas2r_adapter *a = (struct esas2r_adapter *)sh->hostdata; in esas2r_info() local
812 a->pcid->bus->number, a->pcid->devfn, a->pcid->irq, in esas2r_info()
813 a->fw_rev[0] ? a->fw_rev : "(none)"); in esas2r_info()
880 struct esas2r_adapter *a = in esas2r_queuecommand() local
889 if (unlikely(test_bit(AF_DEGRADED_MODE, &a->flags))) { in esas2r_queuecommand()
895 rq = esas2r_alloc_request(a); in esas2r_queuecommand()
918 esas2r_sgc_init(&sgc, a, rq, NULL); in esas2r_queuecommand()
929 esas2r_free_request(a, rq); in esas2r_queuecommand()
935 if (unlikely(!esas2r_build_sg_list(a, rq, &sgc))) { in esas2r_queuecommand()
937 esas2r_free_request(a, rq); in esas2r_queuecommand()
944 esas2r_start_request(a, rq); in esas2r_queuecommand()
949 static void complete_task_management_request(struct esas2r_adapter *a, in complete_task_management_request() argument
953 esas2r_free_request(a, rq); in complete_task_management_request()
966 static int esas2r_check_active_queue(struct esas2r_adapter *a, in esas2r_check_active_queue() argument
983 if (queue == &a->active_list) { in esas2r_check_active_queue()
989 ar = esas2r_alloc_request(a); in esas2r_check_active_queue()
992 &(a->host->shost_gendev), in esas2r_check_active_queue()
1022 esas2r_free_request(a, rq); in esas2r_check_active_queue()
1041 struct esas2r_adapter *a = in esas2r_eh_abort() local
1050 if (test_bit(AF_DEGRADED_MODE, &a->flags)) { in esas2r_eh_abort()
1060 spin_lock_irqsave(&a->queue_lock, flags); in esas2r_eh_abort()
1067 queue = &a->defer_list; in esas2r_eh_abort()
1071 result = esas2r_check_active_queue(a, &abort_request, cmd, queue); in esas2r_eh_abort()
1074 spin_unlock_irqrestore(&a->queue_lock, flags); in esas2r_eh_abort()
1076 } else if (result == 2 && (queue == &a->defer_list)) { in esas2r_eh_abort()
1077 queue = &a->active_list; in esas2r_eh_abort()
1081 spin_unlock_irqrestore(&a->queue_lock, flags); in esas2r_eh_abort()
1095 esas2r_start_request(a, abort_request); in esas2r_eh_abort()
1097 if (atomic_read(&a->disable_cnt) == 0) in esas2r_eh_abort()
1098 esas2r_do_deferred_processes(a); in esas2r_eh_abort()
1128 struct esas2r_adapter *a = in esas2r_host_bus_reset() local
1131 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_host_bus_reset()
1135 esas2r_reset_adapter(a); in esas2r_host_bus_reset()
1137 esas2r_reset_bus(a); in esas2r_host_bus_reset()
1141 while (test_bit(AF_OS_RESET, &a->flags)) { in esas2r_host_bus_reset()
1144 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_host_bus_reset()
1148 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_host_bus_reset()
1170 struct esas2r_adapter *a = in esas2r_dev_targ_reset() local
1176 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_dev_targ_reset()
1180 rq = esas2r_alloc_request(a); in esas2r_dev_targ_reset()
1209 completed = esas2r_send_task_mgmt(a, rq, 0x20); in esas2r_dev_targ_reset()
1213 completed = esas2r_send_task_mgmt(a, rq, 0x10); in esas2r_dev_targ_reset()
1219 esas2r_free_request(a, rq); in esas2r_dev_targ_reset()
1229 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_dev_targ_reset()
1259 void esas2r_log_request_failure(struct esas2r_adapter *a, in esas2r_log_request_failure() argument
1297 void esas2r_wait_request(struct esas2r_adapter *a, struct esas2r_request *rq) in esas2r_wait_request() argument
1306 esas2r_polled_interrupt(a); in esas2r_wait_request()
1319 esas2r_local_reset_adapter(a); in esas2r_wait_request()
1325 u32 esas2r_map_data_window(struct esas2r_adapter *a, u32 addr_lo) in esas2r_map_data_window() argument
1330 if (a->window_base != base) { in esas2r_map_data_window()
1331 esas2r_write_register_dword(a, MVR_PCI_WIN1_REMAP, in esas2r_map_data_window()
1333 esas2r_flush_register_dword(a, MVR_PCI_WIN1_REMAP); in esas2r_map_data_window()
1334 a->window_base = base; in esas2r_map_data_window()
1341 bool esas2r_read_mem_block(struct esas2r_adapter *a, in esas2r_read_mem_block() argument
1355 esas2r_map_data_window(a, iatvr); in esas2r_read_mem_block()
1367 *end++ = esas2r_read_data_byte(a, offset); in esas2r_read_mem_block()
1545 void esas2r_free_request(struct esas2r_adapter *a, struct esas2r_request *rq) in esas2r_free_request() argument
1549 esas2r_rq_destroy_request(rq, a); in esas2r_free_request()
1550 spin_lock_irqsave(&a->request_lock, flags); in esas2r_free_request()
1551 list_add(&rq->comp_list, &a->avail_request); in esas2r_free_request()
1552 spin_unlock_irqrestore(&a->request_lock, flags); in esas2r_free_request()
1555 struct esas2r_request *esas2r_alloc_request(struct esas2r_adapter *a) in esas2r_alloc_request() argument
1560 spin_lock_irqsave(&a->request_lock, flags); in esas2r_alloc_request()
1562 if (unlikely(list_empty(&a->avail_request))) { in esas2r_alloc_request()
1563 spin_unlock_irqrestore(&a->request_lock, flags); in esas2r_alloc_request()
1567 rq = list_first_entry(&a->avail_request, struct esas2r_request, in esas2r_alloc_request()
1570 spin_unlock_irqrestore(&a->request_lock, flags); in esas2r_alloc_request()
1571 esas2r_rq_init_request(rq, a); in esas2r_alloc_request()
1577 void esas2r_complete_request_cb(struct esas2r_adapter *a, in esas2r_complete_request_cb() argument
1604 esas2r_free_request(a, rq); in esas2r_complete_request_cb()
1610 struct esas2r_adapter *a = (struct esas2r_adapter *)context; in esas2r_adapter_tasklet() local
1612 if (unlikely(test_bit(AF2_TIMER_TICK, &a->flags2))) { in esas2r_adapter_tasklet()
1613 clear_bit(AF2_TIMER_TICK, &a->flags2); in esas2r_adapter_tasklet()
1614 esas2r_timer_tick(a); in esas2r_adapter_tasklet()
1617 if (likely(test_bit(AF2_INT_PENDING, &a->flags2))) { in esas2r_adapter_tasklet()
1618 clear_bit(AF2_INT_PENDING, &a->flags2); in esas2r_adapter_tasklet()
1619 esas2r_adapter_interrupt(a); in esas2r_adapter_tasklet()
1622 if (esas2r_is_tasklet_pending(a)) in esas2r_adapter_tasklet()
1623 esas2r_do_tasklet_tasks(a); in esas2r_adapter_tasklet()
1625 if (esas2r_is_tasklet_pending(a) in esas2r_adapter_tasklet()
1626 || (test_bit(AF2_INT_PENDING, &a->flags2)) in esas2r_adapter_tasklet()
1627 || (test_bit(AF2_TIMER_TICK, &a->flags2))) { in esas2r_adapter_tasklet()
1628 clear_bit(AF_TASKLET_SCHEDULED, &a->flags); in esas2r_adapter_tasklet()
1629 esas2r_schedule_tasklet(a); in esas2r_adapter_tasklet()
1631 clear_bit(AF_TASKLET_SCHEDULED, &a->flags); in esas2r_adapter_tasklet()
1637 void esas2r_kickoff_timer(struct esas2r_adapter *a) in esas2r_kickoff_timer() argument
1639 init_timer(&a->timer); in esas2r_kickoff_timer()
1641 a->timer.function = esas2r_timer_callback; in esas2r_kickoff_timer()
1642 a->timer.data = (unsigned long)a; in esas2r_kickoff_timer()
1643 a->timer.expires = jiffies + in esas2r_kickoff_timer()
1646 add_timer(&a->timer); in esas2r_kickoff_timer()
1651 struct esas2r_adapter *a = (struct esas2r_adapter *)context; in esas2r_timer_callback() local
1653 set_bit(AF2_TIMER_TICK, &a->flags2); in esas2r_timer_callback()
1655 esas2r_schedule_tasklet(a); in esas2r_timer_callback()
1657 esas2r_kickoff_timer(a); in esas2r_timer_callback()
1669 struct esas2r_adapter *a = fw_event->a; in esas2r_free_fw_event() local
1671 spin_lock_irqsave(&a->fw_event_lock, flags); in esas2r_free_fw_event()
1674 spin_unlock_irqrestore(&a->fw_event_lock, flags); in esas2r_free_fw_event()
1678 esas2r_fw_event_off(struct esas2r_adapter *a) in esas2r_fw_event_off() argument
1682 spin_lock_irqsave(&a->fw_event_lock, flags); in esas2r_fw_event_off()
1683 a->fw_events_off = 1; in esas2r_fw_event_off()
1684 spin_unlock_irqrestore(&a->fw_event_lock, flags); in esas2r_fw_event_off()
1688 esas2r_fw_event_on(struct esas2r_adapter *a) in esas2r_fw_event_on() argument
1692 spin_lock_irqsave(&a->fw_event_lock, flags); in esas2r_fw_event_on()
1693 a->fw_events_off = 0; in esas2r_fw_event_on()
1694 spin_unlock_irqrestore(&a->fw_event_lock, flags); in esas2r_fw_event_on()
1697 static void esas2r_add_device(struct esas2r_adapter *a, u16 target_id) in esas2r_add_device() argument
1702 scsi_dev = scsi_device_lookup(a->host, 0, target_id, 0); in esas2r_add_device()
1715 &(a->host-> in esas2r_add_device()
1720 ret = scsi_add_device(a->host, 0, target_id, 0); in esas2r_add_device()
1724 &(a->host-> in esas2r_add_device()
1732 static void esas2r_remove_device(struct esas2r_adapter *a, u16 target_id) in esas2r_remove_device() argument
1736 scsi_dev = scsi_device_lookup(a->host, 0, target_id, 0); in esas2r_remove_device()
1760 &(a->host->shost_gendev), in esas2r_remove_device()
1855 struct esas2r_adapter *a = fw_event->a; in esas2r_firmware_event_work() local
1859 if (a->fw_events_off) in esas2r_firmware_event_work()
1867 esas2r_remove_device(a, target_id); in esas2r_firmware_event_work()
1868 esas2r_add_device(a, target_id); in esas2r_firmware_event_work()
1872 esas2r_add_device(a, target_id); in esas2r_firmware_event_work()
1876 esas2r_remove_device(a, target_id); in esas2r_firmware_event_work()
1888 void esas2r_queue_fw_event(struct esas2r_adapter *a, in esas2r_queue_fw_event() argument
1908 ae->bus_number = a->pcid->bus->number; in esas2r_queue_fw_event()
1909 ae->devfn = a->pcid->devfn; in esas2r_queue_fw_event()
1916 fw_event->a = a; in esas2r_queue_fw_event()
1918 spin_lock_irqsave(&a->fw_event_lock, flags); in esas2r_queue_fw_event()
1919 list_add_tail(&fw_event->list, &a->fw_event_list); in esas2r_queue_fw_event()
1922 smp_processor_id(), a->fw_event_q, &fw_event->work, in esas2r_queue_fw_event()
1924 spin_unlock_irqrestore(&a->fw_event_lock, flags); in esas2r_queue_fw_event()
1927 void esas2r_target_state_changed(struct esas2r_adapter *a, u16 targ_id, in esas2r_target_state_changed() argument
1931 esas2r_queue_fw_event(a, fw_event_lun_change, &targ_id, in esas2r_target_state_changed()
1934 esas2r_queue_fw_event(a, fw_event_present, &targ_id, in esas2r_target_state_changed()
1937 esas2r_queue_fw_event(a, fw_event_not_present, &targ_id, in esas2r_target_state_changed()