• Home
  • Raw
  • Download

Lines Matching refs:mic

147 tap_configure(struct mic_info *mic, char *dev)  in tap_configure()  argument
166 mic->name, strerror(errno)); in tap_configure()
172 mic->name, strerror(errno)); in tap_configure()
179 mic->name, strerror(errno)); in tap_configure()
183 snprintf(ipaddr, IFNAMSIZ, "172.31.%d.254/24", mic->id + 1); in tap_configure()
198 mic->name, strerror(errno)); in tap_configure()
204 mic->name, strerror(errno)); in tap_configure()
211 mic->name, strerror(errno)); in tap_configure()
215 mic->name, __func__, __LINE__); in tap_configure()
219 static int tun_alloc(struct mic_info *mic, char *dev) in tun_alloc() argument
241 mic->name, __func__, __LINE__, strerror(errno)); in tun_alloc()
251 mic->name, __func__, __LINE__, strerror(errno)); in tun_alloc()
266 static void set_dp(struct mic_info *mic, int type, void *dp) in set_dp() argument
270 mic->mic_console.console_dp = dp; in set_dp()
273 mic->mic_net.net_dp = dp; in set_dp()
276 mic->mic_virtblk.block_dp = dp; in set_dp()
279 mpsslog("%s %s %d not found\n", mic->name, __func__, type); in set_dp()
283 static void *get_dp(struct mic_info *mic, int type) in get_dp() argument
287 return mic->mic_console.console_dp; in get_dp()
289 return mic->mic_net.net_dp; in get_dp()
291 return mic->mic_virtblk.block_dp; in get_dp()
293 mpsslog("%s %s %d not found\n", mic->name, __func__, type); in get_dp()
298 static struct mic_device_desc *get_device_desc(struct mic_info *mic, int type) in get_device_desc() argument
302 void *dp = get_dp(mic, type); in get_device_desc()
316 mic->name, __func__, d->type, d); in get_device_desc()
321 mpsslog("%s %s %d not found\n", mic->name, __func__, type); in get_device_desc()
348 static inline void verify_out_len(struct mic_info *mic, in verify_out_len() argument
353 mic->name, __func__, __LINE__, in verify_out_len()
361 disp_iovec(struct mic_info *mic, struct mic_copy_desc *copy, in disp_iovec() argument
368 mic->name, s, line, i, in disp_iovec()
390 mic_virtio_copy(struct mic_info *mic, int fd, in mic_virtio_copy() argument
398 mic->name, __func__, __LINE__, in mic_virtio_copy()
416 init_vr(struct mic_info *mic, int fd, int type, in init_vr() argument
429 mic->name, __func__, __LINE__, in init_vr()
433 set_dp(mic, type, va); in init_vr()
440 __func__, mic->name, vr0->va, vr0->info, vr_size, in init_vr()
453 __func__, mic->name, vr1->va, vr1->info, vr_size, in init_vr()
464 wait_for_card_driver(struct mic_info *mic, int fd, int type) in wait_for_card_driver() argument
468 struct mic_device_desc *desc = get_device_desc(mic, type); in wait_for_card_driver()
476 mic->name, __func__, type, desc->status); in wait_for_card_driver()
484 mic->name, __func__, strerror(errno)); in wait_for_card_driver()
492 mic->name, __func__, type, in wait_for_card_driver()
498 mic->name, __func__, pollfd.revents); in wait_for_card_driver()
500 mic->name, __func__, type, in wait_for_card_driver()
511 spin_for_descriptors(struct mic_info *mic, struct mic_vring *vr) in spin_for_descriptors() argument
518 mic->name, __func__, in spin_for_descriptors()
537 struct mic_info *mic = (struct mic_info *)arg; in virtio_net() local
545 snprintf(if_name, IFNAMSIZ, "mic%d", mic->id); in virtio_net()
546 mic->mic_net.tap_fd = tun_alloc(mic, if_name); in virtio_net()
547 if (mic->mic_net.tap_fd < 0) in virtio_net()
550 if (tap_configure(mic, if_name)) in virtio_net()
552 mpsslog("MIC name %s id %d\n", mic->name, mic->id); in virtio_net()
554 net_poll[NET_FD_VIRTIO_NET].fd = mic->mic_net.virtio_net_fd; in virtio_net()
556 net_poll[NET_FD_TUN].fd = mic->mic_net.tap_fd; in virtio_net()
559 if (MAP_FAILED == init_vr(mic, mic->mic_net.virtio_net_fd, in virtio_net()
563 mic->name, strerror(errno)); in virtio_net()
568 desc = get_device_desc(mic, VIRTIO_ID_NET); in virtio_net()
584 err = wait_for_card_driver(mic, in virtio_net()
585 mic->mic_net.virtio_net_fd, in virtio_net()
589 mic->name, __func__, __LINE__); in virtio_net()
609 mpsslog("%s %s %d hdr->flags 0x%x ", mic->name, in virtio_net()
615 disp_iovec(mic, copy, __func__, __LINE__); in virtio_net()
617 mic->name, __func__, __LINE__, in virtio_net()
620 spin_for_descriptors(mic, &tx_vr); in virtio_net()
624 err = mic_virtio_copy(mic, in virtio_net()
625 mic->mic_net.virtio_net_fd, &tx_vr, in virtio_net()
629 mic->name, __func__, __LINE__, in virtio_net()
633 verify_out_len(mic, &copy); in virtio_net()
635 disp_iovec(mic, copy, __func__, __LINE__); in virtio_net()
637 mic->name, __func__, __LINE__, in virtio_net()
643 disp_iovec(mic, &copy, __func__, __LINE__); in virtio_net()
644 mpsslog("%s %s %d read failed %s ", mic->name, in virtio_net()
663 err = mic_virtio_copy(mic, in virtio_net()
664 mic->mic_net.virtio_net_fd, &rx_vr, in virtio_net()
673 mic->name, __func__, __LINE__, in virtio_net()
682 verify_out_len(mic, &copy); in virtio_net()
684 disp_iovec(mic, copy, __func__, in virtio_net()
687 mic->name, __func__, __LINE__); in virtio_net()
701 disp_iovec(mic, &copy, __func__, in virtio_net()
704 mic->name, __func__, in virtio_net()
712 mic->name, __func__, __LINE__, in virtio_net()
719 mpsslog("%s: %s: POLLERR\n", __func__, mic->name); in virtio_net()
740 struct mic_info *mic = (struct mic_info *)arg; in virtio_console() local
761 printf("%s console message goes to %s\n", mic->name, pts_name); in virtio_console()
762 mpsslog("%s console message goes to %s\n", mic->name, pts_name); in virtio_console()
778 console_poll[VIRTIO_CONSOLE_FD].fd = mic->mic_console.virtio_console_fd; in virtio_console()
781 if (MAP_FAILED == init_vr(mic, mic->mic_console.virtio_console_fd, in virtio_console()
785 mic->name, strerror(errno)); in virtio_console()
790 desc = get_device_desc(mic, VIRTIO_ID_CONSOLE); in virtio_console()
802 err = wait_for_card_driver(mic, in virtio_console()
803 mic->mic_console.virtio_console_fd, in virtio_console()
807 mic->name, __func__, __LINE__); in virtio_console()
817 disp_iovec(mic, copy, __func__, __LINE__); in virtio_console()
819 mic->name, __func__, __LINE__, in virtio_console()
822 spin_for_descriptors(mic, &tx_vr); in virtio_console()
826 err = mic_virtio_copy(mic, in virtio_console()
827 mic->mic_console.virtio_console_fd, in virtio_console()
831 mic->name, __func__, __LINE__, in virtio_console()
835 verify_out_len(mic, &copy); in virtio_console()
837 disp_iovec(mic, copy, __func__, __LINE__); in virtio_console()
839 mic->name, __func__, __LINE__, in virtio_console()
845 disp_iovec(mic, &copy, __func__, __LINE__); in virtio_console()
847 mic->name, __func__, __LINE__, in virtio_console()
861 err = mic_virtio_copy(mic, in virtio_console()
862 mic->mic_console.virtio_console_fd, in virtio_console()
867 verify_out_len(mic, &copy); in virtio_console()
869 disp_iovec(mic, copy, __func__, in virtio_console()
872 mic->name, __func__, __LINE__); in virtio_console()
886 disp_iovec(mic, copy, __func__, in virtio_console()
889 mic->name, __func__, in virtio_console()
897 mic->name, __func__, __LINE__, in virtio_console()
904 mpsslog("%s: %s: POLLERR\n", __func__, mic->name); in virtio_console()
913 add_virtio_device(struct mic_info *mic, struct mic_device_desc *dd) in add_virtio_device() argument
918 snprintf(path, PATH_MAX, "/dev/vop_virtio%d", mic->id); in add_virtio_device()
933 mic->mic_net.virtio_net_fd = fd; in add_virtio_device()
934 mpsslog("Added VIRTIO_ID_NET for %s\n", mic->name); in add_virtio_device()
937 mic->mic_console.virtio_console_fd = fd; in add_virtio_device()
938 mpsslog("Added VIRTIO_ID_CONSOLE for %s\n", mic->name); in add_virtio_device()
941 mic->mic_virtblk.virtio_block_fd = fd; in add_virtio_device()
942 mpsslog("Added VIRTIO_ID_BLOCK for %s\n", mic->name); in add_virtio_device()
948 set_backend_file(struct mic_info *mic) in set_backend_file() argument
953 snprintf(buff, PATH_MAX, "%s/mpssd%03d.conf", mic_config_dir, mic->id); in set_backend_file()
973 mic->mic_virtblk.backend_file = malloc(strlen(evv) + 1); in set_backend_file()
974 if (mic->mic_virtblk.backend_file == NULL) { in set_backend_file()
975 mpsslog("%s %d can't allocate memory\n", mic->name, mic->id); in set_backend_file()
978 strcpy(mic->mic_virtblk.backend_file, evv + 1); in set_backend_file()
984 set_backend_size(struct mic_info *mic) in set_backend_size() argument
986 mic->mic_virtblk.backend_size = lseek(mic->mic_virtblk.backend, 0, in set_backend_size()
988 if (mic->mic_virtblk.backend_size < 0) { in set_backend_size()
990 mic->name, mic->mic_virtblk.backend_file); in set_backend_size()
994 mic->mic_virtblk.backend_size / SECTOR_SIZE; in set_backend_size()
995 if ((mic->mic_virtblk.backend_size % SECTOR_SIZE) != 0) in set_backend_size()
1005 open_backend(struct mic_info *mic) in open_backend() argument
1007 if (!set_backend_file(mic)) in open_backend()
1009 mic->mic_virtblk.backend = open(mic->mic_virtblk.backend_file, O_RDWR); in open_backend()
1010 if (mic->mic_virtblk.backend < 0) { in open_backend()
1011 mpsslog("%s: can't open: %s\n", mic->name, in open_backend()
1012 mic->mic_virtblk.backend_file); in open_backend()
1015 if (!set_backend_size(mic)) in open_backend()
1017 mic->mic_virtblk.backend_addr = mmap(NULL, in open_backend()
1018 mic->mic_virtblk.backend_size, in open_backend()
1020 mic->mic_virtblk.backend, 0L); in open_backend()
1021 if (mic->mic_virtblk.backend_addr == MAP_FAILED) { in open_backend()
1023 mic->name, mic->mic_virtblk.backend_file, in open_backend()
1030 close(mic->mic_virtblk.backend); in open_backend()
1032 free(mic->mic_virtblk.backend_file); in open_backend()
1038 close_backend(struct mic_info *mic) in close_backend() argument
1040 munmap(mic->mic_virtblk.backend_addr, mic->mic_virtblk.backend_size); in close_backend()
1041 close(mic->mic_virtblk.backend); in close_backend()
1042 free(mic->mic_virtblk.backend_file); in close_backend()
1046 start_virtblk(struct mic_info *mic, struct mic_vring *vring) in start_virtblk() argument
1050 mic->name); in start_virtblk()
1053 add_virtio_device(mic, &virtblk_dev_page.dd); in start_virtblk()
1054 if (MAP_FAILED == init_vr(mic, mic->mic_virtblk.virtio_block_fd, in start_virtblk()
1058 mic->name, strerror(errno)); in start_virtblk()
1065 stop_virtblk(struct mic_info *mic) in stop_virtblk() argument
1072 ret = munmap(mic->mic_virtblk.block_dp, in stop_virtblk()
1075 mpsslog("%s munmap errno %d\n", mic->name, errno); in stop_virtblk()
1076 close(mic->mic_virtblk.virtio_block_fd); in stop_virtblk()
1160 struct mic_info *mic = (struct mic_info *)arg; in virtio_block() local
1174 if (!open_backend(mic)) { /* No virtblk */ in virtio_block()
1175 for (mic->mic_virtblk.signaled = 0; in virtio_block()
1176 !mic->mic_virtblk.signaled;) in virtio_block()
1182 if (!start_virtblk(mic, &vring)) in virtio_block()
1188 mic->name, strerror(ENOMEM)); in virtio_block()
1192 block_poll.fd = mic->mic_virtblk.virtio_block_fd; in virtio_block()
1194 for (mic->mic_virtblk.signaled = 0; in virtio_block()
1195 !mic->mic_virtblk.signaled;) { in virtio_block()
1233 mic->mic_virtblk.virtio_block_fd, in virtio_block()
1238 mic->name, ret, in virtio_block()
1245 fos = mic->mic_virtblk.backend_addr + in virtio_block()
1279 mic->mic_virtblk.virtio_block_fd, in virtio_block()
1290 mic->mic_virtblk.virtio_block_fd, in virtio_block()
1301 stop_virtblk(mic); in virtio_block()
1303 close_backend(mic); in virtio_block()
1310 reset(struct mic_info *mic) in reset() argument
1314 setsysfs(mic->name, "state", "reset"); in reset()
1317 state = readsysfs(mic->name, "state"); in reset()
1321 mic->name, __func__, __LINE__, state); in reset()
1335 get_mic_shutdown_status(struct mic_info *mic, char *shutdown_status) in get_mic_shutdown_status() argument
1347 mpsslog("%s: BUG invalid status %s\n", mic->name, shutdown_status); in get_mic_shutdown_status()
1352 static int get_mic_state(struct mic_info *mic) in get_mic_state() argument
1358 state = readsysfs(mic->name, "state"); in get_mic_state()
1362 mic->name, __func__, __LINE__, state); in get_mic_state()
1377 mpsslog("%s: BUG invalid state %s\n", mic->name, state); in get_mic_state()
1385 static void mic_handle_shutdown(struct mic_info *mic) in mic_handle_shutdown() argument
1391 shutdown_status = readsysfs(mic->name, "shutdown_status"); in mic_handle_shutdown()
1397 mic->name, __func__, __LINE__, shutdown_status); in mic_handle_shutdown()
1398 switch (get_mic_shutdown_status(mic, shutdown_status)) { in mic_handle_shutdown()
1400 mic->restart = 1; in mic_handle_shutdown()
1416 mic->name, __func__, __LINE__, shutdown_status); in mic_handle_shutdown()
1417 reset(mic); in mic_handle_shutdown()
1420 static int open_state_fd(struct mic_info *mic) in open_state_fd() argument
1426 MICSYSFSDIR, mic->name, "state"); in open_state_fd()
1431 mic->name, pathname, strerror(errno)); in open_state_fd()
1435 static int block_till_state_change(int fd, struct mic_info *mic) in block_till_state_change() argument
1446 mic->name, __func__, __LINE__, strerror(errno)); in block_till_state_change()
1453 mic->name, __func__, __LINE__, strerror(errno)); in block_till_state_change()
1460 mic->name, __func__, __LINE__, strerror(errno)); in block_till_state_change()
1470 struct mic_info *mic = (struct mic_info *)arg; in mic_config() local
1473 fd = open_state_fd(mic); in mic_config()
1476 mic->name, __func__, __LINE__, strerror(errno)); in mic_config()
1481 ret = block_till_state_change(fd, mic); in mic_config()
1484 mic->name, __func__, __LINE__, strerror(errno)); in mic_config()
1488 switch (get_mic_state(mic)) { in mic_config()
1490 mic_handle_shutdown(mic); in mic_config()
1494 ret = kill(mic->pid, SIGTERM); in mic_config()
1496 mic->name, __func__, __LINE__, in mic_config()
1497 mic->pid, ret); in mic_config()
1499 ret = waitpid(mic->pid, &stat, in mic_config()
1502 mic->name, __func__, __LINE__, in mic_config()
1503 ret, mic->pid); in mic_config()
1505 if (mic->boot_on_resume) { in mic_config()
1506 setsysfs(mic->name, "state", "boot"); in mic_config()
1507 mic->boot_on_resume = 0; in mic_config()
1518 init_mic(mic); in mic_config()
1523 set_cmdline(struct mic_info *mic) in set_cmdline() argument
1534 mic->id + 1); in set_cmdline()
1536 setsysfs(mic->name, "cmdline", buffer); in set_cmdline()
1537 mpsslog("%s: Command line: \"%s\"\n", mic->name, buffer); in set_cmdline()
1538 snprintf(buffer, PATH_MAX, "172.31.%d.1", mic->id + 1); in set_cmdline()
1539 mpsslog("%s: IPADDR: \"%s\"\n", mic->name, buffer); in set_cmdline()
1543 set_log_buf_info(struct mic_info *mic) in set_log_buf_info() argument
1553 mic->name, errno); in set_log_buf_info()
1559 mic->name, errno); in set_log_buf_info()
1566 mic->name, errno); in set_log_buf_info()
1572 mpsslog("%s: __log_buf not found: %d\n", mic->name, errno); in set_log_buf_info()
1578 setsysfs(mic->name, "log_buf_addr", log_buf); in set_log_buf_info()
1579 mpsslog("%s: log_buf_addr: %s\n", mic->name, log_buf); in set_log_buf_info()
1582 mpsslog("%s: log_buf_len not found: %d\n", mic->name, errno); in set_log_buf_info()
1588 setsysfs(mic->name, "log_buf_len", log_buf); in set_log_buf_info()
1589 mpsslog("%s: log_buf_len: %s\n", mic->name, log_buf); in set_log_buf_info()
1597 struct mic_info *mic; in change_virtblk_backend() local
1599 for (mic = mic_list.next; mic != NULL; mic = mic->next) in change_virtblk_backend()
1600 mic->mic_virtblk.signaled = 1/* true */; in change_virtblk_backend()
1604 set_mic_boot_params(struct mic_info *mic) in set_mic_boot_params() argument
1606 set_log_buf_info(mic); in set_mic_boot_params()
1607 set_cmdline(mic); in set_mic_boot_params()
1613 struct mic_info *mic = (struct mic_info *)arg; in init_mic() local
1637 fd = open_state_fd(mic); in init_mic()
1640 mic->name, __func__, __LINE__, strerror(errno)); in init_mic()
1645 if (mic->restart) { in init_mic()
1647 setsysfs(mic->name, "state", buffer); in init_mic()
1649 mic->name, mic->restart); in init_mic()
1650 mic->restart = 0; in init_mic()
1654 while (block_till_state_change(fd, mic)) { in init_mic()
1656 mic->name, __func__, __LINE__, strerror(errno)); in init_mic()
1661 if (get_mic_state(mic) == MIC_BOOTING) in init_mic()
1665 mic->pid = fork(); in init_mic()
1666 switch (mic->pid) { in init_mic()
1668 add_virtio_device(mic, &virtcons_dev_page.dd); in init_mic()
1669 add_virtio_device(mic, &virtnet_dev_page.dd); in init_mic()
1670 err = pthread_create(&mic->mic_console.console_thread, NULL, in init_mic()
1671 virtio_console, mic); in init_mic()
1674 mic->name, strerror(err)); in init_mic()
1675 err = pthread_create(&mic->mic_net.net_thread, NULL, in init_mic()
1676 virtio_net, mic); in init_mic()
1679 mic->name, strerror(err)); in init_mic()
1680 err = pthread_create(&mic->mic_virtblk.block_thread, NULL, in init_mic()
1681 virtio_block, mic); in init_mic()
1684 mic->name, strerror(err)); in init_mic()
1689 mic->name, strerror(errno)); in init_mic()
1694 mic->name, mic->id, errno); in init_mic()
1697 err = pthread_create(&mic->config_thread, NULL, in init_mic()
1698 mic_config, mic); in init_mic()
1701 mic->name, strerror(err)); in init_mic()
1710 struct mic_info *mic; in start_daemon() local
1713 for (mic = mic_list.next; mic; mic = mic->next) { in start_daemon()
1714 set_mic_boot_params(mic); in start_daemon()
1715 err = pthread_create(&mic->init_thread, NULL, init_mic, mic); in start_daemon()
1718 mic->name, strerror(err)); in start_daemon()
1728 struct mic_info *mic = &mic_list; in init_mic_list() local
1739 mic->next = calloc(1, sizeof(struct mic_info)); in init_mic_list()
1740 if (mic->next) { in init_mic_list()
1741 mic = mic->next; in init_mic_list()
1742 mic->id = atoi(&file->d_name[3]); in init_mic_list()
1743 mic->name = malloc(strlen(file->d_name) + 16); in init_mic_list()
1744 if (mic->name) in init_mic_list()
1745 strcpy(mic->name, file->d_name); in init_mic_list()
1746 mpsslog("MIC name %s id %d\n", mic->name, in init_mic_list()
1747 mic->id); in init_mic_list()