xref: /onnv-gate/usr/src/cmd/fm/modules/sun4v/generic-mem/gmem_mem.h (revision 12467:1f2119e1bc03)
18346SScott.Davenport@Sun.COM /*
28346SScott.Davenport@Sun.COM  * CDDL HEADER START
38346SScott.Davenport@Sun.COM  *
48346SScott.Davenport@Sun.COM  * The contents of this file are subject to the terms of the
58346SScott.Davenport@Sun.COM  * Common Development and Distribution License (the "License").
68346SScott.Davenport@Sun.COM  * You may not use this file except in compliance with the License.
78346SScott.Davenport@Sun.COM  *
88346SScott.Davenport@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
98346SScott.Davenport@Sun.COM  * or http://www.opensolaris.org/os/licensing.
108346SScott.Davenport@Sun.COM  * See the License for the specific language governing permissions
118346SScott.Davenport@Sun.COM  * and limitations under the License.
128346SScott.Davenport@Sun.COM  *
138346SScott.Davenport@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
148346SScott.Davenport@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
158346SScott.Davenport@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
168346SScott.Davenport@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
178346SScott.Davenport@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
188346SScott.Davenport@Sun.COM  *
198346SScott.Davenport@Sun.COM  * CDDL HEADER END
208346SScott.Davenport@Sun.COM  */
218346SScott.Davenport@Sun.COM /*
22*12467STrang.Do@Sun.COM  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
238346SScott.Davenport@Sun.COM  */
248346SScott.Davenport@Sun.COM 
258346SScott.Davenport@Sun.COM #ifndef _GMEM_MEM_H
268346SScott.Davenport@Sun.COM #define	_GMEM_MEM_H
278346SScott.Davenport@Sun.COM 
288346SScott.Davenport@Sun.COM /*
298346SScott.Davenport@Sun.COM  * Support routines for managing state related to memory modules.
308346SScott.Davenport@Sun.COM  * Correctable errors generally cause changes to the DIMM-related state.
318346SScott.Davenport@Sun.COM  */
328346SScott.Davenport@Sun.COM 
338346SScott.Davenport@Sun.COM #include <gmem.h>
348346SScott.Davenport@Sun.COM #include <gmem_page.h>
358346SScott.Davenport@Sun.COM #include <gmem_state.h>
368346SScott.Davenport@Sun.COM #include <gmem_fmri.h>
378346SScott.Davenport@Sun.COM #include <sys/errclassify.h>
388346SScott.Davenport@Sun.COM 
398346SScott.Davenport@Sun.COM #ifdef __cplusplus
408346SScott.Davenport@Sun.COM extern "C" {
418346SScott.Davenport@Sun.COM #endif
428346SScott.Davenport@Sun.COM 
438346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_DIAGNOSE	"diagnose"
448346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_RESOURCE	"resource"
45*12467STrang.Do@Sun.COM #define	GMEM_ERPT_PAYLOAD_DETECTOR	"detector"
468346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_PHYSADDR	"phys-addr"
478346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_OFFSET	"offset"
488346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_SERDN		"serd_n"
498346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_SERDT		"serd_t"
508346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_SYMBOLPOS	"symbol-pos"
518346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_DRAM		"dram"
528346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_FILTER_RATIO	"filter_ratio"
538346SScott.Davenport@Sun.COM #define	GMEM_ERPT_PAYLOAD_CKW		"relative-ckword"
548346SScott.Davenport@Sun.COM 
558346SScott.Davenport@Sun.COM #define	GMEM_F_FAULTING	0x1
568346SScott.Davenport@Sun.COM #define	GMEM_FAULT_DIMM_PAGES	"fault.memory.dimm-page-retires-excessive"
578346SScott.Davenport@Sun.COM #define	GMEM_FAULT_DIMM_4A	"fault.memory.dimm-ue-imminent"
588346SScott.Davenport@Sun.COM #define	GMEM_FAULT_DIMM_4B	"fault.memory.dram-ue-imminent"
598346SScott.Davenport@Sun.COM #define	GMEM_FAULT_PAGE		"fault.memory.page"
608346SScott.Davenport@Sun.COM #define	INVALID_DRAM		-1
618346SScott.Davenport@Sun.COM 
628346SScott.Davenport@Sun.COM #define	DEFAULT_SERDN	0x2
638346SScott.Davenport@Sun.COM #define	DEFAULT_SERDT	0xebbdb3ed0000ULL
648346SScott.Davenport@Sun.COM 
658346SScott.Davenport@Sun.COM typedef struct gmem_dimm gmem_dimm_t;
668346SScott.Davenport@Sun.COM 
678346SScott.Davenport@Sun.COM /*
688346SScott.Davenport@Sun.COM  * Correctable memory errors
698346SScott.Davenport@Sun.COM  * "unknown symbol" (mem-us) and "intermittent symbol" (mem-is) CEs are
708346SScott.Davenport@Sun.COM  * not used in diagnosis, except for rules 4A & 4B checking.
718346SScott.Davenport@Sun.COM  *
728346SScott.Davenport@Sun.COM  * "clearable symbol" (mem-cs) CEs are added to the SERD engines. When the
738346SScott.Davenport@Sun.COM  * engine the page corresponding to the CE that caused the engine to
748346SScott.Davenport@Sun.COM  * fire is retired
758346SScott.Davenport@Sun.COM  *
768346SScott.Davenport@Sun.COM  * "sticky symbol" (mem-ss) CEs trigger immediate page retirement.
778346SScott.Davenport@Sun.COM  *
788346SScott.Davenport@Sun.COM  */
798346SScott.Davenport@Sun.COM 
808346SScott.Davenport@Sun.COM extern gmem_evdisp_t gmem_ce(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
818346SScott.Davenport@Sun.COM     const char *);
828346SScott.Davenport@Sun.COM extern void gmem_dimm_close(fmd_hdl_t *, void *);
838346SScott.Davenport@Sun.COM 
848346SScott.Davenport@Sun.COM extern void gmem_mem_case_restore(fmd_hdl_t *, gmem_case_t *, fmd_case_t *,
858346SScott.Davenport@Sun.COM     const char *, const char *);
868346SScott.Davenport@Sun.COM extern char *gmem_mem_serdnm_create(fmd_hdl_t *, const char *, const char *);
878346SScott.Davenport@Sun.COM extern char *gmem_page_serdnm_create(fmd_hdl_t *, const char *, uint64_t);
888346SScott.Davenport@Sun.COM extern char *gmem_mq_serdnm_create(fmd_hdl_t *, const char *, uint64_t,
898346SScott.Davenport@Sun.COM     uint16_t, uint16_t);
908346SScott.Davenport@Sun.COM extern void gmem_page_serd_create(fmd_hdl_t *, gmem_page_t *, nvlist_t *);
918346SScott.Davenport@Sun.COM extern uint32_t gmem_get_serd_filter_ratio(nvlist_t *);
928346SScott.Davenport@Sun.COM extern int gmem_serd_record(fmd_hdl_t *, const char *, uint32_t, fmd_event_t *);
938346SScott.Davenport@Sun.COM extern void gmem_mem_retirestat_create(fmd_hdl_t *, fmd_stat_t *, const char *,
948346SScott.Davenport@Sun.COM     uint64_t, const char *);
958346SScott.Davenport@Sun.COM 
968346SScott.Davenport@Sun.COM extern void gmem_mem_gc(fmd_hdl_t *);
978346SScott.Davenport@Sun.COM extern void gmem_mem_fini(fmd_hdl_t *);
988346SScott.Davenport@Sun.COM 
998346SScott.Davenport@Sun.COM #ifdef __cplusplus
1008346SScott.Davenport@Sun.COM }
1018346SScott.Davenport@Sun.COM #endif
1028346SScott.Davenport@Sun.COM 
1038346SScott.Davenport@Sun.COM #endif /* _GMEM_MEM_H */
104