cmd_opl.h revision 2652:94ce03c6005c
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_CHASSIS_DEFAULT	"0"
113#define	OPL_CPU_FRU_FMRI_DC	FM_FMRI_SCHEME_HC":///" \
114    FM_FMRI_LEGACY_HC"=/CMU"
115#define	OPL_CPU_FRU_FMRI_FF1	FM_FMRI_SCHEME_HC":///" \
116    FM_FMRI_LEGACY_HC"=/MBU_A/CPUM"
117#define	OPL_CPU_FRU_FMRI_FF2	FM_FMRI_SCHEME_HC":///" \
118    FM_FMRI_LEGACY_HC"=/MBU_B/CPUM"
119#define	STR_BUFLEN		32
120#define	NPAIRS			5
121
122/*
123 * Mask for getting the fault address
124 * from  MARKEDID in UBC Memory UE
125 * Log Register (Oberon)
126 */
127#define	UBC_UE_ADR_MASK		0x00007FFFFFFFFFFFULL
128
129/*
130 * To indicate if the CPU/IO handler is to be used.
131 */
132#define	CMD_OPL_HDLR_CPU	1
133#define	CMD_OPL_HDLR_IO		2
134
135/*
136 * Macors for dealing with "core", "chip"
137 * or "strand" related operations.
138 */
139#define	IS_STRAND		0
140#define	IS_CORE			1
141#define	IS_CHIP			2
142#define	STRAND_UPPER_BOUND	1
143#define	CORE_UPPER_BOUND	1
144
145#define	COREID_SHIFT		1
146#define	CHIPID_SHIFT		3
147#define	STRAND_MASK		1
148#define	CHIP_OR_CORE_MASK	3
149
150/*
151 * This is to reference the Oberon
152 * UBC memory UE log register payload.
153 */
154#define	OBERON_UBC_MUE		"ubc-mue"
155
156#ifdef __cplusplus
157}
158#endif
159
160#endif /* _CMD_OPL_H */
161