Lines Matching refs:sbp
93 int sbd_dealloc_instance(sbd_board_t *sbp, int max_boards);
368 static int sbd_check_transition(sbd_board_t *sbp,
372 sbd_board_t *sbp,
379 static int sbd_init_devlists(sbd_board_t *sbp);
383 static void sbd_init_mem_devlists(sbd_board_t *sbp);
384 static void sbd_init_cpu_unit(sbd_board_t *sbp, int unit);
385 static void sbd_board_discovery(sbd_board_t *sbp);
386 static void sbd_board_init(sbd_board_t *sbp,
389 static void sbd_board_destroy(sbd_board_t *sbp);
390 static int sbd_check_unit_attached(sbd_board_t *sbp,
692 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_exec_op() local
720 mutex_enter(&sbp->sb_slock); in sbd_exec_op()
723 mutex_exit(&sbp->sb_slock); in sbd_exec_op()
768 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_exec_op()
796 sbd_board_t *sbp = hp ? SBDH2BD(hp->h_sbd) : NULL; in sbd_get_devtype() local
805 bstate = sbp ? SBD_BOARD_STATE(sbp) : SBD_STATE_EMPTY; in sbd_get_devtype()
816 devlist = sbp->sb_devlist[NIX(SBD_COMP_MEM)]; in sbd_get_devtype()
821 devlist = sbp->sb_devlist[NIX(SBD_COMP_CPU)]; in sbd_get_devtype()
826 devlist = sbp->sb_devlist[NIX(SBD_COMP_IO)]; in sbd_get_devtype()
857 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_configure() local
861 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_dev_configure()
931 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_release() local
939 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_dev_release()
941 sbp->sb_busy = 1; in sbd_dev_release()
984 sbp->sb_busy = 0; in sbd_dev_release()
1003 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_dev_unconfigure() local
1010 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_dev_unconfigure()
1112 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_attach_cpu() local
1127 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_attach_cpu()
1141 ASSERT(sbp->sb_cpupath[unit] != NULL); in sbd_attach_cpu()
1142 pathname = sbp->sb_cpupath[unit]; in sbd_attach_cpu()
1191 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_detach_cpu() local
1198 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_detach_cpu()
1209 SBD_SET_ERRSTR(ep, sbp->sb_cpupath[unit]); in sbd_detach_cpu()
1231 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_detach_mem() local
1235 mp = SBD_GET_BOARD_MEMUNIT(sbp, unit); in sbd_detach_mem()
1251 mutex_enter(&sbp->sb_slock); in sbd_detach_mem()
1254 mutex_exit(&sbp->sb_slock); in sbd_detach_mem()
1343 sbd_dealloc_instance(sbd_board_t *sbp, int max_boards) in sbd_dealloc_instance() argument
1346 sbd_board_t *list = sbp; in sbd_dealloc_instance()
1351 if (sbp == NULL) { in sbd_dealloc_instance()
1356 sbd_board_destroy(sbp++); in sbd_dealloc_instance()
1444 sbd_board_t *sbp = softsp->sbd_boardlist; in sbd_get_handle() local
1449 sbp += board; in sbd_get_handle()
1462 hp->h_sbd = (void *) sbp; in sbd_get_handle()
1469 shp->sh_next = sbp->sb_handle; in sbd_get_handle()
1470 sbp->sb_handle = shp; in sbd_get_handle()
1510 sbd_board_t *sbp; in sbd_release_handle() local
1516 sbp = SBDH2BD(hp->h_sbd); in sbd_release_handle()
1524 for (shpp = &sbp->sb_handle; (*shpp) && ((*shpp) != shp); in sbd_release_handle()
1531 f, sbp->sb_num); in sbd_release_handle()
1546 sbd_get_sbdp_handle(sbd_board_t *sbp, sbd_handle_t *hp) in sbd_get_sbdp_handle() argument
1552 if (sbp == NULL) { in sbd_get_sbdp_handle()
1556 hdp->h_board = sbp->sb_num; in sbd_get_sbdp_handle()
1557 hdp->h_wnode = sbp->sb_wnode; in sbd_get_sbdp_handle()
1759 sbd_check_transition(sbd_board_t *sbp, sbd_devset_t *devsetp, in sbd_check_transition() argument
1785 s = (int)SBD_DEVICE_STATE(sbp, SBD_COMP_MEM, ut); in sbd_check_transition()
1798 s = (int)SBD_DEVICE_STATE(sbp, SBD_COMP_CPU, ut); in sbd_check_transition()
1811 s = (int)SBD_DEVICE_STATE(sbp, SBD_COMP_IO, ut); in sbd_check_transition()
1843 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_pre_op() local
1920 state_err = sbd_check_transition(sbp, &devset, transp); in sbd_pre_op()
1984 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_op() local
1993 sbp->sb_time = gethrestime_sec(); in sbd_post_op()
2027 sbd_board_t *sbp; in sbd_probe_board() local
2031 sbp = SBDH2BD(hp->h_sbd); in sbd_probe_board()
2033 ASSERT(sbp != NULL); in sbd_probe_board()
2034 PR_ALL("%s for board %d", f, sbp->sb_num); in sbd_probe_board()
2037 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_probe_board()
2049 mutex_enter(&sbp->sb_flags_mutex); in sbd_probe_board()
2050 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_probe_board()
2051 mutex_exit(&sbp->sb_flags_mutex); in sbd_probe_board()
2066 sbd_board_t *sbp; in sbd_deprobe_board() local
2071 sbp = SBDH2BD(hp->h_sbd); in sbd_deprobe_board()
2073 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_deprobe_board()
2081 mutex_enter(&sbp->sb_flags_mutex); in sbd_deprobe_board()
2082 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_deprobe_board()
2083 mutex_exit(&sbp->sb_flags_mutex); in sbd_deprobe_board()
2120 get_node_type(sbd_board_t *sbp, dev_info_t *dip, int *unitp) in get_node_type() argument
2128 ASSERT(sbp); in get_node_type()
2133 hp = MACHBD2HD(sbp); in get_node_type()
2135 hdp = sbd_get_sbdp_handle(sbp, hp); in get_node_type()
2136 if (sbdp_get_board_num(hdp, dip) != sbp->sb_num) { in get_node_type()
2185 sbd_board_t *sbp; member
2198 sbd_board_t *sbp; in sbd_setup_devlists() local
2211 sbp = wp->sbp; in sbd_setup_devlists()
2213 nodetype = get_node_type(sbp, dip, &unit); in sbd_setup_devlists()
2218 pathname = sbp->sb_cpupath[unit]; in sbd_setup_devlists()
2222 pathname = sbp->sb_mempath[unit]; in sbd_setup_devlists()
2226 pathname = sbp->sb_iopath[unit]; in sbd_setup_devlists()
2249 devlist = sbp->sb_devlist[NIX(nodetype)]; in sbd_setup_devlists()
2262 if (!SBD_DEV_IS_PRESENT(sbp, nodetype, unit)) { in sbd_setup_devlists()
2263 sbp->sb_ndev++; in sbd_setup_devlists()
2264 SBD_DEV_SET_PRESENT(sbp, nodetype, unit); in sbd_setup_devlists()
2268 mp = SBD_GET_BOARD_MEMUNIT(sbp, unit); in sbd_setup_devlists()
2292 sbd_init_mem_devlists(sbd_board_t *sbp) in sbd_init_mem_devlists() argument
2300 sbd_handle_t *hp = MACHBD2HD(sbp); in sbd_init_mem_devlists()
2302 devlist = sbp->sb_devlist[NIX(SBD_COMP_MEM)]; in sbd_init_mem_devlists()
2304 mp = SBD_GET_BOARD_MEMUNIT(sbp, 0); in sbd_init_mem_devlists()
2310 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_init_mem_devlists()
2327 if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_MEM, 0)) { in sbd_init_mem_devlists()
2328 ASSERT(sbp->sb_ndev != 0); in sbd_init_mem_devlists()
2329 SBD_DEV_CLR_PRESENT(sbp, SBD_COMP_MEM, 0); in sbd_init_mem_devlists()
2330 sbp->sb_ndev--; in sbd_init_mem_devlists()
2360 sbp->sb_num, i); in sbd_init_mem_devlists()
2403 sbd_init_devlists(sbd_board_t *sbp) in sbd_init_devlists() argument
2412 PR_ALL("%s (board = %d)...\n", f, sbp->sb_num); in sbd_init_devlists()
2416 SBD_DEVS_DISCONNECT(sbp, (uint_t)-1); in sbd_init_devlists()
2423 sbp->sb_devlist[NIX(SBD_COMP_MEM)][i] = NULL; in sbd_init_devlists()
2424 dp = (sbd_dev_unit_t *)SBD_GET_BOARD_MEMUNIT(sbp, i); in sbd_init_devlists()
2425 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2430 mp = SBD_GET_BOARD_MEMUNIT(sbp, 0); in sbd_init_devlists()
2437 sbp->sb_devlist[NIX(SBD_COMP_CPU)][i] = NULL; in sbd_init_devlists()
2438 dp = (sbd_dev_unit_t *)SBD_GET_BOARD_CPUUNIT(sbp, i); in sbd_init_devlists()
2439 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2444 sbp->sb_devlist[NIX(SBD_COMP_IO)][i] = NULL; in sbd_init_devlists()
2445 dp = (sbd_dev_unit_t *)SBD_GET_BOARD_IOUNIT(sbp, i); in sbd_init_devlists()
2446 dp->u_common.sbdev_sbp = sbp; in sbd_init_devlists()
2451 wp->sbp = sbp; in sbd_init_devlists()
2453 sbp->sb_ndev = 0; in sbd_init_devlists()
2458 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_init_devlists()
2463 ddi_walk_devs(sbp->sb_topdip, sbd_setup_devlists, (void *) wp); in sbd_init_devlists()
2473 if (sbp->sb_ndev == 0) { in sbd_init_devlists()
2474 sbp->sb_memaccess_ok = 0; in sbd_init_devlists()
2475 return (sbp->sb_ndev); in sbd_init_devlists()
2482 sbp->sb_memaccess_ok = 1; in sbd_init_devlists()
2484 if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_CPU, i)) { in sbd_init_devlists()
2485 sbd_init_cpu_unit(sbp, i); in sbd_init_devlists()
2486 if (sbd_connect_cpu(sbp, i)) { in sbd_init_devlists()
2487 SBD_SET_ERR(HD2MACHERR(MACHBD2HD(sbp)), in sbd_init_devlists()
2494 if (sbp->sb_memaccess_ok) { in sbd_init_devlists()
2495 sbd_init_mem_devlists(sbp); in sbd_init_devlists()
2498 sbp->sb_num); in sbd_init_devlists()
2501 return (sbp->sb_ndev); in sbd_init_devlists()
2505 sbd_init_cpu_unit(sbd_board_t *sbp, int unit) in sbd_init_cpu_unit() argument
2512 sbd_handle_t *hp = MACHBD2HD(sbp); in sbd_init_cpu_unit()
2515 if (SBD_DEV_IS_ATTACHED(sbp, SBD_COMP_CPU, unit)) { in sbd_init_cpu_unit()
2517 } else if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_CPU, unit)) { in sbd_init_cpu_unit()
2523 dip = sbp->sb_devlist[NIX(SBD_COMP_CPU)][unit]; in sbd_init_cpu_unit()
2525 cp = SBD_GET_BOARD_CPUUNIT(sbp, unit); in sbd_init_cpu_unit()
2527 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_init_cpu_unit()
2555 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_CPU, unit, new_state); in sbd_init_cpu_unit()
2565 sbd_board_t *sbp; in sbd_connect() local
2569 sbp = SBDH2BD(hp->h_sbd); in sbd_connect()
2571 PR_ALL("%s board %d\n", f, sbp->sb_num); in sbd_connect()
2575 if (SBD_DEVS_PRESENT(sbp)) { in sbd_connect()
2580 f, SBD_DEVS_PRESENT(sbp)); in sbd_connect()
2585 if (sbd_init_devlists(sbp) == 0) { in sbd_connect()
2587 f, sbp->sb_num); in sbd_connect()
2597 if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_MEM, i)) in sbd_connect()
2598 sbd_init_mem_unit(sbp, i, SBD_HD2ERR(hp)); in sbd_connect()
2604 if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_IO, i)) in sbd_connect()
2605 sbd_init_io_unit(sbp, i); in sbd_connect()
2607 SBD_BOARD_TRANSITION(sbp, SBD_STATE_CONNECTED); in sbd_connect()
2608 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_connect()
2609 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_connect()
2610 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_connect()
2621 sbd_board_t *sbp; in sbd_disconnect() local
2626 sbp = SBDH2BD(hp->h_sbd); in sbd_disconnect()
2632 devset = HD2MACHHD(hp)->sh_devset & SBD_DEVS_PRESENT(sbp) & in sbd_disconnect()
2633 SBD_DEVS_UNATTACHED(sbp); in sbd_disconnect()
2635 ASSERT((SBD_DEVS_ATTACHED(sbp) & devset) == 0); in sbd_disconnect()
2644 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_MEM, i, in sbd_disconnect()
2646 SBD_DEV_CLR_PRESENT(sbp, SBD_COMP_MEM, i); in sbd_disconnect()
2653 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_CPU, i, in sbd_disconnect()
2655 SBD_DEV_CLR_PRESENT(sbp, SBD_COMP_CPU, i); in sbd_disconnect()
2662 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_IO, i, in sbd_disconnect()
2664 SBD_DEV_CLR_PRESENT(sbp, SBD_COMP_IO, i); in sbd_disconnect()
2673 if (SBD_DEVS_PRESENT(sbp) == 0) { in sbd_disconnect()
2674 SBD_BOARD_TRANSITION(sbp, SBD_STATE_OCCUPIED); in sbd_disconnect()
2675 sbp->sb_rstate = SBD_STAT_DISCONNECTED; in sbd_disconnect()
2676 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_disconnect()
2677 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_disconnect()
2683 f, sbp->sb_num); in sbd_disconnect()
2691 sbd_board_t *sbp; in sbd_test_board() local
2694 sbp = SBDH2BD(hp->h_sbd); in sbd_test_board()
2696 PR_ALL("sbd_test_board: board %d\n", sbp->sb_num); in sbd_test_board()
2699 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_test_board()
2716 sbd_board_t *sbp; in sbd_assign_board() local
2719 sbp = SBDH2BD(hp->h_sbd); in sbd_assign_board()
2721 PR_ALL("sbd_assign_board: board %d\n", sbp->sb_num); in sbd_assign_board()
2723 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_assign_board()
2740 sbd_board_t *sbp; in sbd_unassign_board() local
2743 sbp = SBDH2BD(hp->h_sbd); in sbd_unassign_board()
2745 PR_ALL("sbd_unassign_board: board %d\n", sbp->sb_num); in sbd_unassign_board()
2747 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_unassign_board()
2764 sbd_board_t *sbp; in sbd_poweron_board() local
2767 sbp = SBDH2BD(hp->h_sbd); in sbd_poweron_board()
2769 PR_ALL("sbd_poweron_board: %d\n", sbp->sb_num); in sbd_poweron_board()
2771 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_poweron_board()
2788 sbd_board_t *sbp; in sbd_poweroff_board() local
2791 sbp = SBDH2BD(hp->h_sbd); in sbd_poweroff_board()
2793 PR_ALL("sbd_poweroff_board: %d\n", sbp->sb_num); in sbd_poweroff_board()
2795 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_poweroff_board()
2816 sbd_get_devlist(sbd_handle_t *hp, sbd_board_t *sbp, sbd_comp_type_t nodetype, in sbd_get_devlist() argument
2826 devlist = sbp->sb_devlist[NIX(nodetype)]; in sbd_get_devlist()
2839 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_get_devlist()
2884 is_present = SBD_DEV_IS_PRESENT(sbp, nodetype, ut) ? in sbd_get_devlist()
2886 is_attached = SBD_DEV_IS_ATTACHED(sbp, nodetype, ut) ? in sbd_get_devlist()
2909 sbd_board_t *sbp; in sbd_get_attach_devlist() local
2918 sbp = SBDH2BD(hp->h_sbd); in sbd_get_attach_devlist()
2944 attach_devlist = sbd_get_devlist(hp, sbp, SBD_COMP_CPU, in sbd_get_attach_devlist()
2965 attach_devlist = sbd_get_devlist(hp, sbp, SBD_COMP_MEM, in sbd_get_attach_devlist()
2988 attach_devlist = sbd_get_devlist(hp, sbp, SBD_COMP_IO, in sbd_get_attach_devlist()
3076 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_attach_devlist() local
3080 sbp = SBDH2BD(hp->h_sbd); in sbd_post_attach_devlist()
3086 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_post_attach_devlist()
3134 unit = sbd_check_unit_attached(sbp, dip, unit, nodetype, ep); in sbd_post_attach_devlist()
3138 f, sbd_ct_str[(int)nodetype], sbp->sb_num, i); in sbd_post_attach_devlist()
3142 SBD_DEV_SET_ATTACHED(sbp, nodetype, unit); in sbd_post_attach_devlist()
3143 SBD_DEVICE_TRANSITION(sbp, nodetype, unit, in sbd_post_attach_devlist()
3154 devs_present = SBD_DEVS_PRESENT(sbp); in sbd_post_attach_devlist()
3155 devs_unattached = SBD_DEVS_UNATTACHED(sbp); in sbd_post_attach_devlist()
3157 switch (SBD_BOARD_STATE(sbp)) { in sbd_post_attach_devlist()
3166 SBD_BOARD_TRANSITION(sbp, SBD_STATE_CONFIGURED); in sbd_post_attach_devlist()
3167 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3168 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_post_attach_devlist()
3173 SBD_BOARD_TRANSITION(sbp, SBD_STATE_PARTIAL); in sbd_post_attach_devlist()
3174 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3175 sbp->sb_ostate = SBD_STAT_UNCONFIGURED; in sbd_post_attach_devlist()
3177 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_post_attach_devlist()
3186 SBD_BOARD_TRANSITION(sbp, SBD_STATE_CONFIGURED); in sbd_post_attach_devlist()
3187 sbp->sb_rstate = SBD_STAT_CONNECTED; in sbd_post_attach_devlist()
3188 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_post_attach_devlist()
3189 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_post_attach_devlist()
3224 sbd_board_t *sbp; in sbd_get_release_devlist() local
3233 sbp = SBDH2BD(hp->h_sbd); in sbd_get_release_devlist()
3259 release_devlist = sbd_get_devlist(hp, sbp, in sbd_get_release_devlist()
3282 release_devlist = sbd_get_devlist(hp, sbp, in sbd_get_release_devlist()
3306 release_devlist = sbd_get_devlist(hp, sbp, in sbd_get_release_devlist()
3342 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_pre_release_devlist() local
3361 if (SBD_DEV_IS_ATTACHED(sbp, SBD_COMP_MEM, i)) { in sbd_pre_release_devlist()
3369 SBD_SET_ERRSTR(ep, sbp->sb_mempath[i]); in sbd_pre_release_devlist()
3424 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_post_release_devlist() local
3469 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_post_release_devlist()
3515 sbd_release_dev_done(sbd_board_t *sbp, sbd_comp_type_t nodetype, int unit) in sbd_release_dev_done() argument
3517 SBD_DEV_SET_UNREFERENCED(sbp, nodetype, unit); in sbd_release_dev_done()
3518 SBD_DEVICE_TRANSITION(sbp, nodetype, unit, SBD_STATE_UNREFERENCED); in sbd_release_dev_done()
3525 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_release_done() local
3532 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_release_done()
3556 sbd_release_dev_done(sbp, nodetype, unit); in sbd_release_done()
3564 if (SBD_DEVS_RELEASED(sbp) == SBD_DEVS_UNREFERENCED(sbp)) { in sbd_release_done()
3565 SBD_BOARD_TRANSITION(sbp, SBD_STATE_UNREFERENCED); in sbd_release_done()
3566 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_release_done()
3573 sbd_board_t *sbp; in sbd_get_detach_devlist() local
3582 sbp = SBDH2BD(hp->h_sbd); in sbd_get_detach_devlist()
3608 detach_devlist = sbd_get_devlist(hp, sbp, in sbd_get_detach_devlist()
3630 detach_devlist = sbd_get_devlist(hp, sbp, in sbd_get_detach_devlist()
3653 detach_devlist = sbd_get_devlist(hp, sbp, in sbd_get_detach_devlist()
3717 sbd_board_t *sbp; in sbd_post_detach_devlist() local
3722 sbp = SBDH2BD(hp->h_sbd); in sbd_post_detach_devlist()
3725 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_post_detach_devlist()
3778 if (sbd_check_unit_attached(sbp, dip, unit, nodetype, in sbd_post_detach_devlist()
3785 f, sbd_ct_str[(int)nodetype], sbp->sb_num, in sbd_post_detach_devlist()
3790 SBD_DEV_CLR_ATTACHED(sbp, nodetype, unit); in sbd_post_detach_devlist()
3791 SBD_DEV_CLR_RELEASED(sbp, nodetype, unit); in sbd_post_detach_devlist()
3792 SBD_DEV_CLR_UNREFERENCED(sbp, nodetype, unit); in sbd_post_detach_devlist()
3793 SBD_DEVICE_TRANSITION(sbp, nodetype, unit, in sbd_post_detach_devlist()
3798 bstate = SBD_BOARD_STATE(sbp); in sbd_post_detach_devlist()
3800 if (SBD_DEVS_PRESENT(sbp) == SBD_DEVS_UNATTACHED(sbp)) { in sbd_post_detach_devlist()
3804 SBD_BOARD_TRANSITION(sbp, SBD_STATE_UNCONFIGURED); in sbd_post_detach_devlist()
3805 } else if ((SBD_BOARD_STATE(sbp) != SBD_STATE_PARTIAL) && in sbd_post_detach_devlist()
3806 SBD_DEVS_ATTACHED(sbp)) { in sbd_post_detach_devlist()
3810 SBD_BOARD_TRANSITION(sbp, SBD_STATE_PARTIAL); in sbd_post_detach_devlist()
3841 sbd_check_unit_attached(sbd_board_t *sbp, dev_info_t *dip, int unit, in sbd_check_unit_attached() argument
3850 sbd_handle_t *hp = MACHBD2HD(sbp); in sbd_check_unit_attached()
3853 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_check_unit_attached()
3903 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_check_unit_attached()
3908 ddi_walk_devs(sbp->sb_topdip, sbd_check_io_attached, in sbd_check_unit_attached()
3947 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_get_memhandle() local
3955 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_get_memhandle()
3965 mp = SBD_GET_BOARD_MEMUNIT(sbp, unit); in sbd_get_memhandle()
3972 SBD_SET_ERRSTR(SBD_HD2ERR(hp), sbp->sb_mempath[unit]); in sbd_get_memhandle()
3983 sbd_board_t *sbp; in sbd_cpu_cnt() local
3985 sbp = SBDH2BD(hp->h_sbd); in sbd_cpu_cnt()
3990 devset &= SBD_DEVS_PRESENT(sbp); in sbd_cpu_cnt()
4009 if ((sbp->sb_devlist[NIX(SBD_COMP_CMP)][c] == NULL) && in sbd_cpu_cnt()
4010 (sbp->sb_devlist[NIX(SBD_COMP_CMP)][c1] == NULL)) in sbd_cpu_cnt()
4023 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_mem_cnt() local
4028 devset &= SBD_DEVS_PRESENT(sbp); in sbd_mem_cnt()
4037 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][i]; in sbd_mem_cnt()
4058 sbd_board_t *sbp; in sbd_mem_status() local
4065 sbp = SBDH2BD(hp->h_sbd); in sbd_mem_status()
4072 mutex_enter(&sbp->sb_slock); in sbd_mem_status()
4077 devset &= SBD_DEVS_PRESENT(sbp); in sbd_mem_status()
4090 if (SBD_DEVICE_STATE(sbp, SBD_COMP_MEM, m) == SBD_STATE_EMPTY) in sbd_mem_status()
4093 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][m]; in sbd_mem_status()
4097 mp = SBD_GET_BOARD_MEMUNIT(sbp, m); in sbd_mem_status()
4123 sbp, SBD_COMP_MEM, m)); in sbd_mem_status()
4191 mutex_exit(&sbp->sb_slock); in sbd_mem_status()
4201 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_cancel() local
4211 devset = HD2MACHHD(hp)->sh_devset & SBD_DEVS_UNREFERENCED(sbp); in sbd_cancel()
4221 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_CPU, i, in sbd_cancel()
4224 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_CPU, i, in sbd_cancel()
4232 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_IO, i, in sbd_cancel()
4240 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_MEM, i, in sbd_cancel()
4243 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_MEM, i, in sbd_cancel()
4250 SBD_DEVS_CANCEL(sbp, devset); in sbd_cancel()
4252 if (SBD_DEVS_UNREFERENCED(sbp) == 0) { in sbd_cancel()
4258 if (SBD_DEVS_ATTACHED(sbp) == SBD_DEVS_PRESENT(sbp)) in sbd_cancel()
4262 if (SBD_BOARD_STATE(sbp) != new_state) { in sbd_cancel()
4263 SBD_BOARD_TRANSITION(sbp, new_state); in sbd_cancel()
4265 sbp->sb_ostate = SBD_STAT_CONFIGURED; in sbd_cancel()
4266 (void) drv_getparm(TIME, (void *)&sbp->sb_time); in sbd_cancel()
4297 sbd_board_t *sbp = SBDH2BD(hp->h_sbd); in sbd_status() local
4313 devset &= SBD_DEVS_PRESENT(sbp); in sbd_status()
4399 mutex_enter(&sbp->sb_flags_mutex); in sbd_status()
4400 switch (sbp->sb_state) { in sbd_status()
4405 if (sbp->sb_flags & SBD_BOARD_STATUS_CACHED) { in sbd_status()
4406 bcopy(&sbp->sb_stat, dstatp, sizeof (sbd_stat_t)); in sbd_status()
4407 dstatp->s_rstate = rstate_cvt(sbp->sb_state); in sbd_status()
4408 dstatp->s_ostate = ostate_cvt(sbp->sb_state); in sbd_status()
4409 dstatp->s_busy = sbp->sb_busy; in sbd_status()
4410 dstatp->s_time = sbp->sb_time; in sbd_status()
4411 dstatp->s_cond = sbp->sb_cond; in sbd_status()
4417 sbp->sb_flags &= ~SBD_BOARD_STATUS_CACHED; in sbd_status()
4418 dstatp->s_board = sbp->sb_num; in sbd_status()
4419 dstatp->s_ostate = ostate_cvt(sbp->sb_state); in sbd_status()
4420 dstatp->s_time = sbp->sb_time; in sbd_status()
4422 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_status()
4432 mutex_exit(&sbp->sb_flags_mutex); in sbd_status()
4441 dstatp->s_busy = sbp->sb_busy; in sbd_status()
4442 sbp->sb_cond = (sbd_cond_t)dstatp->s_cond; in sbd_status()
4443 bcopy(dstatp, &sbp->sb_stat, in sbd_status()
4445 sbp->sb_flags |= SBD_BOARD_STATUS_CACHED; in sbd_status()
4450 mutex_exit(&sbp->sb_flags_mutex); in sbd_status()
4622 "for board %d", f, sbp->sb_num); in sbd_status()
4631 f, sbp->sb_num); in sbd_status()
4647 sbd_board_discovery(sbd_board_t *sbp) in sbd_board_discovery() argument
4656 sbd_handle_t *hp = MACHBD2HD(sbp); in sbd_board_discovery()
4658 if (SBD_DEVS_PRESENT(sbp) == 0) { in sbd_board_discovery()
4660 f, sbp->sb_num); in sbd_board_discovery()
4671 hdp = sbd_get_sbdp_handle(sbp, hp); in sbd_board_discovery()
4676 if (!SBD_DEV_IS_PRESENT(sbp, SBD_COMP_CPU, i)) in sbd_board_discovery()
4679 dip = sbp->sb_devlist[NIX(SBD_COMP_CPU)][i]; in sbd_board_discovery()
4692 SBD_DEV_SET_ATTACHED(sbp, SBD_COMP_CPU, i); in sbd_board_discovery()
4695 f, sbp->sb_num, cpuid); in sbd_board_discovery()
4698 sbd_init_cpu_unit(sbp, i); in sbd_board_discovery()
4710 if (!SBD_DEV_IS_PRESENT(sbp, SBD_COMP_MEM, i)) in sbd_board_discovery()
4713 dip = sbp->sb_devlist[NIX(SBD_COMP_MEM)][i]; in sbd_board_discovery()
4719 if (SBD_DEV_IS_PRESENT(sbp, SBD_COMP_MEM, i)) { in sbd_board_discovery()
4720 ASSERT(sbp->sb_ndev != 0); in sbd_board_discovery()
4721 SBD_DEV_CLR_PRESENT(sbp, SBD_COMP_MEM, i); in sbd_board_discovery()
4722 sbp->sb_ndev--; in sbd_board_discovery()
4724 sbp->sb_devlist[NIX(SBD_COMP_MEM)][i] = NULL; in sbd_board_discovery()
4752 SBD_DEV_SET_ATTACHED(sbp, SBD_COMP_MEM, i); in sbd_board_discovery()
4755 f, sbp->sb_num, i); in sbd_board_discovery()
4757 sbd_init_mem_unit(sbp, i, ep); in sbd_board_discovery()
4773 if (!SBD_DEV_IS_PRESENT(sbp, SBD_COMP_IO, i)) in sbd_board_discovery()
4776 dip = sbp->sb_devlist[NIX(SBD_COMP_IO)][i]; in sbd_board_discovery()
4791 SBD_DEV_SET_ATTACHED(sbp, SBD_COMP_IO, i); in sbd_board_discovery()
4794 f, sbp->sb_num, i); in sbd_board_discovery()
4796 sbd_init_io_unit(sbp, i); in sbd_board_discovery()
4799 SBD_DEVS_CONFIGURE(sbp, devs_attached); in sbd_board_discovery()
4800 if (devs_attached && ((devs_lost = SBD_DEVS_UNATTACHED(sbp)) != 0)) { in sbd_board_discovery()
4814 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_CPU, in sbd_board_discovery()
4820 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_MEM, in sbd_board_discovery()
4826 SBD_DEVICE_TRANSITION(sbp, SBD_COMP_IO, in sbd_board_discovery()
4839 switch (get_node_type(wp->sbp, rdip, NULL)) { in hold_rele_branch()
4875 sbd_board_init(sbd_board_t *sbp, sbd_softstate_t *softsp, in sbd_board_init() argument
4883 mutex_init(&sbp->sb_mutex, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4884 mutex_init(&sbp->sb_flags_mutex, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4885 mutex_init(&sbp->sb_slock, NULL, MUTEX_DRIVER, NULL); in sbd_board_init()
4887 sbp->sb_ref = 0; in sbd_board_init()
4888 sbp->sb_num = bd; in sbd_board_init()
4889 sbp->sb_time = gethrestime_sec(); in sbd_board_init()
4896 sbp->sb_topdip = top_dip; in sbd_board_init()
4897 sbp->sb_cpuid = -1; in sbd_board_init()
4898 sbp->sb_softsp = (void *) softsp; in sbd_board_init()
4899 sbp->sb_cond = SBD_COND_UNKNOWN; in sbd_board_init()
4900 sbp->sb_wnode = wnode; in sbd_board_init()
4901 sbp->sb_memaccess_ok = 1; in sbd_board_init()
4910 sbp->sb_devlist[NIX(SBD_COMP_CPU)] = GETSTRUCT(dev_info_t *, in sbd_board_init()
4916 sbp->sb_devlist[NIX(SBD_COMP_MEM)] = GETSTRUCT(dev_info_t *, in sbd_board_init()
4922 sbp->sb_devlist[NIX(SBD_COMP_IO)] = GETSTRUCT(dev_info_t *, in sbd_board_init()
4926 sbp->sb_dev[NIX(SBD_COMP_CPU)] = GETSTRUCT(sbd_dev_unit_t, in sbd_board_init()
4929 sbp->sb_dev[NIX(SBD_COMP_MEM)] = GETSTRUCT(sbd_dev_unit_t, in sbd_board_init()
4932 sbp->sb_dev[NIX(SBD_COMP_IO)] = GETSTRUCT(sbd_dev_unit_t, in sbd_board_init()
4936 sbp->sb_cpupath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4940 sbp->sb_mempath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4944 sbp->sb_iopath[i] = kmem_zalloc(MAXPATHLEN, KM_SLEEP); in sbd_board_init()
4951 ASSERT(sbp->sb_topdip); in sbd_board_init()
4952 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_board_init()
4955 walk.sbp = sbp; in sbd_board_init()
4957 ddi_walk_devs(sbp->sb_topdip, hold_rele_branch, (void *)&walk); in sbd_board_init()
4964 if (sbd_init_devlists(sbp) == 0) { in sbd_board_init()
4965 SBD_BOARD_TRANSITION(sbp, SBD_STATE_EMPTY); in sbd_board_init()
4971 ASSERT(SBD_DEVS_PRESENT(sbp) != 0); in sbd_board_init()
4976 sbd_board_discovery(sbp); in sbd_board_init()
4978 if (SBD_DEVS_UNATTACHED(sbp) == 0) { in sbd_board_init()
4983 SBD_BOARD_TRANSITION(sbp, SBD_STATE_CONFIGURED); in sbd_board_init()
4984 sbp->sb_cond = SBD_COND_OK; in sbd_board_init()
4985 } else if (SBD_DEVS_ATTACHED(sbp)) { in sbd_board_init()
4986 SBD_BOARD_TRANSITION(sbp, SBD_STATE_PARTIAL); in sbd_board_init()
4988 SBD_BOARD_TRANSITION(sbp, SBD_STATE_CONNECTED); in sbd_board_init()
4994 sbd_board_destroy(sbd_board_t *sbp) in sbd_board_destroy() argument
5001 SBD_BOARD_TRANSITION(sbp, SBD_STATE_EMPTY); in sbd_board_destroy()
5007 mp = SBD_GET_BOARD_MEMUNIT(sbp, i); in sbd_board_destroy()
5015 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_MEM)], in sbd_board_destroy()
5017 sbp->sb_dev[NIX(SBD_COMP_MEM)] = NULL; in sbd_board_destroy()
5022 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_CPU)], in sbd_board_destroy()
5024 sbp->sb_dev[NIX(SBD_COMP_CPU)] = NULL; in sbd_board_destroy()
5029 FREESTRUCT(sbp->sb_dev[NIX(SBD_COMP_IO)], in sbd_board_destroy()
5031 sbp->sb_dev[NIX(SBD_COMP_IO)] = NULL; in sbd_board_destroy()
5038 kmem_free((caddr_t)sbp->sb_cpupath[i], MAXPATHLEN); in sbd_board_destroy()
5040 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_CPU)], dev_info_t *, in sbd_board_destroy()
5042 sbp->sb_devlist[NIX(SBD_COMP_CPU)] = NULL; in sbd_board_destroy()
5048 kmem_free((caddr_t)sbp->sb_mempath[i], MAXPATHLEN); in sbd_board_destroy()
5050 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_MEM)], dev_info_t *, in sbd_board_destroy()
5052 sbp->sb_devlist[NIX(SBD_COMP_MEM)] = NULL; in sbd_board_destroy()
5058 kmem_free((caddr_t)sbp->sb_iopath[i], MAXPATHLEN); in sbd_board_destroy()
5060 FREESTRUCT(sbp->sb_devlist[NIX(SBD_COMP_IO)], dev_info_t *, in sbd_board_destroy()
5062 sbp->sb_devlist[NIX(SBD_COMP_IO)] = NULL; in sbd_board_destroy()
5067 ASSERT(sbp->sb_topdip); in sbd_board_destroy()
5068 pdip = ddi_get_parent(sbp->sb_topdip); in sbd_board_destroy()
5071 walk.sbp = sbp; in sbd_board_destroy()
5073 ddi_walk_devs(sbp->sb_topdip, hold_rele_branch, (void *)&walk); in sbd_board_destroy()
5077 mutex_destroy(&sbp->sb_slock); in sbd_board_destroy()
5078 mutex_destroy(&sbp->sb_flags_mutex); in sbd_board_destroy()
5079 mutex_destroy(&sbp->sb_mutex); in sbd_board_destroy()