dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / cmd / fm / eversholt / files / i386 / i86pc / gcpu.esc
blob06e65539d2d3ad2404dd5f580e4ba7a4775d1890
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  */
23  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
28  * eversholt rules for generic x86 MCA
29  *
30  * Most propogations are generated by preprocessor macros.  The event
31  * declarations are deliberately not part of the propogation macros
32  * so that we know we have full coverage - propogations defined without
33  * events, or events not used in propogations, will produce compiler
34  * whinges.
35  */
37 #pragma dictionary "GMCA"
40  * Ereports for Simple error codes.
41  */
43 #define SMPL_EVENT(leafclass) \
44         event ereport.cpu.generic-x86.leafclass@chip/core/strand { within(1s) }
46 SMPL_EVENT(unknown);    
47 SMPL_EVENT(unclassified);
48 SMPL_EVENT(microcode_rom_parity);
49 SMPL_EVENT(external);
50 SMPL_EVENT(frc);
51 SMPL_EVENT(internal_timer);
52 SMPL_EVENT(internal_parity);
53 SMPL_EVENT(internal_unclassified);
56  * Propogations for all but "external" and "unknown" simple errors.
57  * If the error is uncorrected we produce a fault immediately by incrementing
58  * by N+1, otherwise we declare a fault when the SERD engine trips.
59  */
61 #define SMPL_N  3
63 engine serd.cpu.generic-x86.simple@chip/core/strand, N=SMPL_N, T=72h;
64 event fault.cpu.generic-x86.internal@chip/core/strand,
65     engine=serd.cpu.generic-x86.simple@chip/core/strand;
67 prop fault.cpu.generic-x86.internal@chip/core/strand
68     { payloadprop("error_uncorrected") == 1 ?
69         setserdincrement(SMPL_N + 1) : 1 } (1)->
70     ereport.cpu.generic-x86.microcode_rom_parity@chip/core/strand,
71     ereport.cpu.generic-x86.internal_timer@chip/core/strand,
72     ereport.cpu.generic-x86.internal_parity@chip/core/strand,
73     ereport.cpu.generic-x86.unclassified@chip/core/strand,
74     ereport.cpu.generic-x86.internal_unclassified@chip/core/strand,
75     ereport.cpu.generic-x86.frc@chip/core/strand;
78  * Ereports for Compound error codes.  These are in pairs "foo" and "foo_uc"
79  * for the corrected and uncorrected version of each error type.  All are
80  * detected at chip/core[/strand].
81  */
83 #define CMPND_EVENT(leafclass) \
84         event ereport.cpu.generic-x86.leafclass@chip/core/strand \
85         { within(1s) }; \
86         event ereport.cpu.generic-x86.leafclass##_uc@chip/core/strand \
87         { within(1s) }
90  * Ereports for Compound error codes - generic memory hierarchy errors
91  */
92 CMPND_EVENT(l0cache);
93 CMPND_EVENT(l1cache);
94 CMPND_EVENT(l2cache);
95 CMPND_EVENT(cache);
98  * Ereports for Compound error codes - TLB errors
99  */
100 CMPND_EVENT(l0dtlb);
101 CMPND_EVENT(l1dtlb);
102 CMPND_EVENT(l2dtlb);
103 CMPND_EVENT(dtlb);
105 CMPND_EVENT(l0itlb);
106 CMPND_EVENT(l1itlb);
107 CMPND_EVENT(l2itlb);
108 CMPND_EVENT(itlb);
110 CMPND_EVENT(l0tlb);
111 CMPND_EVENT(l1tlb);
112 CMPND_EVENT(l2tlb);
113 CMPND_EVENT(tlb);
116  * Ereports for Compound error codes - memory hierarchy errors
117  */
118 CMPND_EVENT(l0dcache);
119 CMPND_EVENT(l1dcache);
120 CMPND_EVENT(l2dcache);
121 CMPND_EVENT(dcache);
123 CMPND_EVENT(l0icache);
124 CMPND_EVENT(l1icache);
125 CMPND_EVENT(l2icache);
126 CMPND_EVENT(icache);
129  * Ereports for Compound error codes - bus and interconnect errors
130  */
131 CMPND_EVENT(bus_interconnect);
132 CMPND_EVENT(bus_interconnect_memory);
133 CMPND_EVENT(bus_interconnect_io);
134 CMPND_EVENT(mc);
137  * Compound error propogations
139  * We resist the temptation propogate, for example, a single dcache fault
140  * to all ereports mentioning dcache (l0dcache, l1dcache, l2dcache, dcache).
141  * Instead we will diagnose a distinct fault for each possible cache level,
142  * whether or not current chips have dcaches at all levels.
144  * Corrected errors are SERDed and produce a fault when the engine fires;
145  * the same fault is diagnosed immediately for a corresponding uncorrected
146  * error by incrementing the serd engine by n + 1.
147  */
149 #define CMPND_FLT_PROP_1(erptleaf, fltleaf, n, t) \
150         engine serd.cpu.generic-x86.fltleaf@chip/core/strand, N=n, T=t; \
151         event fault.cpu.generic-x86.fltleaf@chip/core/strand,           \
152             engine=serd.cpu.generic-x86.fltleaf@chip/core/strand;       \
153                                                                         \
154         prop fault.cpu.generic-x86.fltleaf@chip/core/strand (0)->       \
155             ereport.cpu.generic-x86.erptleaf@chip/core/strand;          \
156         prop fault.cpu.generic-x86.fltleaf@chip/core/strand             \
157             { setserdincrement(n + 1) } (0)->                           \
158             ereport.cpu.generic-x86.erptleaf##_uc@chip/core/strand
160 #define CMPND_FLT_PROP_2(erptleaf, fltleaf, n, t) \
161         engine serd.cpu.generic-x86.fltleaf@chip/core/strand, N=n, T=t; \
162         event fault.cpu.generic-x86.fltleaf@chip/core/strand, retire=0, \
163             response=0, engine=serd.cpu.generic-x86.fltleaf@chip/core/strand;\
164                                                                         \
165         prop fault.cpu.generic-x86.fltleaf@chip/core/strand (0)->       \
166             ereport.cpu.generic-x86.erptleaf@chip/core/strand;          \
167         prop fault.cpu.generic-x86.fltleaf@chip/core/strand             \
168             { setserdincrement(n + 1) } (0)->                           \
169             ereport.cpu.generic-x86.erptleaf##_uc@chip/core/strand
171 CMPND_FLT_PROP_1(l0cache, l0cache, 3, 72h);
172 CMPND_FLT_PROP_1(l1cache, l1cache, 3, 72h);
173 CMPND_FLT_PROP_1(l2cache, l2cache, 3, 72h);
174 CMPND_FLT_PROP_1(cache, cache, 12, 72h);
176 CMPND_FLT_PROP_1(l0dtlb, l0dtlb, 3, 72h);
177 CMPND_FLT_PROP_1(l1dtlb, l1dtlb, 3, 72h);
178 CMPND_FLT_PROP_1(l2dtlb, l2dtlb, 3, 72h);
179 CMPND_FLT_PROP_1(dtlb, dtlb, 12, 72h);
181 CMPND_FLT_PROP_1(l0itlb, l0itlb, 3, 72h);
182 CMPND_FLT_PROP_1(l1itlb, l1itlb, 3, 72h);
183 CMPND_FLT_PROP_1(l2itlb, l2itlb, 3, 72h);
184 CMPND_FLT_PROP_1(itlb, itlb, 12, 72h);
186 CMPND_FLT_PROP_1(l0tlb, l0tlb, 3, 72h);
187 CMPND_FLT_PROP_1(l1tlb, l1tlb, 3, 72h);
188 CMPND_FLT_PROP_1(l2tlb, l2tlb, 3, 72h);
189 CMPND_FLT_PROP_1(tlb, tlb, 12, 72h);
191 CMPND_FLT_PROP_1(l0dcache, l0dcache, 3, 72h);
192 CMPND_FLT_PROP_1(l1dcache, l1dcache, 3, 72h);
193 CMPND_FLT_PROP_1(l2dcache, l2dcache, 3, 72h);
194 CMPND_FLT_PROP_1(dcache, dcache, 12, 72h);
196 CMPND_FLT_PROP_1(l0icache, l0icache, 3, 72h);
197 CMPND_FLT_PROP_1(l1icache, l1icache, 3, 72h);
198 CMPND_FLT_PROP_1(l2icache, l2icache, 3, 72h);
199 CMPND_FLT_PROP_1(icache, icache, 12, 72h);
201 CMPND_FLT_PROP_2(bus_interconnect, bus_interconnect, 10, 72h);
202 CMPND_FLT_PROP_2(bus_interconnect_memory, bus_interconnect_memory, 10, 72h);
203 CMPND_FLT_PROP_2(bus_interconnect_io, bus_interconnect_io, 10, 72h);
205 CMPND_FLT_PROP_2(mc, mc, 10, 72h);
208  * Discards - not enough info to diagnose.
209  */
210 event upset.discard@chip/core/strand;
212 prop upset.discard@chip/core/strand (0)->
213     ereport.cpu.generic-x86.external@chip/core/strand,
214     ereport.cpu.generic-x86.unknown@chip/core/strand;