Lines Matching defs:hostdata

110 				struct ibmvscsi_host_data *hostdata);
125 struct ibmvscsi_host_data *hostdata =
127 vio_disable_interrupts(to_vio_dev(hostdata->dev));
128 tasklet_schedule(&hostdata->srp_task);
135 * @hostdata: ibmvscsi_host_data of host
142 struct ibmvscsi_host_data *hostdata,
146 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
147 free_irq(vdev->irq, (void *)hostdata);
148 tasklet_kill(&hostdata->srp_task);
154 dma_unmap_single(hostdata->dev,
191 * @hostdata: the adapter
195 static int ibmvscsi_send_crq(struct ibmvscsi_host_data *hostdata,
198 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
214 struct ibmvscsi_host_data *hostdata = (struct ibmvscsi_host_data *)data;
215 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
221 while ((crq = crq_queue_next_crq(&hostdata->queue)) != NULL) {
222 ibmvscsi_handle_crq(crq, hostdata);
228 crq = crq_queue_next_crq(&hostdata->queue);
231 ibmvscsi_handle_crq(crq, hostdata);
261 static void set_adapter_info(struct ibmvscsi_host_data *hostdata)
263 memset(&hostdata->madapter_info, 0x00,
264 sizeof(hostdata->madapter_info));
266 dev_info(hostdata->dev, "SRP_VERSION: %s\n", SRP_VERSION);
267 strcpy(hostdata->madapter_info.srp_version, SRP_VERSION);
269 strncpy(hostdata->madapter_info.partition_name, partition_name,
270 sizeof(hostdata->madapter_info.partition_name));
272 hostdata->madapter_info.partition_number =
275 hostdata->madapter_info.mad_version = cpu_to_be32(SRP_MAD_VERSION_1);
276 hostdata->madapter_info.os_type = cpu_to_be32(SRP_MAD_OS_LINUX);
282 * @hostdata: ibmvscsi_host_data of host
285 struct ibmvscsi_host_data *hostdata)
288 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
301 set_adapter_info(hostdata);
309 dev_warn(hostdata->dev, "Partner adapter not ready\n");
311 dev_warn(hostdata->dev, "couldn't register crq--rc 0x%x\n", rc);
319 * @hostdata: ibmvscsi_host_data of host
327 struct ibmvscsi_host_data *hostdata,
332 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
340 queue->msg_token = dma_map_single(hostdata->dev, queue->msgs,
344 if (dma_mapping_error(hostdata->dev, queue->msg_token))
348 set_adapter_info(hostdata);
356 hostdata);
360 dev_warn(hostdata->dev, "Partner adapter not ready\n");
363 dev_warn(hostdata->dev, "Error %d opening adapter\n", rc);
370 tasklet_init(&hostdata->srp_task, (void *)ibmvscsi_task,
371 (unsigned long)hostdata);
375 0, "ibmvscsi", (void *)hostdata) != 0) {
376 dev_err(hostdata->dev, "couldn't register irq 0x%x\n",
383 dev_err(hostdata->dev, "Error %d enabling interrupts!!!\n", rc);
390 tasklet_kill(&hostdata->srp_task);
398 dma_unmap_single(hostdata->dev,
410 * @hostdata: ibmvscsi_host_data of host
413 struct ibmvscsi_host_data *hostdata)
416 struct vio_dev *vdev = to_vio_dev(hostdata->dev);
418 set_adapter_info(hostdata);
428 dev_err(hostdata->dev, "Error %d enabling adapter\n", rc);
439 * @hostdata: ibmvscsi_host_data who owns the event pool
444 int size, struct ibmvscsi_host_data *hostdata)
455 dma_alloc_coherent(hostdata->dev,
472 evt->hostdata = hostdata;
483 * @hostdata: ibmvscsi_host_data who owns the even pool
488 struct ibmvscsi_host_data *hostdata)
495 dma_free_coherent(hostdata->dev,
502 dev_warn(hostdata->dev, "releasing event pool with %d "
505 dma_free_coherent(hostdata->dev,
537 dev_err(evt->hostdata->dev, "Freeing invalid event_struct %p "
542 dev_err(evt->hostdata->dev, "Freeing event_struct %p "
780 * @hostdata: the adapter
783 static void purge_requests(struct ibmvscsi_host_data *hostdata, int error_code)
788 spin_lock_irqsave(hostdata->host->host_lock, flags);
789 while (!list_empty(&hostdata->sent)) {
790 evt = list_first_entry(&hostdata->sent, struct srp_event_struct, list);
794 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
798 evt->hostdata->dev);
804 free_event_struct(&evt->hostdata->pool, evt);
805 spin_lock_irqsave(hostdata->host->host_lock, flags);
807 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
814 * @hostdata: adapter to adjust
817 static void ibmvscsi_set_request_limit(struct ibmvscsi_host_data *hostdata, int limit)
821 spin_lock_irqsave(hostdata->host->host_lock, flags);
822 atomic_set(&hostdata->request_limit, limit);
823 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
828 * @hostdata: struct ibmvscsi_host_data to reset
830 static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata)
832 scsi_block_requests(hostdata->host);
833 ibmvscsi_set_request_limit(hostdata, 0);
835 purge_requests(hostdata, DID_ERROR);
836 hostdata->action = IBMVSCSI_HOST_ACTION_RESET;
837 wake_up(&hostdata->work_wait_q);
849 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
851 dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n",
854 ibmvscsi_reset_host(hostdata);
864 * @hostdata: ibmvscsi_host_data of host
871 struct ibmvscsi_host_data *hostdata,
888 atomic_dec_if_positive(&hostdata->request_limit);
918 list_for_each_entry(tmp_evt, &hostdata->sent, list) {
935 list_add_tail(&evt_struct->list, &hostdata->sent);
943 rc = ibmvscsi_send_crq(hostdata, be64_to_cpu(crq_as_u64[0]),
955 dev_warn(hostdata->dev, "send warning. "
959 dev_err(hostdata->dev, "send error %d\n", rc);
961 atomic_inc(&hostdata->request_limit);
968 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev);
970 free_event_struct(&hostdata->pool, evt_struct);
972 atomic_inc(&hostdata->request_limit);
976 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev);
984 free_event_struct(&hostdata->pool, evt_struct);
1002 dev_warn(evt_struct->hostdata->dev,
1014 evt_struct->hostdata->dev);
1048 struct ibmvscsi_host_data *hostdata = shost_priv(cmnd->device->host);
1053 evt_struct = get_event_struct(&hostdata->pool);
1065 if (!map_data_for_srp_cmd(cmnd, evt_struct, srp_cmd, hostdata->dev)) {
1069 free_event_struct(&hostdata->pool, evt_struct);
1094 return ibmvscsi_send_srp_event(evt_struct, hostdata, 0);
1105 * @hostdata: ibmvscsi_host_data of host
1110 static int map_persist_bufs(struct ibmvscsi_host_data *hostdata)
1113 hostdata->caps_addr = dma_map_single(hostdata->dev, &hostdata->caps,
1114 sizeof(hostdata->caps), DMA_BIDIRECTIONAL);
1116 if (dma_mapping_error(hostdata->dev, hostdata->caps_addr)) {
1117 dev_err(hostdata->dev, "Unable to map capabilities buffer!\n");
1121 hostdata->adapter_info_addr = dma_map_single(hostdata->dev,
1122 &hostdata->madapter_info,
1123 sizeof(hostdata->madapter_info),
1125 if (dma_mapping_error(hostdata->dev, hostdata->adapter_info_addr)) {
1126 dev_err(hostdata->dev, "Unable to map adapter info buffer!\n");
1127 dma_unmap_single(hostdata->dev, hostdata->caps_addr,
1128 sizeof(hostdata->caps), DMA_BIDIRECTIONAL);
1137 * @hostdata: ibmvscsi_host_data of host
1141 static void unmap_persist_bufs(struct ibmvscsi_host_data *hostdata)
1143 dma_unmap_single(hostdata->dev, hostdata->caps_addr,
1144 sizeof(hostdata->caps), DMA_BIDIRECTIONAL);
1146 dma_unmap_single(hostdata->dev, hostdata->adapter_info_addr,
1147 sizeof(hostdata->madapter_info), DMA_BIDIRECTIONAL);
1159 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
1164 dev_info(hostdata->dev, "SRP_LOGIN_REJ reason %u\n",
1167 ibmvscsi_set_request_limit(hostdata, -1);
1170 dev_err(hostdata->dev, "Invalid login response typecode 0x%02x!\n",
1173 ibmvscsi_set_request_limit(hostdata, -1);
1177 dev_info(hostdata->dev, "SRP_LOGIN succeeded\n");
1178 hostdata->client_migrated = 0;
1184 ibmvscsi_set_request_limit(hostdata,
1188 hostdata->action = IBMVSCSI_HOST_ACTION_UNBLOCK;
1189 wake_up(&hostdata->work_wait_q);
1194 * @hostdata: ibmvscsi_host_data of host
1198 static int send_srp_login(struct ibmvscsi_host_data *hostdata)
1203 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool);
1220 ibmvscsi_set_request_limit(hostdata, 0);
1222 spin_lock_irqsave(hostdata->host->host_lock, flags);
1223 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2);
1224 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1225 dev_info(hostdata->dev, "sent SRP login\n");
1237 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
1240 dev_err(hostdata->dev, "error 0x%X getting capabilities info\n",
1243 if (hostdata->caps.migration.common.server_support !=
1245 dev_info(hostdata->dev, "Partition migration not supported\n");
1248 if (hostdata->caps.reserve.common.server_support ==
1250 dev_info(hostdata->dev, "Client reserve enabled\n");
1252 dev_info(hostdata->dev, "Client reserve not supported\n");
1256 send_srp_login(hostdata);
1262 * @hostdata: ibmvscsi_host_data of host
1264 static void send_mad_capabilities(struct ibmvscsi_host_data *hostdata)
1269 struct device_node *of_node = hostdata->dev->of_node;
1272 evt_struct = get_event_struct(&hostdata->pool);
1281 hostdata->caps.flags = cpu_to_be32(CAP_LIST_SUPPORTED);
1282 if (hostdata->client_migrated)
1283 hostdata->caps.flags |= cpu_to_be32(CLIENT_MIGRATED);
1285 strscpy(hostdata->caps.name, dev_name(&hostdata->host->shost_gendev),
1286 sizeof(hostdata->caps.name));
1289 location = location ? location : dev_name(hostdata->dev);
1290 strscpy(hostdata->caps.loc, location, sizeof(hostdata->caps.loc));
1293 req->buffer = cpu_to_be64(hostdata->caps_addr);
1295 hostdata->caps.migration.common.cap_type =
1297 hostdata->caps.migration.common.length =
1298 cpu_to_be16(sizeof(hostdata->caps.migration));
1299 hostdata->caps.migration.common.server_support =
1301 hostdata->caps.migration.ecl = cpu_to_be32(1);
1304 hostdata->caps.reserve.common.cap_type =
1306 hostdata->caps.reserve.common.length =
1307 cpu_to_be16(sizeof(hostdata->caps.reserve));
1308 hostdata->caps.reserve.common.server_support =
1310 hostdata->caps.reserve.type =
1313 cpu_to_be16(sizeof(hostdata->caps));
1315 req->common.length = cpu_to_be16(sizeof(hostdata->caps) -
1316 sizeof(hostdata->caps.reserve));
1318 spin_lock_irqsave(hostdata->host->host_lock, flags);
1319 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2))
1320 dev_err(hostdata->dev, "couldn't send CAPABILITIES_REQ!\n");
1321 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1333 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
1337 dev_err(hostdata->dev, "fast_fail not supported in server\n");
1339 dev_err(hostdata->dev, "fast_fail request failed\n");
1341 dev_err(hostdata->dev, "error 0x%X enabling fast_fail\n", status);
1343 send_mad_capabilities(hostdata);
1348 * @hostdata: ibmvscsi_host_data of host
1352 static int enable_fast_fail(struct ibmvscsi_host_data *hostdata)
1360 send_mad_capabilities(hostdata);
1364 evt_struct = get_event_struct(&hostdata->pool);
1374 spin_lock_irqsave(hostdata->host->host_lock, flags);
1375 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2);
1376 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1389 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
1392 dev_err(hostdata->dev, "error %d getting adapter info\n",
1395 dev_info(hostdata->dev, "host srp version: %s, "
1397 hostdata->madapter_info.srp_version,
1398 hostdata->madapter_info.partition_name,
1399 be32_to_cpu(hostdata->madapter_info.partition_number),
1400 be32_to_cpu(hostdata->madapter_info.os_type),
1401 be32_to_cpu(hostdata->madapter_info.port_max_txu[0]));
1403 if (hostdata->madapter_info.port_max_txu[0])
1404 hostdata->host->max_sectors =
1405 be32_to_cpu(hostdata->madapter_info.port_max_txu[0]) >> 9;
1407 if (be32_to_cpu(hostdata->madapter_info.os_type) == SRP_MAD_OS_AIX &&
1408 strcmp(hostdata->madapter_info.srp_version, "1.6a") <= 0) {
1409 dev_err(hostdata->dev, "host (Ver. %s) doesn't support large transfers\n",
1410 hostdata->madapter_info.srp_version);
1411 dev_err(hostdata->dev, "limiting scatterlists to %d\n",
1413 hostdata->host->sg_tablesize = MAX_INDIRECT_BUFS;
1416 if (be32_to_cpu(hostdata->madapter_info.os_type) == SRP_MAD_OS_AIX) {
1417 enable_fast_fail(hostdata);
1422 send_srp_login(hostdata);
1430 * @hostdata: ibmvscsi_host_data of host
1434 static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata)
1440 evt_struct = get_event_struct(&hostdata->pool);
1452 req->common.length = cpu_to_be16(sizeof(hostdata->madapter_info));
1453 req->buffer = cpu_to_be64(hostdata->adapter_info_addr);
1455 spin_lock_irqsave(hostdata->host->host_lock, flags);
1456 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2))
1457 dev_err(hostdata->dev, "couldn't send ADAPTER_INFO_REQ!\n");
1458 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1464 static void init_adapter(struct ibmvscsi_host_data *hostdata)
1466 send_mad_adapter_info(hostdata);
1490 struct ibmvscsi_host_data *hostdata = shost_priv(cmd->device->host);
1503 spin_lock_irqsave(hostdata->host->host_lock, flags);
1507 list_for_each_entry(tmp_evt, &hostdata->sent, list) {
1515 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1519 evt = get_event_struct(&hostdata->pool);
1521 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1544 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, abort_timeout * 2);
1549 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1551 spin_lock_irqsave(hostdata->host->host_lock, flags);
1554 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1593 spin_lock_irqsave(hostdata->host->host_lock, flags);
1595 list_for_each_entry(tmp_evt, &hostdata->sent, list) {
1603 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1615 found_evt->hostdata->dev);
1616 free_event_struct(&found_evt->hostdata->pool, found_evt);
1617 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1618 atomic_inc(&hostdata->request_limit);
1629 struct ibmvscsi_host_data *hostdata = shost_priv(cmd->device->host);
1639 spin_lock_irqsave(hostdata->host->host_lock, flags);
1642 evt = get_event_struct(&hostdata->pool);
1644 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1666 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, reset_timeout * 2);
1671 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1673 spin_lock_irqsave(hostdata->host->host_lock, flags);
1676 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1713 spin_lock_irqsave(hostdata->host->host_lock, flags);
1714 list_for_each_entry_safe(tmp_evt, pos, &hostdata->sent, list) {
1720 tmp_evt->hostdata->dev);
1721 free_event_struct(&tmp_evt->hostdata->pool,
1723 atomic_inc(&hostdata->request_limit);
1730 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1741 struct ibmvscsi_host_data *hostdata = shost_priv(cmd->device->host);
1743 dev_err(hostdata->dev, "Resetting connection due to error recovery\n");
1745 ibmvscsi_reset_host(hostdata);
1749 atomic_read(&hostdata->request_limit) < 2;) {
1754 if (atomic_read(&hostdata->request_limit) <= 0)
1763 * @hostdata: ibmvscsi_host_data of host
1767 struct ibmvscsi_host_data *hostdata)
1778 dev_info(hostdata->dev, "partner initialized\n");
1780 rc = ibmvscsi_send_crq(hostdata, 0xC002000000000000LL, 0);
1783 init_adapter(hostdata);
1785 dev_err(hostdata->dev, "Unable to send init rsp. rc=%ld\n", rc);
1790 dev_info(hostdata->dev, "partner initialization complete\n");
1793 init_adapter(hostdata);
1796 dev_err(hostdata->dev, "unknown crq message type: %d\n", crq->format);
1800 scsi_block_requests(hostdata->host);
1801 ibmvscsi_set_request_limit(hostdata, 0);
1804 dev_info(hostdata->dev, "Re-enabling adapter!\n");
1805 hostdata->client_migrated = 1;
1806 hostdata->action = IBMVSCSI_HOST_ACTION_REENABLE;
1807 purge_requests(hostdata, DID_REQUEUE);
1808 wake_up(&hostdata->work_wait_q);
1810 dev_err(hostdata->dev, "Virtual adapter failed rc %d!\n",
1812 ibmvscsi_reset_host(hostdata);
1818 dev_err(hostdata->dev, "got an invalid message type 0x%02x\n",
1827 if (!valid_event_struct(&hostdata->pool, evt_struct)) {
1828 dev_err(hostdata->dev, "returned correlation_token 0x%p is invalid!\n",
1834 dev_err(hostdata->dev, "received duplicate correlation_token 0x%p!\n",
1841 &hostdata->request_limit);
1850 dev_err(hostdata->dev, "returned done() is NULL; not running it!\n");
1856 spin_lock_irqsave(evt_struct->hostdata->host->host_lock, flags);
1858 free_event_struct(&evt_struct->hostdata->pool, evt_struct);
1859 spin_unlock_irqrestore(evt_struct->hostdata->host->host_lock, flags);
1906 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
1909 len = snprintf(buf, sizeof(hostdata->caps.loc), "%s\n",
1910 hostdata->caps.loc);
1926 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
1929 len = snprintf(buf, sizeof(hostdata->caps.name), "%s\n",
1930 hostdata->caps.name);
1946 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
1950 hostdata->madapter_info.srp_version);
1967 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
1971 hostdata->madapter_info.partition_name);
1988 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
1992 be32_to_cpu(hostdata->madapter_info.partition_number));
2008 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
2012 be32_to_cpu(hostdata->madapter_info.mad_version));
2028 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
2032 be32_to_cpu(hostdata->madapter_info.os_type));
2060 struct ibmvscsi_host_data *hostdata = shost_priv(shost);
2062 dev_info(hostdata->dev, "Initiating adapter reset!\n");
2063 ibmvscsi_reset_host(hostdata);
2124 static void ibmvscsi_do_work(struct ibmvscsi_host_data *hostdata)
2130 spin_lock_irqsave(hostdata->host->host_lock, flags);
2131 switch (hostdata->action) {
2136 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
2137 rc = ibmvscsi_reset_crq_queue(&hostdata->queue, hostdata);
2138 spin_lock_irqsave(hostdata->host->host_lock, flags);
2140 rc = ibmvscsi_send_crq(hostdata, 0xC001000000000000LL, 0);
2141 vio_enable_interrupts(to_vio_dev(hostdata->dev));
2145 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
2146 rc = ibmvscsi_reenable_crq_queue(&hostdata->queue, hostdata);
2147 spin_lock_irqsave(hostdata->host->host_lock, flags);
2149 rc = ibmvscsi_send_crq(hostdata, 0xC001000000000000LL, 0);
2153 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
2157 hostdata->action = IBMVSCSI_HOST_ACTION_NONE;
2158 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
2161 ibmvscsi_set_request_limit(hostdata, -1);
2162 dev_err(hostdata->dev, "error after %s\n", action);
2165 scsi_unblock_requests(hostdata->host);
2168 static int __ibmvscsi_work_to_do(struct ibmvscsi_host_data *hostdata)
2172 switch (hostdata->action) {
2185 static int ibmvscsi_work_to_do(struct ibmvscsi_host_data *hostdata)
2190 spin_lock_irqsave(hostdata->host->host_lock, flags);
2191 rc = __ibmvscsi_work_to_do(hostdata);
2192 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
2199 struct ibmvscsi_host_data *hostdata = data;
2205 rc = wait_event_interruptible(hostdata->work_wait_q,
2206 ibmvscsi_work_to_do(hostdata));
2213 ibmvscsi_do_work(hostdata);
2224 struct ibmvscsi_host_data *hostdata;
2234 host = scsi_host_alloc(&driver_template, sizeof(*hostdata));
2241 hostdata = shost_priv(host);
2242 memset(hostdata, 0x00, sizeof(*hostdata));
2243 INIT_LIST_HEAD(&hostdata->sent);
2244 init_waitqueue_head(&hostdata->work_wait_q);
2245 hostdata->host = host;
2246 hostdata->dev = dev;
2247 ibmvscsi_set_request_limit(hostdata, -1);
2248 hostdata->host->max_sectors = IBMVSCSI_MAX_SECTORS_DEFAULT;
2250 if (map_persist_bufs(hostdata)) {
2255 hostdata->work_thread = kthread_run(ibmvscsi_work, hostdata, "%s_%d",
2258 if (IS_ERR(hostdata->work_thread)) {
2260 PTR_ERR(hostdata->work_thread));
2264 rc = ibmvscsi_init_crq_queue(&hostdata->queue, hostdata, max_events);
2269 if (initialize_event_pool(&hostdata->pool, max_events, hostdata) != 0) {
2283 if (scsi_add_host(hostdata->host, hostdata->dev))
2287 memcpy(ids.port_id, hostdata->madapter_info.partition_name,
2298 if (ibmvscsi_send_crq(hostdata, 0xC001000000000000LL, 0) == 0
2308 atomic_read(&hostdata->request_limit) < 2;) {
2314 if (atomic_read(&hostdata->request_limit) > 0)
2318 dev_set_drvdata(&vdev->dev, hostdata);
2320 list_add_tail(&hostdata->host_list, &ibmvscsi_head);
2325 scsi_remove_host(hostdata->host);
2327 release_event_pool(&hostdata->pool, hostdata);
2329 ibmvscsi_release_crq_queue(&hostdata->queue, hostdata, max_events);
2331 kthread_stop(hostdata->work_thread);
2333 unmap_persist_bufs(hostdata);
2342 struct ibmvscsi_host_data *hostdata = dev_get_drvdata(&vdev->dev);
2344 srp_remove_host(hostdata->host);
2345 scsi_remove_host(hostdata->host);
2347 purge_requests(hostdata, DID_ERROR);
2348 release_event_pool(&hostdata->pool, hostdata);
2350 ibmvscsi_release_crq_queue(&hostdata->queue, hostdata,
2353 kthread_stop(hostdata->work_thread);
2354 unmap_persist_bufs(hostdata);
2357 list_del(&hostdata->host_list);
2360 scsi_host_put(hostdata->host);
2372 struct ibmvscsi_host_data *hostdata = dev_get_drvdata(dev);
2373 vio_disable_interrupts(to_vio_dev(hostdata->dev));
2374 tasklet_schedule(&hostdata->srp_task);