03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms of the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Common Development and Distribution License (the "License").
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You may not use this file except in compliance with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * or http://www.opensolaris.org/os/licensing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL HEADER in each
03831d35f7499c87d51205817c93e9a8d42c4baestevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below this CDDL HEADER, with the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * fields enclosed by brackets "[]" replaced with your own identifying
03831d35f7499c87d51205817c93e9a8d42c4baestevel * information: Portions Copyright [yyyy] [name of copyright owner]
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifndef _SBDP_PRIV_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define _SBDP_PRIV_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#pragma ident "%Z%%M% %I% %E% SMI"
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern "C" {
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/sbd.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/sbdp_mbox.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/conf.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/ddi_impldefs.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel#include <sys/serengeti.h>
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef DEBUG
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_STATE 0x00000001
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_QR 0x00000002
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_CPU 0x00000004
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_MEM 0x00000008
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_IO 0x00000010
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_MBOX 0x00000020
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_ERR 0x00000040
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_MISC 0x00000080
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDPDBG_FUNC 0x00000100
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern uint_t sbdp_debug;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_ALL if (sbdp_debug) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_STATE if (sbdp_debug & SBDPDBG_STATE) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_QR if (sbdp_debug & SBDPDBG_QR) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_CPU if (sbdp_debug & SBDPDBG_CPU) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MEM if (sbdp_debug & SBDPDBG_MEM) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_IO if (sbdp_debug & SBDPDBG_IO) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MBOX if (sbdp_debug & SBDPDBG_MBOX) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_ERR if (sbdp_debug & SBDPDBG_ERR) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MISC if (sbdp_debug & SBDPDBG_MISC) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_FUNC if (sbdp_debug & SBDPDBG_FUNC) prom_printf
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#else /* DEBUG */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_ALL
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_STATE
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_QR
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_CPU
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MEM
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_IO
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MBOX
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_ERR
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_MISC
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DBG_FUNC
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* DEBUG */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define PORTID_BAD -1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define OBP_PORTID "portid"
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_MAX_BOARDS plat_max_boards()
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_MAX_MEM_NODES_PER_BOARD 4
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_MAX_NODES 32
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_MAX_WNODES 16
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CPU present macros
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_SET_CPU_PRESENT(bdp, unit)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel ((bdp)->cpus_present |= (1 << (unit)))
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_IS_CPU_PRESENT(bdp, unit)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel (((bdp)->cpus_present & (1 << (unit))) != 0)
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CPU reset macros
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_SET_CPU_IN_RESET(bdp, unit)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel ((bdp)->cpus_in_reset |= (1 << (unit)))
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_UNSET_CPU_IN_RESET(bdp, unit)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel ((bdp)->cpus_in_reset &= ~(1 << (unit)))
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_IS_CPU_IN_RESET(bdp, unit)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel (((bdp)->cpus_in_reset & (1 << (unit))) != 0)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_SET_ALL_CPUS_IN_RESET(bdp)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel ((bdp)->cpus_in_reset |= 0xf)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_UNSET_ALL_CPUS_IN_RESET(bdp)\
03831d35f7499c87d51205817c93e9a8d42c4baestevel ((bdp)->cpus_in_reset = 0x0)
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_ALL_CPUS -1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * These definitions come from the SC. Should the SC change them
03831d35f7499c87d51205817c93e9a8d42c4baestevel * then we need to changed them
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_OFF 0x00
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_INIT 0x07
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_QUICK 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_MIN 0x20
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_DEFAULT 0x40
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_MEM1 0x60
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_MEM2 0x7f
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_DIAG_NVCI 0xffff /* Use stored value in nvci */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelint *slices;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_INIT_PLATOPTS (uint_t)-1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define SBDP_PLATFORM_OPTS(s_platopts) ((s_platopts) = SBDP_INIT_PLATOPTS, \
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBD_SET_PLATOPTS(SBD_CMD_TEST, (s_platopts)), \
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBD_SET_PLATOPTS(SBD_CMD_PASSTHRU, (s_platopts)))
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct sbdp_bank {
03831d35f7499c87d51205817c93e9a8d42c4baestevel int id;
03831d35f7499c87d51205817c93e9a8d42c4baestevel ushort_t valid;
03831d35f7499c87d51205817c93e9a8d42c4baestevel ushort_t uk;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t um;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uchar_t lk;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uchar_t lm;
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct sbdp_bank *bd_next; /* in the board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct sbdp_bank *seg_next; /* in the segment */
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_bank_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct sbdp_segs {
03831d35f7499c87d51205817c93e9a8d42c4baestevel int id;
03831d35f7499c87d51205817c93e9a8d42c4baestevel int intlv; /* interleave for this segment */
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t base; /* base address for this segment */
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t size; /* size of this segment */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int nbanks; /* number of banks in this segment */
03831d35f7499c87d51205817c93e9a8d42c4baestevel sbdp_bank_t *banks; /* pointer to the banks of this seg */
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct sbdp_segs *next;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_seg_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel int bd;
03831d35f7499c87d51205817c93e9a8d42c4baestevel int wnode;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t bpa; /* base physical addr for this board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int nnum; /* number of nodes */
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct memlist *ml; /* memlist for this board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel pnode_t nodes[SBDP_MAX_MEM_NODES_PER_BOARD];
03831d35f7499c87d51205817c93e9a8d42c4baestevel kmutex_t bd_mutex; /* mutex for this board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel show_board_t *bd_sc; /* info obtained from the SC */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int valid_cp; /* Is this a valid copy of show_board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel sbdp_bank_t *banks; /* Banks for this board */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int cpus_in_reset;
03831d35f7499c87d51205817c93e9a8d42c4baestevel int cpus_present;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_bd_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct sbdp_wnode {
03831d35f7499c87d51205817c93e9a8d42c4baestevel int wnode; /* wildcat node */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int nbds; /* number of bds for this node */
03831d35f7499c87d51205817c93e9a8d42c4baestevel sbdp_bd_t *bds; /* pointer to the list of bds */
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct sbdp_wnode *next; /* ptr to nex wnode */
03831d35f7499c87d51205817c93e9a8d42c4baestevel struct sbdp_wnode *prev; /* ptr to prev node */
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_wnode_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t regspec_addr_hi;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t regspec_addr_lo;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t regspec_size_hi;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t regspec_size_lo;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} regspace_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Suspend states used internally by sbdp_suspend and
03831d35f7499c87d51205817c93e9a8d42c4baestevel * sbdp_resume
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef enum sbd_suspend_state {
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBDP_SRSTATE_BEGIN = 0,
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBDP_SRSTATE_USER,
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBDP_SRSTATE_DRIVER,
03831d35f7499c87d51205817c93e9a8d42c4baestevel SBDP_SRSTATE_FULL
03831d35f7499c87d51205817c93e9a8d42c4baestevel} suspend_state_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * specific suspend/resume interface handle
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel sbd_error_t sep;
03831d35f7499c87d51205817c93e9a8d42c4baestevel dev_info_t *sr_failed_dip;
03831d35f7499c87d51205817c93e9a8d42c4baestevel suspend_state_t sr_suspend_state;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t sr_flags;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint_t sh_ndi;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_sr_handle_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct sbdp_shutdown {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t estack;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t flushaddr;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint32_t size;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint32_t linesize;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint64_t physaddr;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} sbdp_shutdown_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern int plat_max_boards();
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct {
03831d35f7499c87d51205817c93e9a8d42c4baestevel int node; /* wildcat node */
03831d35f7499c87d51205817c93e9a8d42c4baestevel int board;
03831d35f7499c87d51205817c93e9a8d42c4baestevel pnode_t nodes[SBDP_MAX_NODES];
03831d35f7499c87d51205817c93e9a8d42c4baestevel int num_of_nodes;
03831d35f7499c87d51205817c93e9a8d42c4baestevel int flags;
03831d35f7499c87d51205817c93e9a8d42c4baestevel int error;
03831d35f7499c87d51205817c93e9a8d42c4baestevel dev_info_t *top_node;
03831d35f7499c87d51205817c93e9a8d42c4baestevel char *errstr;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} attach_pkt_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern uint64_t *sbdp_valp;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelsbdp_sr_handle_t *sbdp_get_sr_handle(void);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_release_sr_handle(sbdp_sr_handle_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_suspend(sbdp_sr_handle_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_resume(sbdp_sr_handle_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_set_err(sbd_error_t *ep, int ecode, char *rsc);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_is_node_bad(pnode_t);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_walk_prom_tree(pnode_t, int(*)(pnode_t, void *, uint_t), void *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_detach_bd(int node, int board, sbd_error_t *sep);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_attach_bd(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_get_bd_and_wnode_num(pnode_t, int *, int *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_update_bd_info(sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelsbdp_bd_t *sbdp_get_bd_info(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_make_bd_mem_contigous(int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelsbd_cond_t sbdp_get_comp_status(pnode_t);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_init_bd_banks(sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_swap_list_of_banks(sbdp_bd_t *, sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_fini_bd_banks(sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_print_bd_banks(sbdp_bd_t *);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_add_new_bd_info(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_cleanup_bd(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_cpu_in_reset(int, int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_is_cpu_in_reset(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_set_cpu_present(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_is_cpu_present(int, int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_swap_slices(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef DEBUG
03831d35f7499c87d51205817c93e9a8d42c4baestevelvoid sbdp_print_all_segs(void);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_passthru_test_quiesce(sbdp_handle_t *hp, void *);
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_select_top_nodes(pnode_t, void *, uint_t);
03831d35f7499c87d51205817c93e9a8d42c4baestevelpnode_t sbdp_find_nearby_cpu_by_portid(pnode_t, processorid_t);
03831d35f7499c87d51205817c93e9a8d42c4baestevelint sbdp_board_non_panther_cpus(int, int);
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevel}
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* _SBDP_PRIV_H */