8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / fm / eversholt / files / sparc / sun4v / gmem.esc
blob8c322272da82ff633910a66d35709a229c79888a
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 2010 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
27 #define DIAGNOSE_ERPT (payloadprop_defined("diagnose") && \
28         payloadprop("diagnose") != 0x0)
30 #define DIMMPATH dimm
32 #define CONTAINS_DIMM (payloadprop_contains("resource", asru(DIMMPATH)))
34 #define SET_ADDR (!payloadprop_defined("phys-addr") || \
35         setpayloadprop("physaddr", payloadprop("phys-addr")))
37 #define SET_OFFSET (!payloadprop_defined("offset") || \
38         setpayloadprop("offset",\
39         payloadprop("offset")))
41 #define SET_SERDT (!payloadprop_defined("serd_t") || \
42         setserdt(payloadprop("serd_t")))
44 #define SET_SERDN (!payloadprop_defined("serd_n") || \
45         setserdn(payloadprop("serd_n")))
47 #define SET_RATIO        \
48         ((payloadprop_defined("filter_ratio") && \
49         payloadprop("filter_ratio") != 0x0) ? \
50         (setserdincrement(payloadprop("filter_ratio"))) : 1)
53  * fault.memory.generic-sparc.bank & fault.memory.generic-sparc.page
54  * are generated for memory ue error.
55  */
56 #define MEMUE_ERPT(level)       \
57         event ereport.cpu.generic-sparc.mem-uc@level { within(1s)}
59 MEMUE_ERPT(chip);
60 MEMUE_ERPT(core);
61 MEMUE_ERPT(strand);
63 #define FLT_MEM_UE_BANK(level)                                          \
64         event fault.memory.bank@DIMMPATH;                               \
65                                                                         \
66         prop fault.memory.bank@DIMMPATH                                 \
67             { DIAGNOSE_ERPT && CONTAINS_DIMM } (0)->                    \
68             ereport.cpu.generic-sparc.mem-uc@level<>;                   \
69                                                                         \
70         event upset.memory.bank@DIMMPATH;                               \
71                                                                         \
72         prop upset.memory.bank@DIMMPATH                                 \
73             { !DIAGNOSE_ERPT } (0)->                                    \
74             ereport.cpu.generic-sparc.mem-uc@level<>
76 FLT_MEM_UE_BANK(chip);
77 FLT_MEM_UE_BANK(core);
78 FLT_MEM_UE_BANK(strand);
80 #define FLT_MEM_UE_PAGE(level)                                          \
81         event fault.memory.page@DIMMPATH,                               \
82              message=0;                                                 \
83                                                                         \
84         prop fault.memory.page@DIMMPATH                                 \
85             { DIAGNOSE_ERPT && CONTAINS_DIMM && SET_ADDR && SET_OFFSET } (0)-> \
86             ereport.cpu.generic-sparc.mem-uc@level<>;                   \
87                                                                         \
88         event upset.memory.page@DIMMPATH;                               \
89                                                                         \
90         prop upset.memory.page@DIMMPATH                                 \
91             { !DIAGNOSE_ERPT } (0)->                                    \
92             ereport.cpu.generic-sparc.mem-uc@level<>
94 FLT_MEM_UE_PAGE(chip);
95 FLT_MEM_UE_PAGE(core);
96 FLT_MEM_UE_PAGE(strand);
99 #define CHIP            chip
100 #define MEM_BUFF        memory-buffer
101 #define MEM_CTRL        memory-controller
103 #define CONTAINS_CHIP     (payloadprop_contains("sender", asru(CHIP)))
104 #define CONTAINS_MEMBUFF  (payloadprop_contains("sender", asru(MEM_BUFF)))
105 #define CONTAINS_MEMCTRL  (payloadprop_contains("sender", asru(MEM_CTRL)))
107 engine serd.memory.generic-sparc.membuf-crc@CHIP, N=120, T=30min;
108 engine serd.memory.generic-sparc.membuf-crc@MEM_BUFF, N=120, T=30min;
109 engine serd.memory.generic-sparc.membuf-crc@MEM_CTRL, N=120, T=30min;
112 event fault.memory.memlink@CHIP,
113     engine=serd.memory.generic-sparc.membuf-crc@CHIP;
114 event fault.memory.memlink@MEM_BUFF,
115     engine=serd.memory.generic-sparc.membuf-crc@MEM_BUFF;
116 event fault.memory.memlink@MEM_CTRL,
117     engine=serd.memory.generic-sparc.membuf-crc@MEM_CTRL;
120  * 1. if ereport has both sender & detector: membuf-crc errors will fault
121  * both detector & sender.
122  * - if detector is chip or memory-controller, the sender is memory-buffer.
123  * - if detector is memory-buffer, the sender is chip or memory-controller
124  * 2. if ereport does not have sender:
125  * - if detector is chip, sender is memory-buffer
126  * - if detector is memory-controller, sender is memory-buffer
127  * - if detector is memory-buffer:
128  *      + if topology is chip/memory-buffer, sender is chip
129  *      + if topology is memory-controller/memory-buffer, sender is
130  *      memory-controller.
131  */
133 #define HAS_SENDER      (payloadprop_defined("sender"))
135 event ereport.cpu.generic-sparc.membuf-crc@CHIP { within(1s) };
136 event ereport.cpu.generic-sparc.membuf-crc@MEM_BUFF { within(1s) };
137 event ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL { within(1s) };
140  * detector is chip and ereport has a sender
141  */
142 prop fault.memory.memlink@CHIP
143     { DIAGNOSE_ERPT && SET_SERDN && SET_SERDT && SET_RATIO } (0) ->
144     ereport.cpu.generic-sparc.membuf-crc@CHIP;
146 prop fault.memory.memlink@MEM_BUFF
147     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF && SET_SERDN &&
148     SET_SERDT && SET_RATIO } (0)->
149     ereport.cpu.generic-sparc.membuf-crc@CHIP<>;
152  * detector is chip and ereport does not have sender
153  */
154 engine serd.memory.generic-sparc.membuf-crc@CHIP/MEM_BUFF, N=120, T=30min;
155 event fault.memory.memlink@CHIP/MEM_BUFF,
156     engine=serd.memory.generic-sparc.membuf-crc@CHIP/MEM_BUFF;
158 prop fault.memory.memlink@CHIP/MEM_BUFF
159     { DIAGNOSE_ERPT && !HAS_SENDER &&
160     SET_SERDN && SET_SERDT && SET_RATIO } (0)->
161     ereport.cpu.generic-sparc.membuf-crc@CHIP;
163 event upset.memory.memlink@CHIP;
165 prop upset.memory.memlink@CHIP
166     { !DIAGNOSE_ERPT } (0)->
167     ereport.cpu.generic-sparc.membuf-crc@CHIP;
170  * detector is memory-buffer and ereport has sender
171  */
172 prop fault.memory.memlink@MEM_BUFF
173     { DIAGNOSE_ERPT && SET_SERDN && SET_SERDT && SET_RATIO } (0) ->
174     ereport.cpu.generic-sparc.membuf-crc@MEM_BUFF;
176 prop fault.memory.memlink@CHIP
177     { DIAGNOSE_ERPT && CONTAINS_CHIP && SET_SERDN &&
178     SET_SERDT && SET_RATIO } (0) ->
179     ereport.cpu.generic-sparc.membuf-crc@MEM_BUFF<>;
181 prop fault.memory.memlink@MEM_CTRL
182     { DIAGNOSE_ERPT && CONTAINS_MEMCTRL && SET_SERDN &&
183     SET_SERDT && SET_RATIO } (0)->  
184     ereport.cpu.generic-sparc.membuf-crc@MEM_BUFF<>;
187  * detector is memory-buffer and ereport does not have sender
188  */
189 event ereport.cpu.generic-sparc.membuf-crc@CHIP/MEM_BUFF { within(1s) };
190 event ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL/MEM_BUFF { within(1s) };
192 prop fault.memory.memlink@CHIP
193     { DIAGNOSE_ERPT && !HAS_SENDER &&
194     SET_SERDN && SET_SERDT && SET_RATIO } (0) ->
195     ereport.cpu.generic-sparc.membuf-crc@CHIP/MEM_BUFF<>;
197 prop fault.memory.memlink@MEM_CTRL
198     { DIAGNOSE_ERPT && !HAS_SENDER &&
199     SET_SERDN && SET_SERDT && SET_RATIO } (0) ->
200     ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL/MEM_BUFF<>;
202 event upset.memory.memlink@MEM_BUFF;
204 prop upset.memory.memlink@MEM_BUFF
205     { !DIAGNOSE_ERPT } (0)->
206     ereport.cpu.generic-sparc.membuf-crc@MEM_BUFF;
209  * detector is memory-controller and ereport has a sender
210  */
211 prop fault.memory.memlink@MEM_CTRL
212     { DIAGNOSE_ERPT && SET_SERDN && SET_SERDT && SET_RATIO } (0)->
213     ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL;
215 prop fault.memory.memlink@MEM_BUFF
216     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF && SET_SERDN &&
217     SET_SERDT && SET_RATIO } (0)->
218     ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL<>;
221  * detector is memory-controller and ereport does not have a sender
222  */
223 engine serd.cpu.generic-sparc.membuf-crc@MEM_CTRL/MEM_BUFF, N=120, T=30min;
224 event fault.memory.memlink@MEM_CTRL/MEM_BUFF,
225     engine=serd.cpu.generic-sparc.membuf-crc@MEM_CTRL/MEM_BUFF;
227 prop fault.memory.memlink@MEM_CTRL/MEM_BUFF
228     { DIAGNOSE_ERPT && !HAS_SENDER &&
229     SET_SERDN && SET_SERDT && SET_RATIO } (0)->
230     ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL;
232 event upset.memory.memlink@MEM_CTRL;
234 prop upset.memory.memlink@MEM_CTRL
235     { !DIAGNOSE_ERPT } (0)->
236     ereport.cpu.generic-sparc.membuf-crc@MEM_CTRL;
239  * membuf-crc-uc, membuf-other-uc will fault the detector FRU and sender FRU
240  * if detector is CHIP or MEM_CTRL, the sender is MEM_BUFF.
241  * if detector is MEM_BUFF, the sender is CHIP or MEM_CTRL
242  */
243 event ereport.cpu.generic-sparc.membuf-crc-uc@CHIP { within(1s) };
244 event ereport.cpu.generic-sparc.membuf-crc-uc@MEM_BUFF { within(1s) };
245 event ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL { within(1s) };
247 event ereport.cpu.generic-sparc.membuf-other-uc@CHIP { within(1s) };
248 event ereport.cpu.generic-sparc.membuf-other-uc@MEM_BUFF { within(1s) };
249 event ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL { within(1s) };
251 event fault.memory.memlink-uc@CHIP;
252 event fault.memory.memlink-uc@MEM_BUFF;
253 event fault.memory.memlink-uc@MEM_CTRL;
256  * chip is detector and ereport has a sender
257  */
258 prop fault.memory.memlink-uc@CHIP
259     { DIAGNOSE_ERPT } (0) ->
260     ereport.cpu.generic-sparc.membuf-crc-uc@CHIP,
261     ereport.cpu.generic-sparc.membuf-other-uc@CHIP;
263 prop fault.memory.memlink-uc@MEM_BUFF
264     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF } (0) ->
265     ereport.cpu.generic-sparc.membuf-crc-uc@CHIP<>,
266     ereport.cpu.generic-sparc.membuf-other-uc@CHIP<>;
269  * chip is detector and ereport does not have a sender
270  */
271 event fault.memory.memlink-uc@CHIP/MEM_BUFF;
273 prop fault.memory.memlink-uc@CHIP/MEM_BUFF
274     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
275     ereport.cpu.generic-sparc.membuf-crc-uc@CHIP,
276     ereport.cpu.generic-sparc.membuf-other-uc@CHIP;
278 event upset.memory.memlink-uc@CHIP;
280 prop upset.memory.memlink-uc@CHIP
281     { !DIAGNOSE_ERPT } (0)->
282     ereport.cpu.generic-sparc.membuf-crc-uc@CHIP,
283     ereport.cpu.generic-sparc.membuf-other-uc@CHIP;
286  * memory-buffer is detector and ereport has a sender
287  */
288 prop fault.memory.memlink-uc@MEM_BUFF
289     { DIAGNOSE_ERPT } (0) ->
290     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_BUFF,
291     ereport.cpu.generic-sparc.membuf-other-uc@MEM_BUFF;
293 prop fault.memory.memlink-uc@CHIP
294     { DIAGNOSE_ERPT && CONTAINS_CHIP } (0) ->
295     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_BUFF<>,
296     ereport.cpu.generic-sparc.membuf-other-uc@MEM_BUFF<>;
298 prop fault.memory.memlink-uc@MEM_CTRL
299     { DIAGNOSE_ERPT && CONTAINS_MEMCTRL } (0) ->
300     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_BUFF<>,
301     ereport.cpu.generic-sparc.membuf-other-uc@MEM_BUFF<>;
304  * memory-buffer is detector and ereport does not have sender
305  */
306 event ereport.cpu.generic-sparc.membuf-crc-uc@CHIP/MEM_BUFF { within(1s) };
307 event ereport.cpu.generic-sparc.membuf-other-uc@CHIP/MEM_BUFF { within(1s) };
308 event ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL/MEM_BUFF { within(1s) };
309 event ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL/MEM_BUFF
310     { within(1s) };
312 prop fault.memory.memlink-uc@CHIP
313     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
314     ereport.cpu.generic-sparc.membuf-crc-uc@CHIP/MEM_BUFF<>,
315     ereport.cpu.generic-sparc.membuf-other-uc@CHIP/MEM_BUFF<>;
317 prop fault.memory.memlink-uc@MEM_CTRL
318     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
319     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL/MEM_BUFF<>,
320     ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL/MEM_BUFF<>;
322 event upset.memory.memlink-uc@MEM_BUFF;
324 prop upset.memory.memlink-uc@MEM_BUFF
325     { !DIAGNOSE_ERPT } (0)->
326     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_BUFF,
327     ereport.cpu.generic-sparc.membuf-other-uc@MEM_BUFF;
330  * memory-controller is detector and ereport has a sender
331  */
332 prop fault.memory.memlink-uc@MEM_CTRL
333     { DIAGNOSE_ERPT } (0) ->
334     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL,
335     ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL;
337 prop fault.memory.memlink-uc@MEM_BUFF
338     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF } (0) ->
339     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL<>,
340     ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL<>;
343  * memory-controller is detector and ereport does not have sender
344  */
345 event fault.memory.memlink-uc@MEM_CTRL/MEM_BUFF;
347 prop fault.memory.memlink-uc@MEM_CTRL/MEM_BUFF
348     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
349     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL,
350     ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL;
352 event upset.memory.memlink-uc@MEM_CTRL;
354 prop upset.memory.memlink-uc@MEM_CTRL
355     { !DIAGNOSE_ERPT } (0)->
356     ereport.cpu.generic-sparc.membuf-crc-uc@MEM_CTRL,
357     ereport.cpu.generic-sparc.membuf-other-uc@MEM_CTRL;
360  * membuf-crc-failover will fault the detector FRU and sender FRU
361  * if detector is chip or memory-controller, the sender is memory-buffer.
362  * if detector is memory-buffer, the sender is chip or memory-controller
363  */
364 event ereport.cpu.generic-sparc.membuf-crc-failover@CHIP { within(1s) };
365 event ereport.cpu.generic-sparc.membuf-crc-failover@MEM_BUFF
366     { within(1s) };
367 event ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL
368     { within(1s) };
370 event fault.memory.memlink-failover@CHIP;
371 event fault.memory.memlink-failover@MEM_BUFF;
372 event fault.memory.memlink-failover@MEM_CTRL;
375  * chip is detector and ereport has a sender
376  */
377 prop fault.memory.memlink-failover@CHIP
378     { DIAGNOSE_ERPT } (0) ->
379     ereport.cpu.generic-sparc.membuf-crc-failover@CHIP;
381 prop fault.memory.memlink-failover@MEM_BUFF
382     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF } (0) ->
383     ereport.cpu.generic-sparc.membuf-crc-failover@CHIP<>;
386  * chip is detector and ereport does not have sender
387  */
388 event fault.memory.memlink-failover@CHIP/MEM_BUFF;
390 prop fault.memory.memlink-failover@CHIP/MEM_BUFF
391     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
392     ereport.cpu.generic-sparc.membuf-crc-failover@CHIP;
394 event upset.memory.memlink-failover@CHIP;
396 prop upset.memory.memlink-failover@CHIP
397     { !DIAGNOSE_ERPT } (0)->
398     ereport.cpu.generic-sparc.membuf-crc-failover@CHIP;
400  * memory-buffer is detector and ereport has a sender
401  */
402 prop fault.memory.memlink-failover@MEM_BUFF
403     { DIAGNOSE_ERPT } (0) ->
404     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_BUFF;
406 prop fault.memory.memlink-failover@CHIP
407     { DIAGNOSE_ERPT && CONTAINS_CHIP } (0) ->
408     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_BUFF<>;
410 prop fault.memory.memlink-failover@MEM_CTRL
411     { DIAGNOSE_ERPT && CONTAINS_MEMCTRL } (0) ->
412     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_BUFF<>;
415  * memory-buffer is detector and ereport does not have sender
416  */
417 event ereport.cpu.generic-sparc.membuf-crc-failover@CHIP/MEM_BUFF
418     { within(1s) };
419 event ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL/MEM_BUFF
420     { within(1s) };
422 prop fault.memory.memlink-failover@CHIP
423     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
424     ereport.cpu.generic-sparc.membuf-crc-failover@CHIP/MEM_BUFF<>;
426 prop fault.memory.memlink-failover@MEM_CTRL
427     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
428     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL/MEM_BUFF<>;
430 event upset.memory.memlink-failover@MEM_BUFF;
432 prop upset.memory.memlink-failover@MEM_BUFF
433     { !DIAGNOSE_ERPT } (0)->
434     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_BUFF;
436  * memory-controller is detector and ereport has a sender
437  */
438 prop fault.memory.memlink-failover@MEM_CTRL
439     { DIAGNOSE_ERPT } (0) ->
440     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL;
442 prop fault.memory.memlink-failover@MEM_BUFF
443     { DIAGNOSE_ERPT && CONTAINS_MEMBUFF } (0) ->
444     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL<>;
447  * memory-controller is detector and ereport does not have sender
448  */
449 event fault.memory.memlink-failover@MEM_CTRL/MEM_BUFF;
451 prop fault.memory.memlink-failover@MEM_CTRL/MEM_BUFF
452     { DIAGNOSE_ERPT && !HAS_SENDER } (0) ->
453     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL;
455 event upset.memory.memlink-failover@MEM_CTRL;
457 prop upset.memory.memlink-failover@MEM_CTRL
458     { !DIAGNOSE_ERPT } (0)->
459     ereport.cpu.generic-sparc.membuf-crc-failover@MEM_CTRL;
461  * ignore the membuf-other errors
462  */
463 event ereport.cpu.generic-sparc.membuf-other@CHIP;
464 event ereport.cpu.generic-sparc.membuf-other@MEM_BUFF;
465 event ereport.cpu.generic-sparc.membuf-other@MEM_CTRL;
467 event upset.memory.discard@CHIP;
468 event upset.memory.discard@MEM_BUFF;
469 event upset.memory.discard@MEM_CTRL;
471 prop upset.memory.discard@CHIP (1)->
472     ereport.cpu.generic-sparc.membuf-other@CHIP;
474 prop upset.memory.discard@MEM_BUFF (1)->
475     ereport.cpu.generic-sparc.membuf-other@MEM_BUFF;
477 prop upset.memory.discard@MEM_CTRL (1)->
478     ereport.cpu.generic-sparc.membuf-other@MEM_CTRL;