Lines Matching +full:num +full:- +full:cs
155 * Recall that non-zero return value terminates operation, however
174 default: return (-1); in _cmd2index()
308 * multiple boards. Users wanting multi-board access
448 * Alternative would be to dynamically fini and re-init the in _init()
538 switch (hp->h_cmd) { in sbd_ioctl()
549 switch (hp->h_cmd) { in sbd_ioctl()
558 mutex_enter(&SBDH2BD(hp->h_sbd)->sb_mutex); in sbd_ioctl()
570 * been set at this point - it is 0. in sbd_ioctl()
572 rv = DEVSET_IN_SET(HD2MACHHD(hp)->sh_devset, in sbd_ioctl()
593 switch (hp->h_cmd) { in sbd_ioctl()
599 mutex_exit(&SBDH2BD(hp->h_sbd)->sb_mutex); in sbd_ioctl()
620 sbd_instances--; in sbd_setup_instance()
626 "sbd:%s:%d: failed to alloc soft-state", f, instance); in sbd_setup_instance()
628 sbd_instances--; in sbd_setup_instance()
636 "sbd:%s:%d: failed to get soft-state instance", in sbd_setup_instance()
649 softsp->sbd_boardlist = (void *)sbd_boardlist; in sbd_setup_instance()
650 softsp->max_boards = max_boards; in sbd_setup_instance()
651 softsp->wnode = wnode; in sbd_setup_instance()
663 sbd_instances--; in sbd_setup_instance()
680 (void) sbd_dealloc_instance((sbd_board_t *)softsp->sbd_boardlist, in sbd_teardown_instance()
681 softsp->max_boards); in sbd_teardown_instance()
684 sbd_instances--; in sbd_teardown_instance()
693 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_exec_op()
696 switch (hp->h_cmd) { in sbd_exec_op()
721 mutex_enter(&sbp->sb_slock); in sbd_exec_op()
724 mutex_exit(&sbp->sb_slock); in sbd_exec_op()
764 iap->h_dev = hp->h_dev; in sbd_exec_op()
765 iap->h_cmd = hp->h_cmd; in sbd_exec_op()
766 iap->h_iap = (intptr_t)hp->h_iap; in sbd_exec_op()
767 iap->h_mode = hp->h_mode; in sbd_exec_op()
772 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_exec_op()
773 ep->e_errno = rv; in sbd_exec_op()
781 cmn_err(CE_WARN, "sbd:%s: unknown command (%d)", f, hp->h_cmd); in sbd_exec_op()
795 sbd_board_t *sbp = hp ? SBDH2BD(hp->h_sbd) : NULL; in sbd_get_devtype()
815 devlist = sbp->sb_devlist[NIX(SBD_COMP_MEM)]; in sbd_get_devtype()
820 devlist = sbp->sb_devlist[NIX(SBD_COMP_CPU)]; in sbd_get_devtype()
825 devlist = sbp->sb_devlist[NIX(SBD_COMP_IO)]; in sbd_get_devtype()
856 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_configure()
883 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_dev_configure()
930 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_release()
940 sbp->sb_busy = 1; in sbd_dev_release()
959 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_dev_release()
982 sbp->sb_busy = 0; in sbd_dev_release()
1001 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_unconfigure()
1019 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_dev_unconfigure()
1037 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_dev_unconfigure()
1060 detach_err = -1; in sbd_dev_unconfigure()
1110 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_attach_cpu()
1128 rv = -1; in sbd_attach_cpu()
1129 SBD_GET_PERR(hdp->h_err, ep); in sbd_attach_cpu()
1138 ASSERT(sbp->sb_cpupath[unit] != NULL); in sbd_attach_cpu()
1139 pathname = sbp->sb_cpupath[unit]; in sbd_attach_cpu()
1188 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_detach_cpu()
1196 spe = hdp->h_err; in sbd_detach_cpu()
1206 SBD_SET_ERRSTR(ep, sbp->sb_cpupath[unit]); in sbd_detach_cpu()
1227 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_detach_mem()
1235 return (-1); in sbd_detach_mem()
1244 if (mp->sbm_dip[i] == NULL) in sbd_detach_mem()
1246 ASSERT(e_ddi_branch_held(mp->sbm_dip[i])); in sbd_detach_mem()
1247 mutex_enter(&sbp->sb_slock); in sbd_detach_mem()
1248 rv = e_ddi_branch_unconfigure(mp->sbm_dip[i], &fdip, in sbd_detach_mem()
1250 mutex_exit(&sbp->sb_slock); in sbd_detach_mem()
1253 * If non-NULL, fdip is returned held and must be in sbd_detach_mem()
1260 sbd_errno_decode(rv, ep, mp->sbm_dip[i]); in sbd_detach_mem()
1271 * MDR memory support - somewhat disabled for now.
1272 * UNSAFE unsafe driver code - I don't think we want this.
1284 sbd_state_t cs; in rstate_cvt() local
1288 cs = SBD_STAT_EMPTY; in rstate_cvt()
1292 cs = SBD_STAT_DISCONNECTED; in rstate_cvt()
1300 cs = SBD_STAT_CONNECTED; in rstate_cvt()
1303 cs = SBD_STAT_NONE; in rstate_cvt()
1307 return (cs); in rstate_cvt()
1314 sbd_state_t cs; in ostate_cvt() local
1322 cs = SBD_STAT_UNCONFIGURED; in ostate_cvt()
1328 cs = SBD_STAT_CONFIGURED; in ostate_cvt()
1331 cs = SBD_STAT_NONE; in ostate_cvt()
1335 return (cs); in ostate_cvt()
1348 return (-1); in sbd_dealloc_instance()
1366 int unit = cid->c_unit; in sbd_dev2devset()
1368 switch (cid->c_type) { in sbd_dev2devset()
1399 devset = DEVSET(cid->c_type, 0); in sbd_dev2devset()
1403 devset = DEVSET(cid->c_type, unit); in sbd_dev2devset()
1412 devset = DEVSET(cid->c_type, unit); in sbd_dev2devset()
1438 sbd_board_t *sbp = softsp->sbd_boardlist; in sbd_get_handle()
1442 ASSERT(board < softsp->max_boards); in sbd_get_handle()
1446 * Brand-new handle. in sbd_get_handle()
1449 shp->sh_arg = (void *)arg; in sbd_get_handle()
1453 ep = &shp->sh_err; in sbd_get_handle()
1455 hp->h_err = ep; in sbd_get_handle()
1456 hp->h_sbd = (void *) sbp; in sbd_get_handle()
1457 hp->h_dev = iap->dev; in sbd_get_handle()
1458 hp->h_cmd = iap->cmd; in sbd_get_handle()
1459 hp->h_mode = iap->mode; in sbd_get_handle()
1463 shp->sh_next = sbp->sb_handle; in sbd_get_handle()
1464 sbp->sb_handle = shp; in sbd_get_handle()
1473 ep->e_errno = 0; in sbd_init_err()
1474 ep->e_code = 0; in sbd_init_err()
1475 ep->e_rsc[0] = '\0'; in sbd_init_err()
1497 return (-1); in sbd_set_err_in_hdl()
1510 sbp = SBDH2BD(hp->h_sbd); in sbd_release_handle()
1518 for (shpp = &sbp->sb_handle; (*shpp) && ((*shpp) != shp); in sbd_release_handle()
1519 shpp = &((*shpp)->sh_next)) in sbd_release_handle()
1524 "sbd:%s: handle not found in board %d", f, sbp->sb_num); in sbd_release_handle()
1527 *shpp = shp->sh_next; in sbd_release_handle()
1531 if (hp->h_opts.copts != NULL) { in sbd_release_handle()
1532 FREESTRUCT(hp->h_opts.copts, char, hp->h_opts.size); in sbd_release_handle()
1544 hdp->h_err = kmem_zalloc(sizeof (sbd_error_t), KM_SLEEP); in sbd_get_sbdp_handle()
1546 hdp->h_board = -1; in sbd_get_sbdp_handle()
1547 hdp->h_wnode = -1; in sbd_get_sbdp_handle()
1549 hdp->h_board = sbp->sb_num; in sbd_get_sbdp_handle()
1550 hdp->h_wnode = sbp->sb_wnode; in sbd_get_sbdp_handle()
1554 hdp->h_flags = 0; in sbd_get_sbdp_handle()
1555 hdp->h_opts = NULL; in sbd_get_sbdp_handle()
1557 hdp->h_flags = SBD_2_SBDP_FLAGS(hp->h_flags); in sbd_get_sbdp_handle()
1558 hdp->h_opts = &hp->h_opts; in sbd_get_sbdp_handle()
1570 kmem_free(hdp->h_err, sizeof (sbd_error_t)); in sbd_release_sbdp_handle()
1577 if ((hdp != NULL) && (hdp->h_err != NULL)) { in sbd_reset_error_sbdph()
1578 bzero(hdp->h_err, sizeof (sbd_error_t)); in sbd_reset_error_sbdph()
1602 "sbd:%s: (32bit) failed to copyin sbdcmd-struct", in sbd_copyin_ioarg()
1606 cmdp->cmd_cm.c_id.c_type = scmd32.cmd_cm.c_id.c_type; in sbd_copyin_ioarg()
1607 cmdp->cmd_cm.c_id.c_unit = scmd32.cmd_cm.c_id.c_unit; in sbd_copyin_ioarg()
1609 &cmdp->cmd_cm.c_id.c_name[0], OBP_MAXPROPNAME); in sbd_copyin_ioarg()
1610 cmdp->cmd_cm.c_flags = scmd32.cmd_cm.c_flags; in sbd_copyin_ioarg()
1611 cmdp->cmd_cm.c_len = scmd32.cmd_cm.c_len; in sbd_copyin_ioarg()
1612 cmdp->cmd_cm.c_opts = (caddr_t)(uintptr_t)scmd32.cmd_cm.c_opts; in sbd_copyin_ioarg()
1623 cmdp->cmd_stat.s_nbytes = scmd32.cmd_stat.s_nbytes; in sbd_copyin_ioarg()
1624 cmdp->cmd_stat.s_statp = in sbd_copyin_ioarg()
1644 (hp->h_opts.size = cmdp->cmd_cm.c_len) > 0) { in sbd_copyin_ioarg()
1645 hp->h_opts.size += 1; /* For null termination of string. */ in sbd_copyin_ioarg()
1646 hp->h_opts.copts = GETSTRUCT(char, hp->h_opts.size); in sbd_copyin_ioarg()
1647 if (ddi_copyin((void *)cmdp->cmd_cm.c_opts, in sbd_copyin_ioarg()
1648 (void *)hp->h_opts.copts, in sbd_copyin_ioarg()
1649 cmdp->cmd_cm.c_len, hp->h_mode) != 0) { in sbd_copyin_ioarg()
1671 scmd32.cmd_cm.c_id.c_type = scp->cmd_cm.c_id.c_type; in sbd_copyout_ioarg()
1672 scmd32.cmd_cm.c_id.c_unit = scp->cmd_cm.c_id.c_unit; in sbd_copyout_ioarg()
1673 bcopy(scp->cmd_cm.c_id.c_name, in sbd_copyout_ioarg()
1676 scmd32.cmd_cm.c_flags = scp->cmd_cm.c_flags; in sbd_copyout_ioarg()
1680 scmd32.cmd_getncm.g_ncm = scp->cmd_getncm.g_ncm; in sbd_copyout_ioarg()
1719 err32.e_code = iap->ie_code; in sbd_copyout_errs()
1720 (void) strcpy(err32.e_rsc, iap->ie_rsc); in sbd_copyout_errs()
1722 if (ddi_copyout((void *)&err32, (void *)&uap32->i_err, in sbd_copyout_errs()
1730 if (ddi_copyout((void *)&iap->i_err, (void *)&uap->i_err, in sbd_copyout_errs()
1774 if (transp->x_op[s].x_rv) { in sbd_check_transition()
1787 if (transp->x_op[s].x_rv) { in sbd_check_transition()
1800 if (transp->x_op[s].x_rv) { in sbd_check_transition()
1822 * pre-op entry point must SET_ERRNO(), if needed.
1823 * Return value of non-zero indicates failure.
1831 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_pre_op()
1837 cmd = hp->h_cmd; in sbd_pre_op()
1838 devset = shp->sh_devset; in sbd_pre_op()
1851 if (!(hp->h_mode & FWRITE)) { in sbd_pre_op()
1853 return (-1); in sbd_pre_op()
1860 hp->h_iap = GETSTRUCT(sbd_ioctl_arg_t, 1); in sbd_pre_op()
1861 rv = sbd_copyin_ioarg(hp, hp->h_mode, cmd, in sbd_pre_op()
1862 (sbd_cmd_t *)hp->h_iap, shp->sh_arg); in sbd_pre_op()
1865 FREESTRUCT(hp->h_iap, sbd_ioctl_arg_t, 1); in sbd_pre_op()
1866 hp->h_iap = NULL; in sbd_pre_op()
1868 return (-1); in sbd_pre_op()
1870 cmdp = (sbd_cmd_t *)hp->h_iap; in sbd_pre_op()
1871 if (cmdp->cmd_cm.c_id.c_name[0] != '\0') { in sbd_pre_op()
1873 cmdp->cmd_cm.c_id.c_type = in sbd_pre_op()
1874 SBD_COMP(sbd_name_to_idx(cmdp->cmd_cm.c_id.c_name)); in sbd_pre_op()
1875 if (cmdp->cmd_cm.c_id.c_type == SBD_COMP_MEM) { in sbd_pre_op()
1876 if (cmdp->cmd_cm.c_id.c_unit == -1) in sbd_pre_op()
1877 cmdp->cmd_cm.c_id.c_unit = 0; in sbd_pre_op()
1880 devset = shp->sh_orig_devset = shp->sh_devset = in sbd_pre_op()
1881 sbd_dev2devset(&cmdp->cmd_cm.c_id); in sbd_pre_op()
1884 FREESTRUCT(hp->h_iap, sbd_ioctl_arg_t, 1); in sbd_pre_op()
1885 hp->h_iap = NULL; in sbd_pre_op()
1886 return (-1); in sbd_pre_op()
1893 hp->h_flags |= SBD_FLAG_DEVI_FORCE; in sbd_pre_op()
1895 if (cmdp->cmd_cm.c_flags & SBD_FLAG_FORCE) in sbd_pre_op()
1896 hp->h_flags |= SBD_IOCTL_FLAG_FORCE; in sbd_pre_op()
1901 if (!serr && ((t = CMD2INDEX(cmd)) != -1)) { in sbd_pre_op()
1906 ASSERT(transp->x_cmd == cmd); in sbd_pre_op()
1915 serr = -1; in sbd_pre_op()
1922 SBD_SET_ERRNO(ep, transp->x_op[state_err].x_err); in sbd_pre_op()
1923 serr = transp->x_op[state_err].x_rv; in sbd_pre_op()
1939 shp->sh_devset = devset; in sbd_pre_op()
1943 if (serr && !rv && hp->h_iap) { in sbd_pre_op()
1954 SBD_SET_IOCTL_ERR(&hp->h_iap->i_err, ep->e_code, ep->e_rsc); in sbd_pre_op()
1955 (void) sbd_copyout_errs(hp->h_mode, hp->h_iap, shp->sh_arg); in sbd_pre_op()
1956 FREESTRUCT(hp->h_iap, sbd_ioctl_arg_t, 1); in sbd_pre_op()
1957 hp->h_iap = NULL; in sbd_pre_op()
1958 rv = -1; in sbd_pre_op()
1970 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_op()
1972 cmd = hp->h_cmd; in sbd_post_op()
1979 sbp->sb_time = gethrestime_sec(); in sbd_post_op()
1990 if (shp->sh_arg != NULL) { in sbd_post_op()
1994 SBD_SET_IOCTL_ERR(&hp->h_iap->i_err, ep->e_code, in sbd_post_op()
1995 ep->e_rsc); in sbd_post_op()
1997 (void) sbd_copyout_errs(hp->h_mode, hp->h_iap, in sbd_post_op()
1998 shp->sh_arg); in sbd_post_op()
2001 if (hp->h_iap != NULL) { in sbd_post_op()
2002 FREESTRUCT(hp->h_iap, sbd_ioctl_arg_t, 1); in sbd_post_op()
2003 hp->h_iap = NULL; in sbd_post_op()
2016 sbp = SBDH2BD(hp->h_sbd); in sbd_probe_board()
2019 PR_ALL("%s for board %d", f, sbp->sb_num); in sbd_probe_board()
2027 SBD_GET_PERR(hdp->h_err, ep); in sbd_probe_board()
2034 mutex_enter(&sbp->sb_flags_mutex); in sbd_probe_board()
2035 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_probe_board()
2036 mutex_exit(&sbp->sb_flags_mutex); in sbd_probe_board()
2038 SBD_INJECT_ERR(SBD_PROBE_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_probe_board()
2056 sbp = SBDH2BD(hp->h_sbd); in sbd_deprobe_board()
2063 SBD_GET_PERR(hdp->h_err, ep); in sbd_deprobe_board()
2066 mutex_enter(&sbp->sb_flags_mutex); in sbd_deprobe_board()
2067 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_deprobe_board()
2068 mutex_exit(&sbp->sb_flags_mutex); in sbd_deprobe_board()
2070 SBD_INJECT_ERR(SBD_DEPROBE_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_deprobe_board()
2116 *unitp = -1; in get_node_type()
2121 if (sbdp_get_board_num(hdp, dip) != sbp->sb_num) { in get_node_type()
2127 * sbdp_get_unit_num will return (-1) for cmp as there in get_node_type()
2154 if (unit == -1) { in get_node_type()
2196 sbp = wp->sbp; in sbd_setup_devlists()
2203 pathname = sbp->sb_cpupath[unit]; in sbd_setup_devlists()
2207 pathname = sbp->sb_mempath[unit]; in sbd_setup_devlists()
2211 pathname = sbp->sb_iopath[unit]; in sbd_setup_devlists()
2234 devlist = sbp->sb_devlist[NIX(nodetype)]; in sbd_setup_devlists()
2245 * as one. This is the case for memory-controller nodes. in sbd_setup_devlists()
2248 sbp->sb_ndev++; in sbd_setup_devlists()
2254 ASSERT(wp->nmc < SBD_NUM_MC_PER_BOARD); in sbd_setup_devlists()
2255 mp->sbm_dip[wp->nmc++] = dip; in sbd_setup_devlists()
2287 devlist = sbp->sb_devlist[NIX(SBD_COMP_MEM)]; in sbd_init_mem_devlists()
2291 mc_dip = mp->sbm_dip[0]; in sbd_init_mem_devlists()
2313 ASSERT(sbp->sb_ndev != 0); in sbd_init_mem_devlists()
2315 sbp->sb_ndev--; in sbd_init_mem_devlists()
2319 mp->sbm_dip[i] = NULL; in sbd_init_mem_devlists()
2328 mp->sbm_cm.sbdev_dip = mc_dip; in sbd_init_mem_devlists()
2338 mc_dip = mp->sbm_dip[i]; in sbd_init_mem_devlists()
2345 sbp->sb_num, i); in sbd_init_mem_devlists()
2349 mp->sbm_cm.sbdev_dip = mc_dip; in sbd_init_mem_devlists()
2397 PR_ALL("%s (board = %d)...\n", f, sbp->sb_num); in sbd_init_devlists()
2401 SBD_DEVS_DISCONNECT(sbp, (uint_t)-1); in sbd_init_devlists()
2408 sbp->sb_devlist[NIX(SBD_COMP_MEM)][i] = NULL; in sbd_init_devlists()
2410 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2411 dp->u_common.sbdev_unum = i; in sbd_init_devlists()
2412 dp->u_common.sbdev_type = SBD_COMP_MEM; in sbd_init_devlists()
2418 mp->sbm_dip[i] = NULL; in sbd_init_devlists()
2422 sbp->sb_devlist[NIX(SBD_COMP_CPU)][i] = NULL; in sbd_init_devlists()
2424 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2425 dp->u_common.sbdev_unum = i; in sbd_init_devlists()
2426 dp->u_common.sbdev_type = SBD_COMP_CPU; in sbd_init_devlists()
2429 sbp->sb_devlist[NIX(SBD_COMP_IO)][i] = NULL; in sbd_init_devlists()
2431 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2432 dp->u_common.sbdev_unum = i; in sbd_init_devlists()
2433 dp->u_common.sbdev_type = SBD_COMP_IO; in sbd_init_devlists()
2436 wp->sbp = sbp; in sbd_init_devlists()
2437 wp->nmc = 0; in sbd_init_devlists()
2438 sbp->sb_ndev = 0; in sbd_init_devlists()
2443 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_init_devlists()
2448 ddi_walk_devs(sbp->sb_topdip, sbd_setup_devlists, (void *) wp); in sbd_init_devlists()
2458 if (sbp->sb_ndev == 0) { in sbd_init_devlists()
2459 sbp->sb_memaccess_ok = 0; in sbd_init_devlists()
2460 return (sbp->sb_ndev); in sbd_init_devlists()
2467 sbp->sb_memaccess_ok = 1; in sbd_init_devlists()
2479 if (sbp->sb_memaccess_ok) { in sbd_init_devlists()
2483 sbp->sb_num); in sbd_init_devlists()
2486 return (sbp->sb_ndev); in sbd_init_devlists()
2508 dip = sbp->sb_devlist[NIX(SBD_COMP_CPU)][unit]; in sbd_init_cpu_unit()
2516 cp->sbc_cpu_id = cpuid; in sbd_init_cpu_unit()
2519 cp->sbc_cpu_impl = sbdp_cpu_get_impl(hdp, dip); in sbd_init_cpu_unit()
2521 cp->sbc_cpu_impl = -1; in sbd_init_cpu_unit()
2525 cp->sbc_cpu_flags = cpu[cpuid]->cpu_flags; in sbd_init_cpu_unit()
2527 cp->sbc_cpu_flags = CPU_OFFLINE | CPU_POWEROFF; in sbd_init_cpu_unit()
2532 cp->sbc_cm.sbdev_cond = sbd_get_comp_cond(dip); in sbd_init_cpu_unit()
2554 sbp = SBDH2BD(hp->h_sbd); in sbd_connect()
2556 PR_ALL("%s board %d\n", f, sbp->sb_num); in sbd_connect()
2572 f, sbp->sb_num); in sbd_connect()
2579 * Initialize mem-unit section of board structure. in sbd_connect()
2593 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_connect()
2594 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_connect()
2595 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_connect()
2596 SBD_INJECT_ERR(SBD_CONNECT_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_connect()
2611 sbp = SBDH2BD(hp->h_sbd); in sbd_disconnect()
2617 devset = HD2MACHHD(hp)->sh_devset & SBD_DEVS_PRESENT(sbp) & in sbd_disconnect()
2623 * Update per-device state transitions. in sbd_disconnect()
2660 sbp->sb_rstate = SBD_STAT_DISCONNECTED; in sbd_disconnect()
2661 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_disconnect()
2662 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_disconnect()
2663 SBD_INJECT_ERR(SBD_DISCONNECT_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_disconnect()
2668 f, sbp->sb_num); in sbd_disconnect()
2669 return (-1); in sbd_disconnect()
2679 sbp = SBDH2BD(hp->h_sbd); in sbd_test_board()
2681 PR_ALL("sbd_test_board: board %d\n", sbp->sb_num); in sbd_test_board()
2686 if (sbdp_test_board(hdp, &hp->h_opts) != 0) { in sbd_test_board()
2689 SBD_GET_PERR(hdp->h_err, ep); in sbd_test_board()
2692 SBD_INJECT_ERR(SBD_TEST_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_test_board()
2704 sbp = SBDH2BD(hp->h_sbd); in sbd_assign_board()
2706 PR_ALL("sbd_assign_board: board %d\n", sbp->sb_num); in sbd_assign_board()
2713 SBD_GET_PERR(hdp->h_err, ep); in sbd_assign_board()
2716 SBD_INJECT_ERR(SBD_ASSIGN_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_assign_board()
2728 sbp = SBDH2BD(hp->h_sbd); in sbd_unassign_board()
2730 PR_ALL("sbd_unassign_board: board %d\n", sbp->sb_num); in sbd_unassign_board()
2737 SBD_GET_PERR(hdp->h_err, ep); in sbd_unassign_board()
2740 SBD_INJECT_ERR(SBD_ASSIGN_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_unassign_board()
2752 sbp = SBDH2BD(hp->h_sbd); in sbd_poweron_board()
2754 PR_ALL("sbd_poweron_board: %d\n", sbp->sb_num); in sbd_poweron_board()
2761 SBD_GET_PERR(hdp->h_err, ep); in sbd_poweron_board()
2764 SBD_INJECT_ERR(SBD_POWERON_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_poweron_board()
2776 sbp = SBDH2BD(hp->h_sbd); in sbd_poweroff_board()
2778 PR_ALL("sbd_poweroff_board: %d\n", sbp->sb_num); in sbd_poweroff_board()
2785 SBD_GET_PERR(hdp->h_err, ep); in sbd_poweroff_board()
2788 SBD_INJECT_ERR(SBD_POWEROFF_BOARD_PSEUDO_ERR, hp->h_err, EIO, in sbd_poweroff_board()
2811 devlist = sbp->sb_devlist[NIX(nodetype)]; in sbd_get_devlist()
2859 if (ut == -1) { in sbd_get_devlist()
2860 SBD_GET_PERR(hdp->h_err, ep); in sbd_get_devlist()
2863 i, ep->e_code, ep->e_errno); in sbd_get_devlist()
2903 sbp = SBDH2BD(hp->h_sbd); in sbd_get_attach_devlist()
2904 devset = HD2MACHHD(hp)->sh_devset; in sbd_get_attach_devlist()
2967 next_pass = -1; in sbd_get_attach_devlist()
3000 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_pre_attach_devlist()
3002 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_pre_attach_devlist()
3022 rv = -1; in sbd_pre_attach_devlist()
3030 * if pre-op is going to fail. in sbd_pre_attach_devlist()
3047 return (rv ? -1 : 0); in sbd_pre_attach_devlist()
3057 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_attach_devlist()
3061 sbp = SBDH2BD(hp->h_sbd); in sbd_post_attach_devlist()
3062 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_post_attach_devlist()
3064 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_post_attach_devlist()
3091 rv = -1; in sbd_post_attach_devlist()
3110 if (unit == -1) { in sbd_post_attach_devlist()
3111 SBD_GET_PERR(hdp->h_err, ep); in sbd_post_attach_devlist()
3117 if (unit == -1) { in sbd_post_attach_devlist()
3119 f, sbd_ct_str[(int)nodetype], sbp->sb_num, i); in sbd_post_attach_devlist()
3148 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3149 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_post_attach_devlist()
3155 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3156 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_post_attach_devlist()
3158 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_post_attach_devlist()
3168 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3169 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_post_attach_devlist()
3170 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_post_attach_devlist()
3214 sbp = SBDH2BD(hp->h_sbd); in sbd_get_release_devlist()
3215 devset = HD2MACHHD(hp)->sh_devset; in sbd_get_release_devlist()
3283 next_pass = -1; in sbd_get_release_devlist()
3315 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_pre_release_devlist()
3317 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_pre_release_devlist()
3323 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_pre_release_devlist()
3329 devset = shp->sh_orig_devset; in sbd_pre_release_devlist()
3350 SBD_SET_ERRSTR(ep, sbp->sb_mempath[i]); in sbd_pre_release_devlist()
3351 rv = -1; in sbd_pre_release_devlist()
3371 rv = -1; in sbd_pre_release_devlist()
3384 * if pre-op is going to fail. in sbd_pre_release_devlist()
3396 return (rv ? -1 : 0); in sbd_pre_release_devlist()
3405 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_release_devlist()
3410 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_post_release_devlist()
3413 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_post_release_devlist()
3432 * fail post-op. in sbd_post_release_devlist()
3436 PR_IO("%s: error - I/O devices ref'd\n", f); in sbd_post_release_devlist()
3451 spe = hdp->h_err; in sbd_post_release_devlist()
3464 if (unit == -1) { in sbd_post_release_devlist()
3465 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_post_release_devlist()
3466 PR_ALL("%s bad unit num: %d code %d", in sbd_post_release_devlist()
3467 f, unit, spe->e_code); in sbd_post_release_devlist()
3492 return (SBD_GET_ERRNO(SBD_HD2ERR(hp)) ? -1 : 0); in sbd_post_release_devlist()
3506 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_release_done()
3520 SBD_GET_PERR(hdp->h_err, ep); in sbd_release_done()
3547 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_release_done()
3563 sbp = SBDH2BD(hp->h_sbd); in sbd_get_detach_devlist()
3564 devset = HD2MACHHD(hp)->sh_devset; in sbd_get_detach_devlist()
3630 next_pass = -1; in sbd_get_detach_devlist()
3661 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_pre_detach_devlist()
3663 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_pre_detach_devlist()
3680 rv = -1; in sbd_pre_detach_devlist()
3702 sbp = SBDH2BD(hp->h_sbd); in sbd_post_detach_devlist()
3703 nodetype = sbd_get_devtype(hp, devlist->dv_dip); in sbd_post_detach_devlist()
3707 PR_ALL("%s (nt = %s(%d), num = %d)...\n", in sbd_post_detach_devlist()
3731 rv = -1; in sbd_post_detach_devlist()
3748 if (unit == -1) { in sbd_post_detach_devlist()
3749 if (hp->h_flags & SBD_IOCTL_FLAG_FORCE) in sbd_post_detach_devlist()
3752 SBD_GET_PERR(hdp->h_err, ep); in sbd_post_detach_devlist()
3765 f, sbd_ct_str[(int)nodetype], sbp->sb_num, in sbd_post_detach_devlist()
3813 return (SBD_GET_ERRNO(SBD_HD2ERR(hp)) ? -1 : 0); in sbd_post_detach_devlist()
3824 int rv = -1; in sbd_check_unit_attached()
3857 basepa &= ~(endpa - 1); in sbd_check_unit_attached()
3863 for (ml = phys_install; ml; ml = ml->ml_next) in sbd_check_unit_attached()
3864 if ((endpa <= ml->ml_address) || in sbd_check_unit_attached()
3865 (basepa >= (ml->ml_address + ml->ml_size))) in sbd_check_unit_attached()
3883 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_check_unit_attached()
3888 ddi_walk_devs(sbp->sb_topdip, sbd_check_io_attached, in sbd_check_unit_attached()
3898 rv = -1; in sbd_check_unit_attached()
3905 rv = -1; in sbd_check_unit_attached()
3912 if (rv == -1) in sbd_check_unit_attached()
3913 SBD_GET_PERR(hdp->h_err, ep); in sbd_check_unit_attached()
3927 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_get_memhandle()
3938 if (unit == -1) { in sbd_get_memhandle()
3939 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_get_memhandle()
3941 return (-1); in sbd_get_memhandle()
3947 if (mp->sbm_flags & SBD_MFLAG_RELOWNER) { in sbd_get_memhandle()
3948 *mhp = mp->sbm_memhandle; in sbd_get_memhandle()
3952 SBD_SET_ERRSTR(SBD_HD2ERR(hp), sbp->sb_mempath[unit]); in sbd_get_memhandle()
3953 return (-1); in sbd_get_memhandle()
3965 sbp = SBDH2BD(hp->h_sbd); in sbd_cpu_cnt()
3989 if ((sbp->sb_devlist[NIX(SBD_COMP_CMP)][c] == NULL) && in sbd_cpu_cnt()
3990 (sbp->sb_devlist[NIX(SBD_COMP_CMP)][c1] == NULL)) in sbd_cpu_cnt()
4003 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_mem_cnt()
4017 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][i]; in sbd_mem_cnt()
4029 * mem-units. Need to make mem-status structure smart
4045 sbp = SBDH2BD(hp->h_sbd); in sbd_mem_status()
4052 mutex_enter(&sbp->sb_slock); in sbd_mem_status()
4073 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][m]; in sbd_mem_status()
4079 msp = &dsp->d_mem; in sbd_mem_status()
4082 msp->ms_type = SBD_COMP_MEM; in sbd_mem_status()
4085 * The plugin expects -1 for the mem unit in sbd_mem_status()
4087 msp->ms_cm.c_id.c_unit = -1; in sbd_mem_status()
4094 (void) strcpy(msp->ms_name, SBD_DEVNAME(i)); in sbd_mem_status()
4097 msp->ms_cm.c_cond = mp->sbm_cm.sbdev_cond; in sbd_mem_status()
4098 msp->ms_cm.c_busy = mp->sbm_cm.sbdev_busy; in sbd_mem_status()
4099 msp->ms_cm.c_time = mp->sbm_cm.sbdev_time; in sbd_mem_status()
4102 msp->ms_ostate = ostate_cvt(SBD_DEVICE_STATE( in sbd_mem_status()
4105 msp->ms_basepfn = mp->sbm_basepfn; in sbd_mem_status()
4106 msp->ms_pageslost = mp->sbm_pageslost; in sbd_mem_status()
4107 msp->ms_cage_enabled = kcage_on; in sbd_mem_status()
4108 msp->ms_interleave = mp->sbm_interleave; in sbd_mem_status()
4110 if (mp->sbm_flags & SBD_MFLAG_RELOWNER) in sbd_mem_status()
4111 rv = kphysm_del_status(mp->sbm_memhandle, &mdst); in sbd_mem_status()
4116 msp->ms_totpages += mdst.phys_pages; in sbd_mem_status()
4122 msp->ms_detpages += (uint_t)(mdst.collected + in sbd_mem_status()
4123 mdst.phys_pages - mdst.managed); in sbd_mem_status()
4125 msp->ms_totpages += (uint_t)mp->sbm_npages; in sbd_mem_status()
4133 switch (msp->ms_cm.c_ostate) { in sbd_mem_status()
4142 msp->ms_detpages = msp->ms_totpages; in sbd_mem_status()
4150 rv = kphysm_del_span_query(mp->sbm_basepfn, in sbd_mem_status()
4151 mp->sbm_npages, &mq); in sbd_mem_status()
4153 msp->ms_managed_pages = mq.managed; in sbd_mem_status()
4154 msp->ms_noreloc_pages = mq.nonrelocatable; in sbd_mem_status()
4155 msp->ms_noreloc_first = mq.first_nonrelocatable; in sbd_mem_status()
4156 msp->ms_noreloc_last = mq.last_nonrelocatable; in sbd_mem_status()
4157 msp->ms_cm.c_sflags = 0; in sbd_mem_status()
4160 dsp->ds_suspend); in sbd_mem_status()
4170 mutex_exit(&sbp->sb_slock); in sbd_mem_status()
4180 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_cancel()
4190 devset = HD2MACHHD(hp)->sh_devset & SBD_DEVS_UNREFERENCED(sbp); in sbd_cancel()
4221 } else if (rv == -1) { in sbd_cancel()
4244 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_cancel()
4245 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_cancel()
4254 sbd_cmd_t *cmdp = (sbd_cmd_t *)hp->h_iap; in sbd_get_ncm()
4258 devset = shp->sh_devset; in sbd_get_ncm()
4260 cmdp->cmd_getncm.g_ncm = sbd_cpu_cnt(hp, devset) + in sbd_get_ncm()
4263 error = sbd_copyout_ioarg(hp->h_mode, hp->h_cmd, cmdp, in sbd_get_ncm()
4264 (sbd_ioctl_arg_t *)shp->sh_arg); in sbd_get_ncm()
4276 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_status()
4278 sbd_cmd_t *cmdp = (sbd_cmd_t *)hp->h_iap; in sbd_status()
4289 mode = hp->h_mode; in sbd_status()
4290 devset = shp->sh_devset; in sbd_status()
4294 if (cmdp->cmd_cm.c_id.c_type == SBD_COMP_NONE) { in sbd_status()
4295 if (cmdp->cmd_cm.c_flags & SBD_FLAG_ALLCMP) { in sbd_status()
4299 * sbd_stat_t structure plus ncm-1 sbd_dev_stat_t in sbd_status()
4301 * one sbd_dev_stat_t, so only an additional ncm-1 in sbd_status()
4332 sz += sizeof (sbd_dev_stat_t) * (ncm - 1); in sbd_status()
4352 sz32 += sizeof (sbd_dev_stat32_t) * (ncm - 1); in sbd_status()
4358 if ((int)cmdp->cmd_stat.s_nbytes < cksz) { in sbd_status()
4360 cmdp->cmd_stat.s_nbytes); in sbd_status()
4367 devstatp = &dstatp->s_stat[0]; in sbd_status()
4378 mutex_enter(&sbp->sb_flags_mutex); in sbd_status()
4379 switch (sbp->sb_state) { in sbd_status()
4384 if (sbp->sb_flags & SBD_BOARD_STATUS_CACHED) { in sbd_status()
4385 bcopy(&sbp->sb_stat, dstatp, sizeof (sbd_stat_t)); in sbd_status()
4386 dstatp->s_rstate = rstate_cvt(sbp->sb_state); in sbd_status()
4387 dstatp->s_ostate = ostate_cvt(sbp->sb_state); in sbd_status()
4388 dstatp->s_busy = sbp->sb_busy; in sbd_status()
4389 dstatp->s_time = sbp->sb_time; in sbd_status()
4390 dstatp->s_cond = sbp->sb_cond; in sbd_status()
4396 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_status()
4397 dstatp->s_board = sbp->sb_num; in sbd_status()
4398 dstatp->s_ostate = ostate_cvt(sbp->sb_state); in sbd_status()
4399 dstatp->s_time = sbp->sb_time; in sbd_status()
4404 SBD_GET_PERR(hdp->h_err, SBD_HD2ERR(hp)); in sbd_status()
4411 mutex_exit(&sbp->sb_flags_mutex); in sbd_status()
4418 if (!dstatp->s_busy) { in sbd_status()
4420 dstatp->s_busy = sbp->sb_busy; in sbd_status()
4421 sbp->sb_cond = (sbd_cond_t)dstatp->s_cond; in sbd_status()
4422 bcopy(dstatp, &sbp->sb_stat, sizeof (sbd_stat_t)); in sbd_status()
4423 sbp->sb_flags |= SBD_BOARD_STATUS_CACHED; in sbd_status()
4428 mutex_exit(&sbp->sb_flags_mutex); in sbd_status()
4432 dstatp->s_nstat += nstat; in sbd_status()
4438 dstatp->s_nstat += nstat; in sbd_status()
4444 dstatp->s_nstat += nstat; in sbd_status()
4467 if ((caddr_t)&dstat32p->s_stat[dstatp->s_nstat] > in sbd_status()
4482 dstat32p->s_board = (int32_t)dstatp->s_board; in sbd_status()
4483 dstat32p->s_nstat = (int32_t)dstatp->s_nstat; in sbd_status()
4484 dstat32p->s_rstate = dstatp->s_rstate; in sbd_status()
4485 dstat32p->s_ostate = dstatp->s_ostate; in sbd_status()
4486 dstat32p->s_cond = dstatp->s_cond; in sbd_status()
4487 dstat32p->s_busy = dstatp->s_busy; in sbd_status()
4488 dstat32p->s_time = dstatp->s_time; in sbd_status()
4489 dstat32p->s_assigned = dstatp->s_assigned; in sbd_status()
4490 dstat32p->s_power = dstatp->s_power; in sbd_status()
4491 dstat32p->s_platopts = (int32_t)dstatp->s_platopts; in sbd_status()
4492 (void) strcpy(dstat32p->s_type, dstatp->s_type); in sbd_status()
4494 for (i = 0; i < dstatp->s_nstat; i++) { in sbd_status()
4495 sbd_dev_stat_t *dsp = &dstatp->s_stat[i]; in sbd_status()
4496 sbd_dev_stat32_t *ds32p = &dstat32p->s_stat[i]; in sbd_status()
4501 ds32p->d_cm.ci_type = (int32_t)dsp->d_cm.ci_type; in sbd_status()
4502 ds32p->d_cm.ci_unit = (int32_t)dsp->d_cm.ci_unit; in sbd_status()
4503 ds32p->d_cm.c_ostate = (int32_t)dsp->d_cm.c_ostate; in sbd_status()
4504 ds32p->d_cm.c_cond = (int32_t)dsp->d_cm.c_cond; in sbd_status()
4505 ds32p->d_cm.c_busy = (int32_t)dsp->d_cm.c_busy; in sbd_status()
4506 ds32p->d_cm.c_time = (time32_t)dsp->d_cm.c_time; in sbd_status()
4507 ds32p->d_cm.c_sflags = (int32_t)dsp->d_cm.c_sflags; in sbd_status()
4508 (void) strcpy(ds32p->d_cm.ci_name, dsp->d_cm.ci_name); in sbd_status()
4511 switch (dsp->d_cm.ci_type) { in sbd_status()
4514 ds32p->d_cpu.cs_isbootproc = in sbd_status()
4515 (int32_t)dsp->d_cpu.cs_isbootproc; in sbd_status()
4516 ds32p->d_cpu.cs_cpuid = in sbd_status()
4517 (int32_t)dsp->d_cpu.cs_cpuid; in sbd_status()
4518 ds32p->d_cpu.cs_speed = in sbd_status()
4519 (int32_t)dsp->d_cpu.cs_speed; in sbd_status()
4520 ds32p->d_cpu.cs_ecache = in sbd_status()
4521 (int32_t)dsp->d_cpu.cs_ecache; in sbd_status()
4525 ds32p->d_mem.ms_type = in sbd_status()
4526 (int32_t)dsp->d_mem.ms_type; in sbd_status()
4527 ds32p->d_mem.ms_ostate = in sbd_status()
4528 (int32_t)dsp->d_mem.ms_ostate; in sbd_status()
4529 ds32p->d_mem.ms_cond = in sbd_status()
4530 (int32_t)dsp->d_mem.ms_cond; in sbd_status()
4531 ds32p->d_mem.ms_interleave = in sbd_status()
4532 (uint32_t)dsp->d_mem.ms_interleave; in sbd_status()
4533 ds32p->d_mem.ms_basepfn = in sbd_status()
4534 (uint32_t)dsp->d_mem.ms_basepfn; in sbd_status()
4535 ds32p->d_mem.ms_totpages = in sbd_status()
4536 (uint32_t)dsp->d_mem.ms_totpages; in sbd_status()
4537 ds32p->d_mem.ms_detpages = in sbd_status()
4538 (uint32_t)dsp->d_mem.ms_detpages; in sbd_status()
4539 ds32p->d_mem.ms_pageslost = in sbd_status()
4540 (int32_t)dsp->d_mem.ms_pageslost; in sbd_status()
4541 ds32p->d_mem.ms_managed_pages = in sbd_status()
4542 (int32_t)dsp->d_mem.ms_managed_pages; in sbd_status()
4543 ds32p->d_mem.ms_noreloc_pages = in sbd_status()
4544 (int32_t)dsp->d_mem.ms_noreloc_pages; in sbd_status()
4545 ds32p->d_mem.ms_noreloc_first = in sbd_status()
4546 (int32_t)dsp->d_mem.ms_noreloc_first; in sbd_status()
4547 ds32p->d_mem.ms_noreloc_last = in sbd_status()
4548 (int32_t)dsp->d_mem.ms_noreloc_last; in sbd_status()
4549 ds32p->d_mem.ms_cage_enabled = in sbd_status()
4550 (int32_t)dsp->d_mem.ms_cage_enabled; in sbd_status()
4551 ds32p->d_mem.ms_peer_is_target = in sbd_status()
4552 (int32_t)dsp->d_mem.ms_peer_is_target; in sbd_status()
4553 (void) strcpy(ds32p->d_mem.ms_peer_ap_id, in sbd_status()
4554 dsp->d_mem.ms_peer_ap_id); in sbd_status()
4560 ds32p->d_io.is_type = in sbd_status()
4561 (int32_t)dsp->d_io.is_type; in sbd_status()
4562 ds32p->d_io.is_unsafe_count = in sbd_status()
4563 (int32_t)dsp->d_io.is_unsafe_count; in sbd_status()
4564 ds32p->d_io.is_referenced = in sbd_status()
4565 (int32_t)dsp->d_io.is_referenced; in sbd_status()
4567 ds32p->d_io.is_unsafe_list[j] = in sbd_status()
4569 ds32p->d_io.is_unsafe_list[j]; in sbd_status()
4570 bcopy(dsp->d_io.is_pathname, in sbd_status()
4571 ds32p->d_io.is_pathname, MAXPATHLEN); in sbd_status()
4576 bcopy(&dsp->d_cmp.ps_cpuid[0], in sbd_status()
4577 &ds32p->d_cmp.ps_cpuid[0], in sbd_status()
4578 sizeof (ds32p->d_cmp.ps_cpuid)); in sbd_status()
4579 ds32p->d_cmp.ps_ncores = in sbd_status()
4580 (int32_t)dsp->d_cmp.ps_ncores; in sbd_status()
4581 ds32p->d_cmp.ps_speed = in sbd_status()
4582 (int32_t)dsp->d_cmp.ps_speed; in sbd_status()
4583 ds32p->d_cmp.ps_ecache = in sbd_status()
4584 (int32_t)dsp->d_cmp.ps_ecache; in sbd_status()
4590 (int)dsp->d_cm.c_id.c_type); in sbd_status()
4596 cmdp->cmd_stat.s_statp, sz32, mode) != 0) { in sbd_status()
4599 f, sbp->sb_num); in sbd_status()
4604 if (ddi_copyout((void *)dstatp, cmdp->cmd_stat.s_statp, in sbd_status()
4608 f, sbp->sb_num); in sbd_status()
4637 f, sbp->sb_num); in sbd_board_discovery()
4656 dip = sbp->sb_devlist[NIX(SBD_COMP_CPU)][i]; in sbd_board_discovery()
4662 SBD_GET_PERR(hdp->h_err, ep); in sbd_board_discovery()
4670 PR_ALL("%s: board %d, cpuid %d - attached\n", in sbd_board_discovery()
4671 f, sbp->sb_num, cpuid); in sbd_board_discovery()
4689 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][i]; in sbd_board_discovery()
4696 ASSERT(sbp->sb_ndev != 0); in sbd_board_discovery()
4698 sbp->sb_ndev--; in sbd_board_discovery()
4700 sbp->sb_devlist[NIX(SBD_COMP_MEM)][i] = NULL; in sbd_board_discovery()
4712 basepa &= ~(endpa - 1); in sbd_board_discovery()
4719 for (ml = phys_install; ml; ml = ml->ml_next) in sbd_board_discovery()
4720 if ((endpa <= ml->ml_address) || in sbd_board_discovery()
4721 (basepa >= (ml->ml_address + ml->ml_size))) in sbd_board_discovery()
4730 PR_ALL("%s: board %d, mem-unit %d - attached\n", in sbd_board_discovery()
4731 f, sbp->sb_num, i); in sbd_board_discovery()
4752 dip = sbp->sb_devlist[NIX(SBD_COMP_IO)][i]; in sbd_board_discovery()
4769 PR_ALL("%s: board %d, io-unit %d - attached\n", in sbd_board_discovery()
4770 f, sbp->sb_num, i); in sbd_board_discovery()
4813 ASSERT(wp && (wp->hold == 0 || wp->hold == 1)); in hold_rele_branch()
4815 switch (get_node_type(wp->sbp, rdip, NULL)) { in hold_rele_branch()
4839 if (wp->hold) { in hold_rele_branch()
4858 mutex_init(&sbp->sb_mutex, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4859 mutex_init(&sbp->sb_flags_mutex, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4860 mutex_init(&sbp->sb_slock, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4862 sbp->sb_ref = 0; in sbd_board_init()
4863 sbp->sb_num = bd; in sbd_board_init()
4864 sbp->sb_time = gethrestime_sec(); in sbd_board_init()
4871 sbp->sb_topdip = top_dip; in sbd_board_init()
4872 sbp->sb_cpuid = -1; in sbd_board_init()
4873 sbp->sb_softsp = (void *) softsp; in sbd_board_init()
4874 sbp->sb_cond = SBD_COND_UNKNOWN; in sbd_board_init()
4875 sbp->sb_wnode = wnode; in sbd_board_init()
4876 sbp->sb_memaccess_ok = 1; in sbd_board_init()
4885 sbp->sb_devlist[NIX(SBD_COMP_CPU)] = in sbd_board_init()
4891 sbp->sb_devlist[NIX(SBD_COMP_MEM)] = in sbd_board_init()
4897 sbp->sb_devlist[NIX(SBD_COMP_IO)] = in sbd_board_init()
4901 sbp->sb_dev[NIX(SBD_COMP_CPU)] = in sbd_board_init()
4904 sbp->sb_dev[NIX(SBD_COMP_MEM)] = in sbd_board_init()
4907 sbp->sb_dev[NIX(SBD_COMP_IO)] = in sbd_board_init()
4911 sbp->sb_cpupath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4915 sbp->sb_mempath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4919 sbp->sb_iopath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4926 ASSERT(sbp->sb_topdip); in sbd_board_init()
4927 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_board_init()
4932 ddi_walk_devs(sbp->sb_topdip, hold_rele_branch, (void *)&walk); in sbd_board_init()
4959 sbp->sb_cond = SBD_COND_OK; in sbd_board_init()
4982 ASSERT(mp->sbm_mlist == NULL); in sbd_board_destroy()
4989 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_MEM)], in sbd_board_destroy()
4991 sbp->sb_dev[NIX(SBD_COMP_MEM)] = NULL; in sbd_board_destroy()
4996 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_CPU)], in sbd_board_destroy()
4998 sbp->sb_dev[NIX(SBD_COMP_CPU)] = NULL; in sbd_board_destroy()
5003 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_IO)], in sbd_board_destroy()
5005 sbp->sb_dev[NIX(SBD_COMP_IO)] = NULL; in sbd_board_destroy()
5012 kmem_free((caddr_t)sbp->sb_cpupath[i], MAXPATHLEN); in sbd_board_destroy()
5014 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_CPU)], dev_info_t *, in sbd_board_destroy()
5016 sbp->sb_devlist[NIX(SBD_COMP_CPU)] = NULL; in sbd_board_destroy()
5022 kmem_free((caddr_t)sbp->sb_mempath[i], MAXPATHLEN); in sbd_board_destroy()
5024 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_MEM)], dev_info_t *, in sbd_board_destroy()
5026 sbp->sb_devlist[NIX(SBD_COMP_MEM)] = NULL; in sbd_board_destroy()
5032 kmem_free((caddr_t)sbp->sb_iopath[i], MAXPATHLEN); in sbd_board_destroy()
5034 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_IO)], dev_info_t *, in sbd_board_destroy()
5036 sbp->sb_devlist[NIX(SBD_COMP_IO)] = NULL; in sbd_board_destroy()
5041 ASSERT(sbp->sb_topdip); in sbd_board_destroy()
5042 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_board_destroy()
5047 ddi_walk_devs(sbp->sb_topdip, hold_rele_branch, (void *)&walk); in sbd_board_destroy()
5051 mutex_destroy(&sbp->sb_slock); in sbd_board_destroy()
5052 mutex_destroy(&sbp->sb_flags_mutex); in sbd_board_destroy()
5053 mutex_destroy(&sbp->sb_mutex); in sbd_board_destroy()
5102 if (DEVI(dip)->devi_flags & DEVI_RETIRED) { in sbd_get_comp_cond()
5166 ep->e_errno = Errno; in sbd_inject_err()
5167 ep->e_code = ecode; in sbd_inject_err()
5170 bcopy((caddr_t)rsc, (caddr_t)ep->e_rsc, in sbd_inject_err()
5171 sizeof (ep->e_rsc)); in sbd_inject_err()
5174 PR_ERR_ERRNO("%s set errno to %d", f, ep->e_errno); in sbd_inject_err()
5177 PR_ERR_ECODE("%s set ecode to %d", f, ep->e_code); in sbd_inject_err()
5180 PR_ERR_RSC("%s set rsc to %s", f, ep->e_rsc); in sbd_inject_err()