Lines Matching refs:hp

362 static int	dr_copyin_iocmd(dr_handle_t *hp);
363 static int dr_copyout_iocmd(dr_handle_t *hp);
364 static int dr_copyout_errs(dr_handle_t *hp);
365 static int dr_pre_op(dr_handle_t *hp);
366 static int dr_post_op(dr_handle_t *hp, int rv);
367 static int dr_exec_op(dr_handle_t *hp);
368 static void dr_assign_board(dr_handle_t *hp);
369 static void dr_unassign_board(dr_handle_t *hp);
370 static void dr_connect(dr_handle_t *hp);
371 static int dr_disconnect(dr_handle_t *hp);
372 static void dr_dev_configure(dr_handle_t *hp);
373 static void dr_dev_release(dr_handle_t *hp);
374 static int dr_dev_unconfigure(dr_handle_t *hp);
375 static void dr_dev_cancel(dr_handle_t *hp);
376 static int dr_dev_status(dr_handle_t *hp);
377 static int dr_get_ncm(dr_handle_t *hp);
378 static int dr_pt_ioctl(dr_handle_t *hp);
379 static void dr_poweron_board(dr_handle_t *hp);
380 static void dr_poweroff_board(dr_handle_t *hp);
381 static void dr_test_board(dr_handle_t *hp);
562 dr_handle_t *hp; in dr_ioctl() local
591 hp = GETSTRUCT(dr_handle_t, 1); in dr_ioctl()
592 hp->h_bd = &softsp->boards[bd]; in dr_ioctl()
593 hp->h_err = NULL; in dr_ioctl()
594 hp->h_dev = getminor(dev); in dr_ioctl()
595 hp->h_cmd = cmd; in dr_ioctl()
596 hp->h_mode = mode; in dr_ioctl()
597 hp->h_iap = (sbd_ioctl_arg_t *)arg; in dr_ioctl()
600 rv = dr_copyin_iocmd(hp); in dr_ioctl()
602 FREESTRUCT(hp, dr_handle_t, 1); in dr_ioctl()
607 if (hp->h_sbdcmd.cmd_cm.c_id.c_name[0] != '\0') { in dr_ioctl()
608 hp->h_sbdcmd.cmd_cm.c_id.c_type = in dr_ioctl()
609 dr_dev_type_to_nt(hp->h_sbdcmd.cmd_cm.c_id.c_name); in dr_ioctl()
613 hp->h_sbdcmd.cmd_cm.c_id.c_name, in dr_ioctl()
614 hp->h_sbdcmd.cmd_cm.c_id.c_type); in dr_ioctl()
621 hp->h_devset = dr_dev2devset(&hp->h_sbdcmd.cmd_cm.c_id); in dr_ioctl()
623 switch (hp->h_cmd) { in dr_ioctl()
631 mutex_enter(&hp->h_bd->b_lock); in dr_ioctl()
641 rv = DEVSET_IN_SET(hp->h_devset, SBD_COMP_MEM, DEVSET_ANYUNIT); in dr_ioctl()
649 rv = dr_pre_op(hp); in dr_ioctl()
651 rv = dr_exec_op(hp); in dr_ioctl()
652 rv = dr_post_op(hp, rv); in dr_ioctl()
658 if (hp->h_err != NULL) in dr_ioctl()
659 if (!(rv = dr_copyout_errs(hp))) in dr_ioctl()
663 switch (hp->h_cmd) { in dr_ioctl()
678 (void) drmach_log_sysevent(hp->h_bd->b_num, "", in dr_ioctl()
683 mutex_exit(&hp->h_bd->b_lock); in dr_ioctl()
687 if (hp->h_opts.size != 0) in dr_ioctl()
688 FREESTRUCT(hp->h_opts.copts, char, hp->h_opts.size); in dr_ioctl()
690 FREESTRUCT(hp, dr_handle_t, 1); in dr_ioctl()
882 dr_copyin_iocmd(dr_handle_t *hp) in dr_copyin_iocmd() argument
885 sbd_cmd_t *scp = &hp->h_sbdcmd; in dr_copyin_iocmd()
887 if (hp->h_iap == NULL) in dr_copyin_iocmd()
893 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyin_iocmd()
898 if (ddi_copyin((void *)hp->h_iap, (void *)&scmd32, in dr_copyin_iocmd()
899 sizeof (sbd_cmd32_t), hp->h_mode)) { in dr_copyin_iocmd()
913 switch (hp->h_cmd) { in dr_copyin_iocmd()
925 if (ddi_copyin((void *)hp->h_iap, (void *)scp, in dr_copyin_iocmd()
926 sizeof (sbd_cmd_t), hp->h_mode) != 0) { in dr_copyin_iocmd()
932 if ((hp->h_opts.size = scp->cmd_cm.c_len) != 0) { in dr_copyin_iocmd()
933 hp->h_opts.copts = GETSTRUCT(char, scp->cmd_cm.c_len + 1); in dr_copyin_iocmd()
934 ++hp->h_opts.size; in dr_copyin_iocmd()
936 (void *)hp->h_opts.copts, in dr_copyin_iocmd()
937 scp->cmd_cm.c_len, hp->h_mode) != 0) { in dr_copyin_iocmd()
947 dr_copyout_iocmd(dr_handle_t *hp) in dr_copyout_iocmd() argument
950 sbd_cmd_t *scp = &hp->h_sbdcmd; in dr_copyout_iocmd()
952 if (hp->h_iap == NULL) in dr_copyout_iocmd()
956 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyout_iocmd()
968 switch (hp->h_cmd) { in dr_copyout_iocmd()
976 if (ddi_copyout((void *)&scmd32, (void *)hp->h_iap, in dr_copyout_iocmd()
977 sizeof (sbd_cmd32_t), hp->h_mode)) { in dr_copyout_iocmd()
985 if (ddi_copyout((void *)scp, (void *)hp->h_iap, in dr_copyout_iocmd()
986 sizeof (sbd_cmd_t), hp->h_mode) != 0) { in dr_copyout_iocmd()
996 dr_copyout_errs(dr_handle_t *hp) in dr_copyout_errs() argument
1000 if (hp->h_err == NULL) in dr_copyout_errs()
1003 if (hp->h_err->e_code) { in dr_copyout_errs()
1005 f, hp->h_err->e_code, hp->h_err->e_rsc); in dr_copyout_errs()
1009 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyout_errs()
1014 serr32p->e_code = hp->h_err->e_code; in dr_copyout_errs()
1015 bcopy(&hp->h_err->e_rsc[0], &serr32p->e_rsc[0], in dr_copyout_errs()
1018 (void *)&((sbd_ioctl_arg32_t *)hp->h_iap)->i_err, in dr_copyout_errs()
1019 sizeof (sbd_error32_t), hp->h_mode)) { in dr_copyout_errs()
1027 if (ddi_copyout((void *)hp->h_err, in dr_copyout_errs()
1028 (void *)&hp->h_iap->i_err, in dr_copyout_errs()
1029 sizeof (sbd_error_t), hp->h_mode)) { in dr_copyout_errs()
1035 sbd_err_clear(&hp->h_err); in dr_copyout_errs()
1046 dr_pre_op(dr_handle_t *hp) in dr_pre_op() argument
1051 dr_board_t *bp = hp->h_bd; in dr_pre_op()
1052 dr_handle_t *shp = hp; in dr_pre_op()
1055 cmd = hp->h_cmd; in dr_pre_op()
1061 hp->h_err = drmach_pre_op(cmd, bp->b_id, &hp->h_opts, &devset); in dr_pre_op()
1062 if (hp->h_err != NULL) { in dr_pre_op()
1084 dr_op_err(CE_IGNORE, hp, ESBD_INVAL, NULL); in dr_pre_op()
1092 dr_op_err(CE_IGNORE, hp, in dr_pre_op()
1113 dr_post_op(dr_handle_t *hp, int rv) in dr_post_op() argument
1117 dr_board_t *bp = hp->h_bd; in dr_post_op()
1120 cmd = hp->h_cmd; in dr_post_op()
1124 err = drmach_post_op(cmd, bp->b_id, &hp->h_opts, rv); in dr_post_op()
1129 ASSERT(hp->h_err == NULL); in dr_post_op()
1130 hp->h_err = err; in dr_post_op()
1132 } else if (hp->h_err == NULL) { in dr_post_op()
1133 hp->h_err = err; in dr_post_op()
1143 dr_exec_op(dr_handle_t *hp) in dr_exec_op() argument
1149 ASSERT(hp->h_err == NULL); in dr_exec_op()
1151 switch (hp->h_cmd) { in dr_exec_op()
1153 dr_assign_board(hp); in dr_exec_op()
1157 dr_unassign_board(hp); in dr_exec_op()
1161 dr_poweroff_board(hp); in dr_exec_op()
1165 dr_poweron_board(hp); in dr_exec_op()
1169 dr_test_board(hp); in dr_exec_op()
1173 dr_connect(hp); in dr_exec_op()
1177 dr_dev_configure(hp); in dr_exec_op()
1181 dr_dev_release(hp); in dr_exec_op()
1182 if (hp->h_err == NULL) in dr_exec_op()
1183 rv = dr_dev_unconfigure(hp); in dr_exec_op()
1185 dr_dev_cancel(hp); in dr_exec_op()
1189 rv = dr_disconnect(hp); in dr_exec_op()
1193 rv = dr_dev_status(hp); in dr_exec_op()
1197 hp->h_sbdcmd.cmd_getncm.g_ncm = dr_get_ncm(hp); in dr_exec_op()
1198 rv = dr_copyout_iocmd(hp); in dr_exec_op()
1202 rv = dr_pt_ioctl(hp); in dr_exec_op()
1208 f, hp->h_cmd); in dr_exec_op()
1212 if (hp->h_err != NULL) { in dr_exec_op()
1220 dr_assign_board(dr_handle_t *hp) in dr_assign_board() argument
1222 dr_board_t *bp = hp->h_bd; in dr_assign_board()
1224 hp->h_err = drmach_board_assign(bp->b_num, &bp->b_id); in dr_assign_board()
1225 if (hp->h_err == NULL) { in dr_assign_board()
1231 dr_unassign_board(dr_handle_t *hp) in dr_unassign_board() argument
1233 dr_board_t *bp = hp->h_bd; in dr_unassign_board()
1245 hp->h_err = drmach_board_unassign(bp->b_id); in dr_unassign_board()
1246 if (hp->h_err == NULL) { in dr_unassign_board()
1258 dr_poweron_board(dr_handle_t *hp) in dr_poweron_board() argument
1260 dr_board_t *bp = hp->h_bd; in dr_poweron_board()
1262 hp->h_err = drmach_board_poweron(bp->b_id); in dr_poweron_board()
1266 dr_poweroff_board(dr_handle_t *hp) in dr_poweroff_board() argument
1268 dr_board_t *bp = hp->h_bd; in dr_poweroff_board()
1270 hp->h_err = drmach_board_poweroff(bp->b_id); in dr_poweroff_board()
1274 dr_test_board(dr_handle_t *hp) in dr_test_board() argument
1276 dr_board_t *bp = hp->h_bd; in dr_test_board()
1277 hp->h_err = drmach_board_test(bp->b_id, &hp->h_opts, in dr_test_board()
1278 dr_cmd_flags(hp) & SBD_FLAG_FORCE); in dr_test_board()
1336 dr_connect(dr_handle_t *hp) in dr_connect() argument
1338 dr_board_t *bp = hp->h_bd; in dr_connect()
1352 hp->h_err = drmach_board_connect(bp->b_id, &hp->h_opts); in dr_connect()
1353 if (hp->h_err) in dr_connect()
1356 hp->h_err = dr_init_devlists(bp); in dr_connect()
1357 if (hp->h_err) in dr_connect()
1360 dr_op_err(CE_WARN, hp, ESBD_EMPTY_BD, bp->b_path); in dr_connect()
1370 dr_disconnect(dr_handle_t *hp) in dr_disconnect() argument
1374 dr_board_t *bp = hp->h_bd; in dr_disconnect()
1383 devset = hp->h_devset & DR_DEVS_PRESENT(bp) & in dr_disconnect()
1387 dr_op_err(CE_IGNORE, hp, ESBD_EMPTY_BD, bp->b_path); in dr_disconnect()
1404 hp->h_err = drmach_board_disconnect(bp->b_id, &hp->h_opts); in dr_disconnect()
1405 if (hp->h_err && hp->h_err->e_code == EX86_WALK_DEPENDENCY) { in dr_disconnect()
1430 DRERR_SET_C(&hp->h_err, &cp->sbc_cm.sbdev_error); in dr_disconnect()
1445 DRERR_SET_C(&hp->h_err, &mp->sbm_cm.sbdev_error); in dr_disconnect()
1460 DRERR_SET_C(&hp->h_err, &ip->sbi_cm.sbdev_error); in dr_disconnect()
1465 if (hp->h_err) { in dr_disconnect()
1475 if (hp->h_err->e_code == EX86_DEPROBE) { in dr_disconnect()
1492 if (hp->h_err == NULL && DR_DEVS_PRESENT(bp) == 0) { in dr_disconnect()
1499 hp->h_err = drmach_board_deprobe(bp->b_id); in dr_disconnect()
1501 if (hp->h_err == NULL) { in dr_disconnect()
1552 dr_dev_make_list(dr_handle_t *hp, sbd_comp_type_t type, int present_only, in dr_dev_make_list() argument
1555 dr_board_t *bp = hp->h_bd; in dr_dev_make_list()
1587 uset = DEVSET_GET_UNITSET(hp->h_devset, type); in dr_dev_make_list()
1636 dr_dev_clean_up(dr_handle_t *hp, dr_common_unit_t **list, int devnum) in dr_dev_clean_up() argument
1646 if (hp->h_err == NULL) { in dr_dev_clean_up()
1650 hp->h_err = cp->sbdev_error; in dr_dev_clean_up()
1673 dr_dev_walk(dr_handle_t *hp, sbd_comp_type_t type, int present_only, in dr_dev_walk() argument
1682 dr_dev_make_list(hp, type, present_only, &devlist, &devnum); in dr_dev_walk()
1686 rv = (*pre_op)(hp, devlist, devnum); in dr_dev_walk()
1691 (*op)(hp, devlist[n]); in dr_dev_walk()
1693 rv = (*post_op)(hp, devlist, devnum); in dr_dev_walk()
1695 (*board_op)(hp, devlist, devnum); in dr_dev_walk()
1699 dr_dev_clean_up(hp, devlist, devnum); in dr_dev_walk()
1705 dr_dev_noop(dr_handle_t *hp, dr_common_unit_t **devlist, int devnum) in dr_dev_noop() argument
1711 dr_attach_update_state(dr_handle_t *hp, in dr_attach_update_state() argument
1714 dr_board_t *bp = hp->h_bd; in dr_attach_update_state()
1747 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1748 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1749 hp->h_bd->b_cond = SBD_COND_OK; in dr_attach_update_state()
1750 hp->h_bd->b_busy = 0; in dr_attach_update_state()
1751 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1757 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1758 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1759 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1770 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1771 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1772 hp->h_bd->b_cond = SBD_COND_OK; in dr_attach_update_state()
1773 hp->h_bd->b_busy = 0; in dr_attach_update_state()
1774 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1784 dr_dev_configure(dr_handle_t *hp) in dr_dev_configure() argument
1788 rv = dr_dev_walk(hp, SBD_COMP_CPU, 1, in dr_dev_configure()
1795 rv = dr_dev_walk(hp, SBD_COMP_MEM, 1, in dr_dev_configure()
1803 (void) dr_dev_walk(hp, SBD_COMP_IO, 1, in dr_dev_configure()
1812 dr_release_update_state(dr_handle_t *hp, in dr_release_update_state() argument
1818 dr_board_t *bp = hp->h_bd; in dr_release_update_state()
1827 hp->h_bd->b_busy = 1; in dr_release_update_state()
1849 dr_release_done(dr_handle_t *hp, dr_common_unit_t *cp) in dr_release_done() argument
1851 _NOTE(ARGUNUSED(hp)) in dr_release_done()
1860 ASSERT(bp == hp->h_bd); in dr_release_done()
1894 dr_dev_release_mem(dr_handle_t *hp, dr_common_unit_t *dv) in dr_dev_release_mem() argument
1897 dr_release_done(hp, dv); in dr_dev_release_mem()
1901 dr_dev_release(dr_handle_t *hp) in dr_dev_release() argument
1905 hp->h_bd->b_busy = 1; in dr_dev_release()
1907 rv = dr_dev_walk(hp, SBD_COMP_CPU, 0, in dr_dev_release()
1914 rv = dr_dev_walk(hp, SBD_COMP_MEM, 0, in dr_dev_release()
1922 rv = dr_dev_walk(hp, SBD_COMP_IO, 0, in dr_dev_release()
1931 hp->h_bd->b_busy = 0; in dr_dev_release()
1936 dr_detach_update_state(dr_handle_t *hp, in dr_detach_update_state() argument
1939 dr_board_t *bp = hp->h_bd; in dr_detach_update_state()
1971 hp->h_bd->b_ostate = SBD_STAT_UNCONFIGURED; in dr_detach_update_state()
1972 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_detach_update_state()
1980 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_detach_update_state()
1983 if ((hp->h_devset & DR_DEVS_UNATTACHED(bp)) == hp->h_devset) in dr_detach_update_state()
1984 hp->h_bd->b_busy = 0; in dr_detach_update_state()
1989 dr_dev_unconfigure(dr_handle_t *hp) in dr_dev_unconfigure() argument
1991 dr_board_t *bp = hp->h_bd; in dr_dev_unconfigure()
2006 (void) dr_dev_walk(hp, SBD_COMP_IO, 0, in dr_dev_unconfigure()
2014 (void) dr_dev_walk(hp, SBD_COMP_CPU, 0, in dr_dev_unconfigure()
2020 (void) dr_dev_walk(hp, SBD_COMP_MEM, 0, in dr_dev_unconfigure()
2030 dr_dev_cancel(dr_handle_t *hp) in dr_dev_cancel() argument
2034 dr_board_t *bp = hp->h_bd; in dr_dev_cancel()
2043 devset = hp->h_devset & DR_DEVS_RELEASED(bp); in dr_dev_cancel()
2106 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_dev_cancel()
2107 hp->h_bd->b_busy = 0; in dr_dev_cancel()
2108 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_dev_cancel()
2113 dr_dev_status(dr_handle_t *hp) in dr_dev_status() argument
2132 mode = hp->h_mode; in dr_dev_status()
2133 shp = hp; in dr_dev_status()
2135 bp = hp->h_bd; in dr_dev_status()
2152 if (hp->h_sbdcmd.cmd_cm.c_id.c_type == SBD_COMP_NONE) { in dr_dev_status()
2153 if (dr_cmd_flags(hp) & SBD_FLAG_ALLCMP) { in dr_dev_status()
2185 pbsz = (int)hp->h_sbdcmd.cmd_stat.s_nbytes; in dr_dev_status()
2223 DRERR_SET_C(&hp->h_err, &err); in dr_dev_status()
2263 if ((nstat = dr_cpu_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2269 if ((nstat = dr_mem_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2275 if ((nstat = dr_io_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2300 DR_OP_INTERNAL_ERROR(hp); in dr_dev_status()
2308 DR_OP_INTERNAL_ERROR(hp); in dr_dev_status()
2407 hp->h_sbdcmd.cmd_stat.s_statp, pbsz, mode) != 0) { in dr_dev_status()
2417 if (ddi_copyout((void *)dstatp, hp->h_sbdcmd.cmd_stat.s_statp, in dr_dev_status()
2436 dr_get_ncm(dr_handle_t *hp) in dr_get_ncm() argument
2442 devset = DR_DEVS_PRESENT(hp->h_bd); in dr_get_ncm()
2443 if (hp->h_sbdcmd.cmd_cm.c_id.c_type != SBD_COMP_NONE) in dr_get_ncm()
2444 devset &= DEVSET(hp->h_sbdcmd.cmd_cm.c_id.c_type, in dr_get_ncm()
2776 dr_op_err(int ce, dr_handle_t *hp, int code, char *fmt, ...) in dr_op_err() argument
2788 DRERR_SET_C(&hp->h_err, &err); in dr_op_err()
2995 dr_pt_try_drmach(dr_handle_t *hp) in dr_pt_try_drmach() argument
2997 dr_board_t *bp = hp->h_bd; in dr_pt_try_drmach()
2998 sbd_comp_id_t *comp_id = &hp->h_sbdcmd.cmd_cm.c_id; in dr_pt_try_drmach()
3008 dr_op_err(CE_IGNORE, hp, ESBD_INVAL, comp_id->c_name); in dr_pt_try_drmach()
3018 if (hp->h_err == NULL) in dr_pt_try_drmach()
3019 hp->h_err = drmach_passthru(id, &hp->h_opts); in dr_pt_try_drmach()
3021 return (hp->h_err == NULL ? 0 : -1); in dr_pt_try_drmach()
3025 dr_pt_ioctl(dr_handle_t *hp) in dr_pt_ioctl() argument
3035 sz = hp->h_opts.size; in dr_pt_ioctl()
3036 copts = hp->h_opts.copts; in dr_pt_ioctl()
3052 rv = (*pt_arr[cmd].pt_func)(hp); in dr_pt_ioctl()
3054 rv = dr_pt_try_drmach(hp); in dr_pt_ioctl()
3327 dr_cmd_flags(dr_handle_t *hp) in dr_cmd_flags() argument
3329 return (hp->h_sbdcmd.cmd_cm.c_flags); in dr_cmd_flags()