Lines Matching refs:hp

361 static int	dr_copyin_iocmd(dr_handle_t *hp);
362 static int dr_copyout_iocmd(dr_handle_t *hp);
363 static int dr_copyout_errs(dr_handle_t *hp);
364 static int dr_pre_op(dr_handle_t *hp);
365 static int dr_post_op(dr_handle_t *hp);
366 static int dr_exec_op(dr_handle_t *hp);
367 static void dr_assign_board(dr_handle_t *hp);
368 static void dr_unassign_board(dr_handle_t *hp);
369 static void dr_connect(dr_handle_t *hp);
370 static int dr_disconnect(dr_handle_t *hp);
371 static void dr_dev_configure(dr_handle_t *hp);
372 static void dr_dev_release(dr_handle_t *hp);
373 static int dr_dev_unconfigure(dr_handle_t *hp);
374 static void dr_dev_cancel(dr_handle_t *hp);
375 static int dr_dev_status(dr_handle_t *hp);
376 static int dr_get_ncm(dr_handle_t *hp);
377 static int dr_pt_ioctl(dr_handle_t *hp);
378 static void dr_poweron_board(dr_handle_t *hp);
379 static void dr_poweroff_board(dr_handle_t *hp);
380 static void dr_test_board(dr_handle_t *hp);
564 dr_handle_t *hp; in dr_ioctl() local
593 hp = GETSTRUCT(dr_handle_t, 1); in dr_ioctl()
594 hp->h_bd = &softsp->boards[bd]; in dr_ioctl()
595 hp->h_err = NULL; in dr_ioctl()
596 hp->h_dev = getminor(dev); in dr_ioctl()
597 hp->h_cmd = cmd; in dr_ioctl()
598 hp->h_mode = mode; in dr_ioctl()
599 hp->h_iap = (sbd_ioctl_arg_t *)arg; in dr_ioctl()
602 rv = dr_copyin_iocmd(hp); in dr_ioctl()
604 FREESTRUCT(hp, dr_handle_t, 1); in dr_ioctl()
609 if (hp->h_sbdcmd.cmd_cm.c_id.c_name[0] != '\0') { in dr_ioctl()
610 hp->h_sbdcmd.cmd_cm.c_id.c_type = in dr_ioctl()
611 dr_dev_type_to_nt(hp->h_sbdcmd.cmd_cm.c_id.c_name); in dr_ioctl()
615 hp->h_sbdcmd.cmd_cm.c_id.c_name, in dr_ioctl()
616 hp->h_sbdcmd.cmd_cm.c_id.c_type); in dr_ioctl()
623 hp->h_devset = dr_dev2devset(&hp->h_sbdcmd.cmd_cm.c_id); in dr_ioctl()
625 switch (hp->h_cmd) { in dr_ioctl()
633 mutex_enter(&hp->h_bd->b_lock); in dr_ioctl()
643 rv = DEVSET_IN_SET(hp->h_devset, SBD_COMP_MEM, DEVSET_ANYUNIT); in dr_ioctl()
651 rv = dr_pre_op(hp); in dr_ioctl()
653 rv = dr_exec_op(hp); in dr_ioctl()
655 rv = dr_post_op(hp); in dr_ioctl()
660 if (hp->h_err != NULL) in dr_ioctl()
661 if (!(rv = dr_copyout_errs(hp))) in dr_ioctl()
665 switch (hp->h_cmd) { in dr_ioctl()
680 (void) drmach_log_sysevent(hp->h_bd->b_num, "", in dr_ioctl()
685 mutex_exit(&hp->h_bd->b_lock); in dr_ioctl()
689 if (hp->h_opts.size != 0) in dr_ioctl()
690 FREESTRUCT(hp->h_opts.copts, char, hp->h_opts.size); in dr_ioctl()
692 FREESTRUCT(hp, dr_handle_t, 1); in dr_ioctl()
886 dr_copyin_iocmd(dr_handle_t *hp) in dr_copyin_iocmd() argument
889 sbd_cmd_t *scp = &hp->h_sbdcmd; in dr_copyin_iocmd()
891 if (hp->h_iap == NULL) in dr_copyin_iocmd()
897 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyin_iocmd()
902 if (ddi_copyin((void *)hp->h_iap, (void *)&scmd32, in dr_copyin_iocmd()
903 sizeof (sbd_cmd32_t), hp->h_mode)) { in dr_copyin_iocmd()
917 switch (hp->h_cmd) { in dr_copyin_iocmd()
929 if (ddi_copyin((void *)hp->h_iap, (void *)scp, in dr_copyin_iocmd()
930 sizeof (sbd_cmd_t), hp->h_mode) != 0) { in dr_copyin_iocmd()
936 if ((hp->h_opts.size = scp->cmd_cm.c_len) != 0) { in dr_copyin_iocmd()
937 hp->h_opts.copts = GETSTRUCT(char, scp->cmd_cm.c_len + 1); in dr_copyin_iocmd()
938 ++hp->h_opts.size; in dr_copyin_iocmd()
940 (void *)hp->h_opts.copts, in dr_copyin_iocmd()
941 scp->cmd_cm.c_len, hp->h_mode) != 0) { in dr_copyin_iocmd()
950 dr_copyout_iocmd(dr_handle_t *hp) in dr_copyout_iocmd() argument
953 sbd_cmd_t *scp = &hp->h_sbdcmd; in dr_copyout_iocmd()
955 if (hp->h_iap == NULL) in dr_copyout_iocmd()
959 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyout_iocmd()
971 switch (hp->h_cmd) { in dr_copyout_iocmd()
979 if (ddi_copyout((void *)&scmd32, (void *)hp->h_iap, in dr_copyout_iocmd()
980 sizeof (sbd_cmd32_t), hp->h_mode)) { in dr_copyout_iocmd()
988 if (ddi_copyout((void *)scp, (void *)hp->h_iap, in dr_copyout_iocmd()
989 sizeof (sbd_cmd_t), hp->h_mode) != 0) { in dr_copyout_iocmd()
999 dr_copyout_errs(dr_handle_t *hp) in dr_copyout_errs() argument
1003 if (hp->h_err == NULL) in dr_copyout_errs()
1006 if (hp->h_err->e_code) { in dr_copyout_errs()
1008 f, hp->h_err->e_code, hp->h_err->e_rsc); in dr_copyout_errs()
1012 if (ddi_model_convert_from(hp->h_mode & FMODELS) == DDI_MODEL_ILP32) { in dr_copyout_errs()
1017 serr32p->e_code = hp->h_err->e_code; in dr_copyout_errs()
1018 bcopy(&hp->h_err->e_rsc[0], &serr32p->e_rsc[0], in dr_copyout_errs()
1021 (void *)&((sbd_ioctl_arg32_t *)hp->h_iap)->i_err, in dr_copyout_errs()
1022 sizeof (sbd_error32_t), hp->h_mode)) { in dr_copyout_errs()
1030 if (ddi_copyout((void *)hp->h_err, in dr_copyout_errs()
1031 (void *)&hp->h_iap->i_err, in dr_copyout_errs()
1032 sizeof (sbd_error_t), hp->h_mode)) { in dr_copyout_errs()
1038 sbd_err_clear(&hp->h_err); in dr_copyout_errs()
1049 dr_pre_op(dr_handle_t *hp) in dr_pre_op() argument
1054 dr_board_t *bp = hp->h_bd; in dr_pre_op()
1055 dr_handle_t *shp = hp; in dr_pre_op()
1058 cmd = hp->h_cmd; in dr_pre_op()
1063 hp->h_err = drmach_pre_op(cmd, bp->b_id, &hp->h_opts); in dr_pre_op()
1064 if (hp->h_err != NULL) { in dr_pre_op()
1086 dr_op_err(CE_IGNORE, hp, ESBD_INVAL, NULL); in dr_pre_op()
1094 dr_op_err(CE_IGNORE, hp, in dr_pre_op()
1115 dr_post_op(dr_handle_t *hp) in dr_post_op() argument
1119 dr_board_t *bp = hp->h_bd; in dr_post_op()
1122 cmd = hp->h_cmd; in dr_post_op()
1127 ASSERT(hp->h_err == NULL); in dr_post_op()
1129 hp->h_err = drmach_post_op(cmd, bp->b_id, &hp->h_opts); in dr_post_op()
1130 if (hp->h_err != NULL) { in dr_post_op()
1153 dr_exec_op(dr_handle_t *hp) in dr_exec_op() argument
1159 ASSERT(hp->h_err == NULL); in dr_exec_op()
1161 switch (hp->h_cmd) { in dr_exec_op()
1163 dr_assign_board(hp); in dr_exec_op()
1167 dr_unassign_board(hp); in dr_exec_op()
1171 dr_poweroff_board(hp); in dr_exec_op()
1175 dr_poweron_board(hp); in dr_exec_op()
1179 dr_test_board(hp); in dr_exec_op()
1183 dr_connect(hp); in dr_exec_op()
1187 dr_dev_configure(hp); in dr_exec_op()
1191 dr_dev_release(hp); in dr_exec_op()
1192 if (hp->h_err == NULL) in dr_exec_op()
1193 rv = dr_dev_unconfigure(hp); in dr_exec_op()
1195 dr_dev_cancel(hp); in dr_exec_op()
1199 rv = dr_disconnect(hp); in dr_exec_op()
1203 rv = dr_dev_status(hp); in dr_exec_op()
1207 hp->h_sbdcmd.cmd_getncm.g_ncm = dr_get_ncm(hp); in dr_exec_op()
1208 rv = dr_copyout_iocmd(hp); in dr_exec_op()
1212 rv = dr_pt_ioctl(hp); in dr_exec_op()
1218 f, hp->h_cmd); in dr_exec_op()
1222 if (hp->h_err != NULL) { in dr_exec_op()
1230 dr_assign_board(dr_handle_t *hp) in dr_assign_board() argument
1232 dr_board_t *bp = hp->h_bd; in dr_assign_board()
1234 hp->h_err = drmach_board_assign(bp->b_num, &bp->b_id); in dr_assign_board()
1235 if (hp->h_err == NULL) { in dr_assign_board()
1241 dr_unassign_board(dr_handle_t *hp) in dr_unassign_board() argument
1243 dr_board_t *bp = hp->h_bd; in dr_unassign_board()
1255 hp->h_err = drmach_board_unassign(bp->b_id); in dr_unassign_board()
1256 if (hp->h_err == NULL) { in dr_unassign_board()
1268 dr_poweron_board(dr_handle_t *hp) in dr_poweron_board() argument
1270 dr_board_t *bp = hp->h_bd; in dr_poweron_board()
1272 hp->h_err = drmach_board_poweron(bp->b_id); in dr_poweron_board()
1276 dr_poweroff_board(dr_handle_t *hp) in dr_poweroff_board() argument
1278 dr_board_t *bp = hp->h_bd; in dr_poweroff_board()
1280 hp->h_err = drmach_board_poweroff(bp->b_id); in dr_poweroff_board()
1284 dr_test_board(dr_handle_t *hp) in dr_test_board() argument
1286 dr_board_t *bp = hp->h_bd; in dr_test_board()
1287 hp->h_err = drmach_board_test(bp->b_id, &hp->h_opts, in dr_test_board()
1288 dr_cmd_flags(hp) & SBD_FLAG_FORCE); in dr_test_board()
1347 dr_connect(dr_handle_t *hp) in dr_connect() argument
1349 dr_board_t *bp = hp->h_bd; in dr_connect()
1363 hp->h_err = drmach_board_connect(bp->b_id, &hp->h_opts); in dr_connect()
1364 if (hp->h_err) in dr_connect()
1367 hp->h_err = dr_init_devlists(bp); in dr_connect()
1368 if (hp->h_err) in dr_connect()
1371 dr_op_err(CE_WARN, hp, ESBD_EMPTY_BD, bp->b_path); in dr_connect()
1381 dr_disconnect(dr_handle_t *hp) in dr_disconnect() argument
1385 dr_board_t *bp = hp->h_bd; in dr_disconnect()
1394 devset = hp->h_devset & DR_DEVS_PRESENT(bp) & in dr_disconnect()
1398 dr_op_err(CE_IGNORE, hp, ESBD_EMPTY_BD, bp->b_path); in dr_disconnect()
1415 hp->h_err = drmach_board_disconnect(bp->b_id, &hp->h_opts); in dr_disconnect()
1434 DRERR_SET_C(&hp->h_err, &cp->sbc_cm.sbdev_error); in dr_disconnect()
1449 DRERR_SET_C(&hp->h_err, &mp->sbm_cm.sbdev_error); in dr_disconnect()
1464 DRERR_SET_C(&hp->h_err, &ip->sbi_cm.sbdev_error); in dr_disconnect()
1468 if (hp->h_err) { in dr_disconnect()
1478 if ((hp->h_err->e_code == ESTC_MBXRPLY) || in dr_disconnect()
1479 (hp->h_err->e_code == ESTC_MBXRQST) || in dr_disconnect()
1480 (hp->h_err->e_code == ESTC_SMS_ERR_UNRECOVERABLE) || in dr_disconnect()
1481 (hp->h_err->e_code == ESTC_SMS_ERR_RECOVERABLE) || in dr_disconnect()
1482 (hp->h_err->e_code == ESTC_DEPROBE) || in dr_disconnect()
1483 (hp->h_err->e_code == EOPL_DEPROBE)) { in dr_disconnect()
1502 if ((hp->h_err->e_code == ESTC_MBXRQST) || in dr_disconnect()
1503 (hp->h_err->e_code == ESTC_SMS_ERR_RECOVERABLE) || in dr_disconnect()
1504 (hp->h_err->e_code == ESTC_DEPROBE) || in dr_disconnect()
1505 (hp->h_err->e_code == EOPL_DEPROBE)) { in dr_disconnect()
1523 if (hp->h_err == NULL && DR_DEVS_PRESENT(bp) == 0) { in dr_disconnect()
1530 hp->h_err = drmach_board_deprobe(bp->b_id); in dr_disconnect()
1532 if (hp->h_err == NULL) { in dr_disconnect()
1583 dr_dev_make_list(dr_handle_t *hp, sbd_comp_type_t type, int present_only, in dr_dev_make_list() argument
1586 dr_board_t *bp = hp->h_bd; in dr_dev_make_list()
1617 uset = DEVSET_GET_UNITSET(hp->h_devset, type); in dr_dev_make_list()
1668 dr_dev_clean_up(dr_handle_t *hp, dr_common_unit_t **list, int devnum) in dr_dev_clean_up() argument
1678 if (hp->h_err == NULL) { in dr_dev_clean_up()
1682 hp->h_err = cp->sbdev_error; in dr_dev_clean_up()
1705 dr_dev_walk(dr_handle_t *hp, sbd_comp_type_t type, int present_only, in dr_dev_walk() argument
1714 dr_dev_make_list(hp, type, present_only, &devlist, &devnum); in dr_dev_walk()
1718 rv = (*pre_op)(hp, devlist, devnum); in dr_dev_walk()
1723 (*op)(hp, devlist[n]); in dr_dev_walk()
1725 rv = (*post_op)(hp, devlist, devnum); in dr_dev_walk()
1727 (*board_op)(hp, devlist, devnum); in dr_dev_walk()
1731 dr_dev_clean_up(hp, devlist, devnum); in dr_dev_walk()
1737 dr_dev_noop(dr_handle_t *hp, dr_common_unit_t **devlist, int devnum) in dr_dev_noop() argument
1743 dr_attach_update_state(dr_handle_t *hp, in dr_attach_update_state() argument
1746 dr_board_t *bp = hp->h_bd; in dr_attach_update_state()
1779 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1780 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1781 hp->h_bd->b_cond = SBD_COND_OK; in dr_attach_update_state()
1782 hp->h_bd->b_busy = 0; in dr_attach_update_state()
1783 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1789 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1790 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1791 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1802 hp->h_bd->b_rstate = SBD_STAT_CONNECTED; in dr_attach_update_state()
1803 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_attach_update_state()
1804 hp->h_bd->b_cond = SBD_COND_OK; in dr_attach_update_state()
1805 hp->h_bd->b_busy = 0; in dr_attach_update_state()
1806 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_attach_update_state()
1816 dr_dev_configure(dr_handle_t *hp) in dr_dev_configure() argument
1820 rv = dr_dev_walk(hp, SBD_COMP_CPU, 1, in dr_dev_configure()
1827 rv = dr_dev_walk(hp, SBD_COMP_MEM, 1, in dr_dev_configure()
1835 (void) dr_dev_walk(hp, SBD_COMP_IO, 1, in dr_dev_configure()
1844 dr_release_update_state(dr_handle_t *hp, in dr_release_update_state() argument
1850 dr_board_t *bp = hp->h_bd; in dr_release_update_state()
1859 hp->h_bd->b_busy = 1; in dr_release_update_state()
1881 dr_release_done(dr_handle_t *hp, dr_common_unit_t *cp) in dr_release_done() argument
1883 _NOTE(ARGUNUSED(hp)) in dr_release_done()
1892 ASSERT(bp == hp->h_bd); in dr_release_done()
1926 dr_dev_release_mem(dr_handle_t *hp, dr_common_unit_t *dv) in dr_dev_release_mem() argument
1929 dr_release_done(hp, dv); in dr_dev_release_mem()
1933 dr_dev_release(dr_handle_t *hp) in dr_dev_release() argument
1937 hp->h_bd->b_busy = 1; in dr_dev_release()
1939 rv = dr_dev_walk(hp, SBD_COMP_CPU, 0, in dr_dev_release()
1946 rv = dr_dev_walk(hp, SBD_COMP_MEM, 0, in dr_dev_release()
1954 rv = dr_dev_walk(hp, SBD_COMP_IO, 0, in dr_dev_release()
1963 hp->h_bd->b_busy = 0; in dr_dev_release()
1968 dr_detach_update_state(dr_handle_t *hp, in dr_detach_update_state() argument
1971 dr_board_t *bp = hp->h_bd; in dr_detach_update_state()
2003 hp->h_bd->b_ostate = SBD_STAT_UNCONFIGURED; in dr_detach_update_state()
2004 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_detach_update_state()
2012 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_detach_update_state()
2015 if ((hp->h_devset & DR_DEVS_UNATTACHED(bp)) == hp->h_devset) in dr_detach_update_state()
2016 hp->h_bd->b_busy = 0; in dr_detach_update_state()
2021 dr_dev_unconfigure(dr_handle_t *hp) in dr_dev_unconfigure() argument
2023 dr_board_t *bp = hp->h_bd; in dr_dev_unconfigure()
2038 (void) dr_dev_walk(hp, SBD_COMP_IO, 0, in dr_dev_unconfigure()
2046 (void) dr_dev_walk(hp, SBD_COMP_CPU, 0, in dr_dev_unconfigure()
2052 (void) dr_dev_walk(hp, SBD_COMP_MEM, 0, in dr_dev_unconfigure()
2062 dr_dev_cancel(dr_handle_t *hp) in dr_dev_cancel() argument
2066 dr_board_t *bp = hp->h_bd; in dr_dev_cancel()
2075 devset = hp->h_devset & DR_DEVS_RELEASED(bp); in dr_dev_cancel()
2138 hp->h_bd->b_ostate = SBD_STAT_CONFIGURED; in dr_dev_cancel()
2139 hp->h_bd->b_busy = 0; in dr_dev_cancel()
2140 (void) drv_getparm(TIME, (void *)&hp->h_bd->b_time); in dr_dev_cancel()
2145 dr_dev_status(dr_handle_t *hp) in dr_dev_status() argument
2164 mode = hp->h_mode; in dr_dev_status()
2165 shp = hp; in dr_dev_status()
2167 bp = hp->h_bd; in dr_dev_status()
2184 if (hp->h_sbdcmd.cmd_cm.c_id.c_type == SBD_COMP_NONE) { in dr_dev_status()
2185 if (dr_cmd_flags(hp) & SBD_FLAG_ALLCMP) { in dr_dev_status()
2217 pbsz = (int)hp->h_sbdcmd.cmd_stat.s_nbytes; in dr_dev_status()
2255 DRERR_SET_C(&hp->h_err, &err); in dr_dev_status()
2295 if ((nstat = dr_cpu_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2301 if ((nstat = dr_mem_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2307 if ((nstat = dr_io_status(hp, devset, devstatp)) > 0) { in dr_dev_status()
2333 DR_OP_INTERNAL_ERROR(hp); in dr_dev_status()
2341 DR_OP_INTERNAL_ERROR(hp); in dr_dev_status()
2440 hp->h_sbdcmd.cmd_stat.s_statp, pbsz, mode) != 0) { in dr_dev_status()
2450 if (ddi_copyout((void *)dstatp, hp->h_sbdcmd.cmd_stat.s_statp, in dr_dev_status()
2469 dr_get_ncm(dr_handle_t *hp) in dr_get_ncm() argument
2475 devset = DR_DEVS_PRESENT(hp->h_bd); in dr_get_ncm()
2476 if (hp->h_sbdcmd.cmd_cm.c_id.c_type != SBD_COMP_NONE) in dr_get_ncm()
2477 devset &= DEVSET(hp->h_sbdcmd.cmd_cm.c_id.c_type, in dr_get_ncm()
2806 dr_op_err(int ce, dr_handle_t *hp, int code, char *fmt, ...) in dr_op_err() argument
2818 DRERR_SET_C(&hp->h_err, &err); in dr_op_err()
3038 dr_pt_try_drmach(dr_handle_t *hp) in dr_pt_try_drmach() argument
3040 dr_board_t *bp = hp->h_bd; in dr_pt_try_drmach()
3041 sbd_comp_id_t *comp_id = &hp->h_sbdcmd.cmd_cm.c_id; in dr_pt_try_drmach()
3051 dr_op_err(CE_IGNORE, hp, ESBD_INVAL, comp_id->c_name); in dr_pt_try_drmach()
3061 if (hp->h_err == NULL) in dr_pt_try_drmach()
3062 hp->h_err = drmach_passthru(id, &hp->h_opts); in dr_pt_try_drmach()
3064 return (hp->h_err == NULL ? 0 : -1); in dr_pt_try_drmach()
3068 dr_pt_ioctl(dr_handle_t *hp) in dr_pt_ioctl() argument
3078 sz = hp->h_opts.size; in dr_pt_ioctl()
3079 copts = hp->h_opts.copts; in dr_pt_ioctl()
3095 rv = (*pt_arr[cmd].pt_func)(hp); in dr_pt_ioctl()
3097 rv = dr_pt_try_drmach(hp); in dr_pt_ioctl()
3360 dr_cmd_flags(dr_handle_t *hp) in dr_cmd_flags() argument
3362 return (hp->h_sbdcmd.cmd_cm.c_flags); in dr_cmd_flags()