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