cmd_opl.h revision 2214:e2138a0f31fa
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _CMD_OPL_H
28#define	_CMD_OPL_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#include <cmd.h>
33#include <cmd_cpu.h>
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39typedef struct opl_cpu {
40	cmd_list_t oc_list;
41	cmd_cpu_t *oc_cmd_cpu;
42	uint32_t oc_cpuid;
43} opl_cpu_t;
44
45extern cmd_evdisp_t cmd_oplinv_urg(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
46    const char *, cmd_errcl_t);
47extern cmd_evdisp_t cmd_oplcre(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
48    const char *, cmd_errcl_t);
49extern cmd_evdisp_t cmd_opltsb_ctx(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
50    const char *, cmd_errcl_t);
51extern cmd_evdisp_t cmd_opltsbp(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
52    const char *, cmd_errcl_t);
53extern cmd_evdisp_t cmd_oplpstate(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
54    const char *, cmd_errcl_t);
55extern cmd_evdisp_t cmd_opltstate(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
56    const char *, cmd_errcl_t);
57extern cmd_evdisp_t cmd_opliug_f(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
58    const char *, cmd_errcl_t);
59extern cmd_evdisp_t cmd_opliug_r(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
60    const char *, cmd_errcl_t);
61extern cmd_evdisp_t cmd_oplsdc(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
62    const char *, cmd_errcl_t);
63extern cmd_evdisp_t cmd_oplwdt(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
64    const char *, cmd_errcl_t);
65extern cmd_evdisp_t cmd_opldtlb(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
66    const char *, cmd_errcl_t);
67extern cmd_evdisp_t cmd_oplitlb(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
68    const char *, cmd_errcl_t);
69extern cmd_evdisp_t cmd_oplcore_err(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
70    const char *, cmd_errcl_t);
71extern cmd_evdisp_t cmd_opldae(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
72    const char *, cmd_errcl_t);
73extern cmd_evdisp_t cmd_opliae(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
74    const char *, cmd_errcl_t);
75extern cmd_evdisp_t cmd_opluge(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
76    const char *, cmd_errcl_t);
77extern cmd_evdisp_t cmd_oplmtlb(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
78    const char *, cmd_errcl_t);
79extern cmd_evdisp_t cmd_opltlbp(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
80    const char *, cmd_errcl_t);
81extern cmd_evdisp_t cmd_oplinv_sfsr(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
82    const char *, cmd_errcl_t);
83extern cmd_evdisp_t cmd_opluecpu_detcpu(fmd_hdl_t *, fmd_event_t *,
84    nvlist_t *, const char *, cmd_errcl_t);
85extern cmd_evdisp_t cmd_opluecpu_detio(fmd_hdl_t *, fmd_event_t *,
86    nvlist_t *, const char *, cmd_errcl_t);
87
88extern cmd_evdisp_t cmd_opl_mac_common(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
89    const char *, cmd_errcl_t);
90extern cmd_evdisp_t cmd_opl_cpu_mem(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
91    const char *, cmd_errcl_t);
92extern cmd_evdisp_t cmd_opl_io_mem(fmd_hdl_t *, fmd_event_t *, nvlist_t *,
93    const char *, cmd_errcl_t);
94
95extern nvlist_t *opl_cpursrc_create(fmd_hdl_t *, uint32_t);
96extern cmd_list_t *opl_cpulist_insert(fmd_hdl_t *, uint32_t, int);
97extern void opl_cpulist_free(fmd_hdl_t *, cmd_list_t *);
98extern uint8_t opl_avg(uint_t, uint_t);
99
100extern cmd_evdisp_t cmd_opl_ue_cpu(fmd_hdl_t *, fmd_event_t *,
101    const char *, const char *, cmd_ptrsubtype_t, cmd_cpu_t *, cmd_case_t *,
102    uint8_t);
103
104extern cmd_list_t *opl_cpulist_insert(fmd_hdl_t *, uint32_t, int);
105extern int cmd_fmri_hc_set(fmd_hdl_t *, nvlist_t *, int, const nvlist_t *,
106    nvlist_t *, int, ...);
107extern nvlist_t *opl_mem_fru_create(fmd_hdl_t *, nvlist_t *);
108
109extern cmd_list_t opl_cpu_list;
110
111#define	CPU_EREPORT_STRING	"ereport.cpu.SPARC64-VI."
112#define	OPL_CMU_SIGN		"CMU"
113#define	OPL_CHASSIS_DEFAULT	"0"
114#define	OPL_CPU_FRU_FMRI	FM_FMRI_SCHEME_HC":///" \
115    FM_FMRI_LEGACY_HC"="OPL_CMU_SIGN
116#define	STR_BUFLEN		32
117#define	NPAIRS			5
118
119/*
120 * Mask for getting the fault address
121 * from  MARKEDID in UBC Memory UE
122 * Log Register (Oberon)
123 */
124#define	UBC_UE_ADR_MASK		0x00007FFFFFFFFFFFULL
125
126/*
127 * To indicate if the CPU/IO handler is to be used.
128 */
129#define	CMD_OPL_HDLR_CPU	1
130#define	CMD_OPL_HDLR_IO		2
131
132/*
133 * Macors for dealing with "core", "chip"
134 * or "strand" related operations.
135 */
136#define	IS_STRAND		0
137#define	IS_CORE			1
138#define	IS_CHIP			2
139#define	STRAND_UPPER_BOUND	1
140#define	CORE_UPPER_BOUND	1
141
142#define	COREID_SHIFT		1
143#define	CHIPID_SHIFT		3
144#define	STRAND_MASK		1
145#define	CHIP_OR_CORE_MASK	3
146
147/*
148 * This is to reference the Oberon
149 * UBC memory UE log register payload.
150 */
151#define	OBERON_UBC_MUE		"ubc-mue"
152
153#ifdef __cplusplus
154}
155#endif
156
157#endif /* _CMD_OPL_H */
158