xref: /onnv-gate/usr/src/uts/intel/io/intel_nb5000/nb_log.h (revision 10049:b4b11e684225)
17532SSean.Ye@Sun.COM /*
27532SSean.Ye@Sun.COM  * CDDL HEADER START
37532SSean.Ye@Sun.COM  *
47532SSean.Ye@Sun.COM  * The contents of this file are subject to the terms of the
57532SSean.Ye@Sun.COM  * Common Development and Distribution License (the "License").
67532SSean.Ye@Sun.COM  * You may not use this file except in compliance with the License.
77532SSean.Ye@Sun.COM  *
87532SSean.Ye@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97532SSean.Ye@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107532SSean.Ye@Sun.COM  * See the License for the specific language governing permissions
117532SSean.Ye@Sun.COM  * and limitations under the License.
127532SSean.Ye@Sun.COM  *
137532SSean.Ye@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147532SSean.Ye@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157532SSean.Ye@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167532SSean.Ye@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177532SSean.Ye@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187532SSean.Ye@Sun.COM  *
197532SSean.Ye@Sun.COM  * CDDL HEADER END
207532SSean.Ye@Sun.COM  */
217532SSean.Ye@Sun.COM 
227532SSean.Ye@Sun.COM /*
23*10049SVuong.Nguyen@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
247532SSean.Ye@Sun.COM  * Use is subject to license terms.
257532SSean.Ye@Sun.COM  */
267532SSean.Ye@Sun.COM 
277532SSean.Ye@Sun.COM #ifndef _NB_LOG_H
287532SSean.Ye@Sun.COM #define	_NB_LOG_H
297532SSean.Ye@Sun.COM 
307532SSean.Ye@Sun.COM #ifdef __cplusplus
317532SSean.Ye@Sun.COM extern "C" {
327532SSean.Ye@Sun.COM #endif
337532SSean.Ye@Sun.COM 
347532SSean.Ye@Sun.COM #include <sys/cpu_module.h>
357532SSean.Ye@Sun.COM #include "nb5000.h"
367532SSean.Ye@Sun.COM 
377532SSean.Ye@Sun.COM #define	NB_MAX_ERRORS	4
387532SSean.Ye@Sun.COM 
397532SSean.Ye@Sun.COM /* North Bridge front side bus error registers */
407532SSean.Ye@Sun.COM 
417532SSean.Ye@Sun.COM typedef struct nb_fsb_regs {
427532SSean.Ye@Sun.COM 	uint8_t	fsb;		/* cpu slot */
437532SSean.Ye@Sun.COM 	uint8_t ferr_fat_fsb;
447532SSean.Ye@Sun.COM 	uint8_t nerr_fat_fsb;
457532SSean.Ye@Sun.COM 	uint8_t ferr_nf_fsb;
467532SSean.Ye@Sun.COM 	uint8_t nerr_nf_fsb;
477532SSean.Ye@Sun.COM 	uint64_t nrecfsb_addr;
487532SSean.Ye@Sun.COM 	uint32_t nrecfsb;
497532SSean.Ye@Sun.COM 	uint32_t recfsb;
507532SSean.Ye@Sun.COM } nb_fsb_regs_t;
517532SSean.Ye@Sun.COM 
527532SSean.Ye@Sun.COM /* PCI express ESI (South Bridge) error registers */
537532SSean.Ye@Sun.COM 
547532SSean.Ye@Sun.COM typedef struct nb_pex_regs {
557532SSean.Ye@Sun.COM 	uint8_t pex;		/* pci express slot */
567532SSean.Ye@Sun.COM 	uint32_t pex_fat_ferr;
577532SSean.Ye@Sun.COM 	uint32_t pex_fat_nerr;
587532SSean.Ye@Sun.COM 	uint32_t pex_nf_corr_ferr;
597532SSean.Ye@Sun.COM 	uint32_t pex_nf_corr_nerr;
607532SSean.Ye@Sun.COM 	uint32_t uncerrsev;		/* uncorrectable error severity */
617532SSean.Ye@Sun.COM 	uint32_t rperrsts;		/* root error status */
627532SSean.Ye@Sun.COM 	uint32_t rperrsid;		/* error source identification */
637532SSean.Ye@Sun.COM 	uint32_t uncerrsts;		/* uncorrectable error status */
647532SSean.Ye@Sun.COM 	uint32_t aerrcapctrl;	/* advanced error capabilities and control */
657532SSean.Ye@Sun.COM 	uint32_t corerrsts;	/* correctable error status */
667532SSean.Ye@Sun.COM 	uint16_t pexdevsts;	/* pci express device status */
677532SSean.Ye@Sun.COM } nb_pex_regs_t;
687532SSean.Ye@Sun.COM 
697532SSean.Ye@Sun.COM /* North Bridge memory controller hub internal error registers */
707532SSean.Ye@Sun.COM 
717532SSean.Ye@Sun.COM typedef struct nb_int {
727532SSean.Ye@Sun.COM 	uint16_t ferr_fat_int;	/* first fatal error */
737532SSean.Ye@Sun.COM 	uint16_t ferr_nf_int;	/* first non-fatal error */
747532SSean.Ye@Sun.COM 	uint16_t nerr_fat_int;	/* next fatal error */
757532SSean.Ye@Sun.COM 	uint16_t nerr_nf_int;	/* next non-fatal error */
767532SSean.Ye@Sun.COM 	uint32_t nrecint;	/* non recoverable error log */
777532SSean.Ye@Sun.COM 	uint32_t recint;	/* recoverable error log */
787532SSean.Ye@Sun.COM 	uint64_t nrecsf;	/* non recoverable control information */
797532SSean.Ye@Sun.COM 	uint64_t recsf;		/* recoverable control information */
807532SSean.Ye@Sun.COM } nb_int_t;
817532SSean.Ye@Sun.COM 
827532SSean.Ye@Sun.COM /* memory errors */
837532SSean.Ye@Sun.COM 
847532SSean.Ye@Sun.COM typedef struct nb_fat_fbd {
857532SSean.Ye@Sun.COM 	uint32_t ferr_fat_fbd;	/* fb-dimm first fatal error */
867532SSean.Ye@Sun.COM 	uint32_t nerr_fat_fbd;	/* fb-dimm next fatal error */
877532SSean.Ye@Sun.COM 	uint32_t nrecmema;	/* non recoverable memory error log */
887532SSean.Ye@Sun.COM 	uint32_t nrecmemb;	/* non recoverable memory error log */
897532SSean.Ye@Sun.COM 	uint32_t nrecfglog;	/* non recoverable dimm configuration */
907532SSean.Ye@Sun.COM 	uint32_t nrecfbda;	/* non recoverable dimm log A */
917532SSean.Ye@Sun.COM 	uint32_t nrecfbdb;	/* non recoverable dimm log B */
927532SSean.Ye@Sun.COM 	uint32_t nrecfbdc;	/* non recoverable dimm log C */
937532SSean.Ye@Sun.COM 	uint32_t nrecfbdd;	/* non recoverable dimm log D */
947532SSean.Ye@Sun.COM 	uint32_t nrecfbde;	/* non recoverable dimm log E */
957532SSean.Ye@Sun.COM 	uint32_t nrecfbdf;	/* non recoverable dimm log F */
967532SSean.Ye@Sun.COM 	uint32_t spcpc;		/* spare copy control */
977532SSean.Ye@Sun.COM 	uint8_t spcps;		/* spare copy status */
987532SSean.Ye@Sun.COM 	uint32_t uerrcnt;	/* uncorrectable error count */
997532SSean.Ye@Sun.COM 	uint32_t uerrcnt_last;	/* saved copy of uncorrectable error count */
1007532SSean.Ye@Sun.COM 	uint32_t badrama;	/* bad dram marker A */
1017532SSean.Ye@Sun.COM 	uint16_t badramb;	/* bad dram marker B */
1027532SSean.Ye@Sun.COM 	uint32_t badcnt;	/* bad dram counter */
1037532SSean.Ye@Sun.COM } nb_fat_fbd_t;
1047532SSean.Ye@Sun.COM 
1057532SSean.Ye@Sun.COM typedef struct nb_nf_fbd {
1067532SSean.Ye@Sun.COM 	uint32_t ferr_nf_fbd;	/* fb-dimm first non-fatal error */
1077532SSean.Ye@Sun.COM 	uint32_t nerr_nf_fbd;	/* fb-dimm next non-fatal error */
1087532SSean.Ye@Sun.COM 	uint32_t redmemb;	/* recoverable dimm data error log */
1097532SSean.Ye@Sun.COM 	uint32_t recmema;	/* recoverable memory error log A */
1107532SSean.Ye@Sun.COM 	uint32_t recmemb;	/* recoverable memory error log B */
1117532SSean.Ye@Sun.COM 	uint32_t recfglog;	/* recoverable dimm configuration */
1127532SSean.Ye@Sun.COM 	uint32_t recfbda;	/* recoverable dimm log A */
1137532SSean.Ye@Sun.COM 	uint32_t recfbdb;	/* recoverable dimm log B */
1147532SSean.Ye@Sun.COM 	uint32_t recfbdc;	/* recoverable dimm log C */
1157532SSean.Ye@Sun.COM 	uint32_t recfbdd;	/* recoverable dimm log D */
1167532SSean.Ye@Sun.COM 	uint32_t recfbde;	/* recoverable dimm log E */
1177532SSean.Ye@Sun.COM 	uint32_t recfbdf;	/* recoverable dimm log F */
1187532SSean.Ye@Sun.COM 	uint32_t spcpc;		/* spare copy control */
1197532SSean.Ye@Sun.COM 	uint8_t spcps;		/* spare copy status */
1207532SSean.Ye@Sun.COM 	uint32_t cerrcnta;	/* correctable error count A */
1217532SSean.Ye@Sun.COM 	uint32_t cerrcntb;	/* correctable error count B */
1227532SSean.Ye@Sun.COM 	uint32_t cerrcntc;	/* correctable error count C */
1237532SSean.Ye@Sun.COM 	uint32_t cerrcntd;	/* correctable error count D */
1247532SSean.Ye@Sun.COM 	uint32_t cerrcnta_last;	/* saved copy of correctable error count A */
1257532SSean.Ye@Sun.COM 	uint32_t cerrcntb_last;	/* saved copy of correctable error count B */
1267532SSean.Ye@Sun.COM 	uint32_t cerrcntc_last;	/* saved copy of correctable error count C */
1277532SSean.Ye@Sun.COM 	uint32_t cerrcntd_last;	/* saved copy of correctable error count D */
1287532SSean.Ye@Sun.COM 	uint32_t badrama;	/* bad dram marker A */
1297532SSean.Ye@Sun.COM 	uint16_t badramb;	/* bad dram marker B */
1307532SSean.Ye@Sun.COM 	uint32_t badcnt;	/* bad dram counter */
1317532SSean.Ye@Sun.COM } nb_nf_fbd_t;
1327532SSean.Ye@Sun.COM 
133*10049SVuong.Nguyen@Sun.COM typedef struct nb_nf_mem {
134*10049SVuong.Nguyen@Sun.COM 				/* Memory registers */
135*10049SVuong.Nguyen@Sun.COM 	uint32_t ferr_nf_mem;	/* MC first non-fatal error */
136*10049SVuong.Nguyen@Sun.COM 	uint32_t nerr_nf_mem;	/* MC next non-fatal error */
137*10049SVuong.Nguyen@Sun.COM 	uint32_t nrecmema;	/* non-recoverable memory error log A */
138*10049SVuong.Nguyen@Sun.COM 	uint32_t nrecmemb;	/* non-recoverable memory error log B */
139*10049SVuong.Nguyen@Sun.COM 	uint32_t redmema;	/* recoverable memory data error log A */
140*10049SVuong.Nguyen@Sun.COM 	uint32_t redmemb;	/* recoverable memory data error log B */
141*10049SVuong.Nguyen@Sun.COM 	uint32_t recmema;	/* recoverable memory error log A */
142*10049SVuong.Nguyen@Sun.COM 	uint32_t recmemb;	/* recoverable memory error log B */
143*10049SVuong.Nguyen@Sun.COM 
144*10049SVuong.Nguyen@Sun.COM 				/* Spare rank */
145*10049SVuong.Nguyen@Sun.COM 	uint32_t spcpc;		/* spare copy control */
146*10049SVuong.Nguyen@Sun.COM 	uint8_t spcps;		/* spare copy status */
147*10049SVuong.Nguyen@Sun.COM 
148*10049SVuong.Nguyen@Sun.COM 				/* RAS */
149*10049SVuong.Nguyen@Sun.COM 	uint32_t cerrcnt;	/* correctable error count A */
150*10049SVuong.Nguyen@Sun.COM 	uint32_t cerrcnt_ext;	/* correctable error count B */
151*10049SVuong.Nguyen@Sun.COM 	uint32_t cerrcnt_last;	/* correctable error count A */
152*10049SVuong.Nguyen@Sun.COM 	uint32_t cerrcnt_ext_last;	/* correctable error count B */
153*10049SVuong.Nguyen@Sun.COM 	uint32_t badram;	/* bad dram marker */
154*10049SVuong.Nguyen@Sun.COM 	uint32_t badcnt;	/* bad dram counter */
155*10049SVuong.Nguyen@Sun.COM 	uint32_t validlog;	/* valid log markers */
156*10049SVuong.Nguyen@Sun.COM } nb_nf_mem_t;
157*10049SVuong.Nguyen@Sun.COM 
1587532SSean.Ye@Sun.COM typedef struct nb_dma {
1597532SSean.Ye@Sun.COM 	uint16_t pcists;
1607532SSean.Ye@Sun.COM 	uint16_t pexdevsts;
1617532SSean.Ye@Sun.COM } nb_dma_t;
1627532SSean.Ye@Sun.COM 
1637532SSean.Ye@Sun.COM typedef struct nb_thr {
1647532SSean.Ye@Sun.COM 	uint8_t ferr_fat_thr;
1657532SSean.Ye@Sun.COM 	uint8_t ferr_nf_thr;
1667532SSean.Ye@Sun.COM 	uint8_t nerr_fat_thr;
1677532SSean.Ye@Sun.COM 	uint8_t nerr_nf_thr;
1687532SSean.Ye@Sun.COM 	uint8_t ctsts;
1697532SSean.Ye@Sun.COM 	uint16_t thrtsts;
1707532SSean.Ye@Sun.COM } nb_thr_t;
1717532SSean.Ye@Sun.COM 
1727532SSean.Ye@Sun.COM typedef struct nb_regs {
1737532SSean.Ye@Sun.COM 	int flag;
1747532SSean.Ye@Sun.COM 	uint32_t chipset;
1757532SSean.Ye@Sun.COM 	uint64_t ferr;
1767532SSean.Ye@Sun.COM 	uint32_t nerr;
1777532SSean.Ye@Sun.COM 	union {
1787532SSean.Ye@Sun.COM 		nb_fsb_regs_t fsb_regs;
1797532SSean.Ye@Sun.COM 		nb_pex_regs_t pex_regs;
1807532SSean.Ye@Sun.COM 		nb_int_t int_regs;
1817532SSean.Ye@Sun.COM 		nb_fat_fbd_t fat_fbd_regs;
1827532SSean.Ye@Sun.COM 		nb_nf_fbd_t nf_fbd_regs;
183*10049SVuong.Nguyen@Sun.COM 		nb_nf_mem_t nf_mem_regs;
1847532SSean.Ye@Sun.COM 		nb_dma_t dma_regs;
1857532SSean.Ye@Sun.COM 		nb_thr_t thr_regs;
1867532SSean.Ye@Sun.COM 	} nb;
1877532SSean.Ye@Sun.COM } nb_regs_t;
1887532SSean.Ye@Sun.COM 
1897532SSean.Ye@Sun.COM #define	NB_REG_LOG_FREE		0
1907532SSean.Ye@Sun.COM #define	NB_REG_LOG_FSB		1
1917532SSean.Ye@Sun.COM #define	NB_REG_LOG_PEX		2
1927532SSean.Ye@Sun.COM #define	NB_REG_LOG_INT		3
1937532SSean.Ye@Sun.COM #define	NB_REG_LOG_FAT_FBD	4
1947532SSean.Ye@Sun.COM #define	NB_REG_LOG_NF_FBD	5
1957532SSean.Ye@Sun.COM #define	NB_REG_LOG_DMA		6
1967532SSean.Ye@Sun.COM #define	NB_REG_LOG_THR		7
197*10049SVuong.Nguyen@Sun.COM #define	NB_REG_LOG_NF_MEM	8
1987532SSean.Ye@Sun.COM 
1997532SSean.Ye@Sun.COM typedef struct nb_logout {
2007532SSean.Ye@Sun.COM 	uint64_t acl_timestamp;
2017532SSean.Ye@Sun.COM 	char *type;
2027532SSean.Ye@Sun.COM 	nb_regs_t nb_regs;
2037532SSean.Ye@Sun.COM } nb_logout_t;
2047532SSean.Ye@Sun.COM 
2057532SSean.Ye@Sun.COM typedef struct nb_mem_scatchpad {
2067532SSean.Ye@Sun.COM 	int intel_error_list;		/* error number in Chipset Error List */
2077532SSean.Ye@Sun.COM 	int branch;
2087532SSean.Ye@Sun.COM 	int channel;
2097532SSean.Ye@Sun.COM 	int rank;
2107532SSean.Ye@Sun.COM 	int dimm;
2117532SSean.Ye@Sun.COM 	int bank;
2127532SSean.Ye@Sun.COM 	int cas;
2137532SSean.Ye@Sun.COM 	int ras;
2147532SSean.Ye@Sun.COM 	uint64_t offset;
2157532SSean.Ye@Sun.COM 	uint64_t pa;
2167532SSean.Ye@Sun.COM } nb_mem_scatchpad_t;
2177532SSean.Ye@Sun.COM 
2187532SSean.Ye@Sun.COM typedef union nb_scatchpad {
2197532SSean.Ye@Sun.COM 	nb_mem_scatchpad_t ms;
2207532SSean.Ye@Sun.COM 	int intel_error_list;		/* error number in Chipset Error List */
2217532SSean.Ye@Sun.COM } nb_scatchpad_t;
2227532SSean.Ye@Sun.COM 
2237532SSean.Ye@Sun.COM typedef struct nb_dimm {
2247532SSean.Ye@Sun.COM 	uint64_t dimm_size;
2257532SSean.Ye@Sun.COM 	uint8_t mtr_present;
226*10049SVuong.Nguyen@Sun.COM 	uint8_t start_rank;		/* id of the 1st rank */
227*10049SVuong.Nguyen@Sun.COM 	uint8_t nranks;			/* number of ranks */
2287532SSean.Ye@Sun.COM 	uint8_t nbanks;
2297532SSean.Ye@Sun.COM 	uint8_t ncolumn;
2307532SSean.Ye@Sun.COM 	uint8_t nrow;
2317532SSean.Ye@Sun.COM 	uint8_t width;
2327532SSean.Ye@Sun.COM 	uint8_t manufacture_location;
2337532SSean.Ye@Sun.COM 	uint8_t manufacture_week;
2347532SSean.Ye@Sun.COM 	uint8_t manufacture_year;	/* years from 2000 */
2357532SSean.Ye@Sun.COM 	uint16_t manufacture_id;
2367532SSean.Ye@Sun.COM 	uint32_t serial_number;
2377532SSean.Ye@Sun.COM 	char part_number[16];
2387532SSean.Ye@Sun.COM 	char revision[2];
2397532SSean.Ye@Sun.COM 	char label[64];
2407532SSean.Ye@Sun.COM } nb_dimm_t;
2417532SSean.Ye@Sun.COM 
2427532SSean.Ye@Sun.COM typedef struct bank_select {
2437532SSean.Ye@Sun.COM 	uint64_t base;
2447532SSean.Ye@Sun.COM 	uint64_t limit;
2457532SSean.Ye@Sun.COM 	uint8_t	way[2];
2467532SSean.Ye@Sun.COM } bank_select_t;
2477532SSean.Ye@Sun.COM 
2487532SSean.Ye@Sun.COM typedef struct rank_select {
2497532SSean.Ye@Sun.COM 	uint64_t base;
2507532SSean.Ye@Sun.COM 	uint64_t limit;
2517532SSean.Ye@Sun.COM 	uint32_t hole_base;
2527532SSean.Ye@Sun.COM 	uint32_t hole_size;
2537532SSean.Ye@Sun.COM 	uint8_t	rank[4];
2547532SSean.Ye@Sun.COM 	uint8_t interleave;
2557532SSean.Ye@Sun.COM 	uint8_t branch_interleave;
2567532SSean.Ye@Sun.COM } rank_select_t;
2577532SSean.Ye@Sun.COM 
2587532SSean.Ye@Sun.COM enum nb_memory_mode { NB_MEMORY_SINGLE_CHANNEL, NB_MEMORY_NORMAL,
2597532SSean.Ye@Sun.COM     NB_MEMORY_SPARE_RANK, NB_MEMORY_MIRROR };
2607532SSean.Ye@Sun.COM 
2617532SSean.Ye@Sun.COM extern int nb_5000_memory_controller;
2627532SSean.Ye@Sun.COM extern int nb_number_memory_controllers;
263*10049SVuong.Nguyen@Sun.COM extern int nb_channels_per_branch;
2647532SSean.Ye@Sun.COM extern int nb_dimms_per_channel;
2657532SSean.Ye@Sun.COM 
2667532SSean.Ye@Sun.COM extern nb_dimm_t **nb_dimms;
2677532SSean.Ye@Sun.COM extern uint32_t nb_chipset;
2687532SSean.Ye@Sun.COM 
2697532SSean.Ye@Sun.COM extern int nb_init(void);
2707532SSean.Ye@Sun.COM extern int nb_dev_init(void);
2717532SSean.Ye@Sun.COM extern void nb_dev_reinit(void);
2727532SSean.Ye@Sun.COM extern void nb_unload(void);
2737532SSean.Ye@Sun.COM extern void nb_dev_unload(void);
2747532SSean.Ye@Sun.COM extern uint32_t top_of_low_memory;
2757532SSean.Ye@Sun.COM extern bank_select_t nb_banks[NB_MAX_MEM_BRANCH_SELECT];
2767532SSean.Ye@Sun.COM extern rank_select_t nb_ranks[NB_5000_MAX_MEM_CONTROLLERS]
2777532SSean.Ye@Sun.COM 	[NB_MAX_MEM_RANK_SELECT];
2787532SSean.Ye@Sun.COM extern uint8_t spare_rank[NB_5000_MAX_MEM_CONTROLLERS];
2797532SSean.Ye@Sun.COM extern enum nb_memory_mode nb_mode;
280*10049SVuong.Nguyen@Sun.COM extern int nb_rank2dimm(int, int);
2817532SSean.Ye@Sun.COM 
2827532SSean.Ye@Sun.COM extern int inb_mc_register(cmi_hdl_t, void *, void *, void *);
2837532SSean.Ye@Sun.COM extern void nb_scrubber_enable(void);
2847532SSean.Ye@Sun.COM extern void nb_error_trap(cmi_hdl_t, boolean_t, boolean_t);
2857532SSean.Ye@Sun.COM 
2867532SSean.Ye@Sun.COM extern void nb_pci_cfg_setup(dev_info_t *);
2877532SSean.Ye@Sun.COM extern void nb_pci_cfg_free(void);
2887532SSean.Ye@Sun.COM 
2897532SSean.Ye@Sun.COM extern void *ras_regs;
2907532SSean.Ye@Sun.COM 
2917532SSean.Ye@Sun.COM extern uint8_t nb_pci_getb(int, int, int, int, int *);
2927532SSean.Ye@Sun.COM extern uint16_t nb_pci_getw(int, int, int, int, int *);
2937532SSean.Ye@Sun.COM extern uint32_t nb_pci_getl(int, int, int, int, int *);
2947532SSean.Ye@Sun.COM extern void nb_pci_putb(int, int, int, int, uint8_t);
2957532SSean.Ye@Sun.COM extern void nb_pci_putw(int, int, int, int, uint16_t);
2967532SSean.Ye@Sun.COM extern void nb_pci_putl(int, int, int, int, uint32_t);
2977532SSean.Ye@Sun.COM 
2987532SSean.Ye@Sun.COM extern void nb_fsb_mask_mc(int, uint16_t);
2997532SSean.Ye@Sun.COM extern void nb_fbd_mask_mc(uint32_t);
300*10049SVuong.Nguyen@Sun.COM extern void nb_mem_mask_mc(uint32_t);
3017532SSean.Ye@Sun.COM extern void nb_int_mask_mc(uint32_t);
3027532SSean.Ye@Sun.COM extern void nb_thr_mask_mc(uint16_t);
3037532SSean.Ye@Sun.COM extern void nb_mask_mc_reset(void);
3047532SSean.Ye@Sun.COM 
3057532SSean.Ye@Sun.COM extern int nb_mask_mc_set;
3067532SSean.Ye@Sun.COM 
3077532SSean.Ye@Sun.COM extern errorq_t *nb_queue;
3087532SSean.Ye@Sun.COM extern kmutex_t nb_mutex;
3097532SSean.Ye@Sun.COM 
3107532SSean.Ye@Sun.COM extern void nb_drain(void *, const void *, const errorq_elem_t *);
3117532SSean.Ye@Sun.COM extern void nb_used_spare_rank(int, int);
3127532SSean.Ye@Sun.COM 
3137532SSean.Ye@Sun.COM extern uint_t nb_config_gen;
3147532SSean.Ye@Sun.COM 
3157532SSean.Ye@Sun.COM #ifdef __cplusplus
3167532SSean.Ye@Sun.COM }
3177532SSean.Ye@Sun.COM #endif
3187532SSean.Ye@Sun.COM 
3197532SSean.Ye@Sun.COM #endif /* _NB_LOG_H */
320