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 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #pragma dictionary "INTEL" 28 29 /* 30 * Eversholt rules for the intel CPU/Memory 31 */ 32 33 /* 34 * Ereports for Simple error codes. 35 */ 36 37 #define SMPL_EVENT(leafclass, t) \ 38 event ereport.cpu.intel.leafclass@chip/core/strand { within(t) } 39 40 SMPL_EVENT(unknown, 1s); 41 SMPL_EVENT(unclassified, 1s); 42 SMPL_EVENT(microcode_rom_parity, 1s); 43 SMPL_EVENT(external, 1s); 44 SMPL_EVENT(frc, 1s); 45 SMPL_EVENT(internal_timer, 1s); 46 SMPL_EVENT(internal_parity, 1s); 47 SMPL_EVENT(internal_unclassified, 1s); 48 49 /* 50 * Propogations for all but "external" and "unknown" simple errors. 51 * If the error is uncorrected we produce a fault immediately, otherwise 52 * we diagnose it to an upset and decalre a fault when the SERD engine 53 * trips. prop statement for ereport.cpu.intel.internal_unclassified is 54 * moved to the Nehalem EX section to deal with poison case. 55 */ 56 57 engine serd.cpu.intel.simple@chip/core/strand, N=3, T=72h; 58 event fault.cpu.intel.internal@chip/core/strand, 59 engine=serd.cpu.intel.simple@chip/core/strand; 60 61 prop fault.cpu.intel.internal@chip/core/strand 62 { payloadprop("error_uncorrected") == 1 ? setserdincrement(4) : 1} (0)-> 63 ereport.cpu.intel.microcode_rom_parity@chip/core/strand, 64 ereport.cpu.intel.internal_timer@chip/core/strand, 65 ereport.cpu.intel.internal_parity@chip/core/strand, 66 ereport.cpu.intel.unclassified@chip/core/strand, 67 ereport.cpu.intel.frc@chip/core/strand; 68 69 /* 70 * Ereports for Compound error codes. These are in pairs "foo" and "foo_uc" 71 * for the corrected and uncorrected version of each error type. All are 72 * detected at chip/core/strand. 73 */ 74 75 #define CMPND_EVENT(leafclass, t) \ 76 event ereport.cpu.intel.leafclass@chip/core/strand { within(t) }; \ 77 event ereport.cpu.intel.leafclass/**/_uc@chip/core/strand { within(t) } 78 79 /* 80 * Ereports for Compound error codes - intel errors 81 */ 82 CMPND_EVENT(l0cache, 1s); 83 CMPND_EVENT(l1cache, 1s); 84 CMPND_EVENT(l2cache, 1s); 85 CMPND_EVENT(cache, 1s); 86 87 /* 88 * Ereports for Compound error codes - TLB errors 89 */ 90 CMPND_EVENT(l0dtlb, 1s); 91 CMPND_EVENT(l1dtlb, 1s); 92 CMPND_EVENT(l2dtlb, 1s); 93 CMPND_EVENT(dtlb, 1s); 94 95 CMPND_EVENT(l0itlb, 1s); 96 CMPND_EVENT(l1itlb, 1s); 97 CMPND_EVENT(l2itlb, 1s); 98 CMPND_EVENT(itlb, 1s); 99 100 CMPND_EVENT(l0tlb, 1s); 101 CMPND_EVENT(l1tlb, 1s); 102 CMPND_EVENT(l2tlb, 1s); 103 CMPND_EVENT(tlb, 1s); 104 105 /* 106 * Ereports for Compound error codes - memory hierarchy errors 107 */ 108 CMPND_EVENT(l0dcache, 1s); 109 CMPND_EVENT(l1dcache, 1s); 110 CMPND_EVENT(l2dcache, 1s); 111 CMPND_EVENT(dcache, 1s); 112 113 CMPND_EVENT(l0icache, 1s); 114 CMPND_EVENT(l1icache, 1s); 115 CMPND_EVENT(l2icache, 1s); 116 CMPND_EVENT(icache, 1s); 117 118 /* 119 * Ereports for Compound error codes - bus and interconnect errors 120 */ 121 CMPND_EVENT(bus_interconnect, 1s); 122 CMPND_EVENT(bus_interconnect_memory, 1s); 123 CMPND_EVENT(bus_interconnect_io, 1s); 124 125 /* 126 * Compound error propogations. 127 * 128 * We resist the temptation propogate, for example, a single dcache fault 129 * to all ereports mentioning dcache (l0dcache, l1dcache, l2dcache, dcache). 130 * Instead we will diagnose a distinct fault for each possible cache level, 131 * whether or not current chips have dcaches at all levels. 132 * 133 * Corrected errors are SERDed and produce a fault when the engine fires; 134 * the same fault is diagnosed immediately for a corresponding uncorrected 135 * error. 136 */ 137 138 #define CMPND_FLT_PROP_1(erptleaf, fltleaf, n, t) \ 139 engine serd.cpu.intel.fltleaf@chip/core/strand, N=n, T=t; \ 140 event fault.cpu.intel.fltleaf@chip/core/strand, \ 141 engine=serd.cpu.intel.fltleaf@chip/core/strand; \ 142 \ 143 prop fault.cpu.intel.fltleaf@chip/core/strand (0)-> \ 144 ereport.cpu.intel.erptleaf@chip/core/strand; \ 145 \ 146 prop fault.cpu.intel.fltleaf@chip/core/strand \ 147 { setserdincrement(n + 1) } (0)-> \ 148 ereport.cpu.intel.erptleaf/**/_uc@chip/core/strand 149 150 #define CMPND_FLT_PROP_2(erptleaf, fltleaf, n, t) \ 151 engine serd.cpu.intel.fltleaf@chip/core/strand, N=n, T=t; \ 152 event fault.cpu.intel.fltleaf@chip/core/strand, retire=0, response=0,\ 153 engine=serd.cpu.intel.fltleaf@chip/core/strand; \ 154 \ 155 prop fault.cpu.intel.fltleaf@chip/core/strand (0)-> \ 156 ereport.cpu.intel.erptleaf@chip/core/strand; \ 157 \ 158 prop fault.cpu.intel.fltleaf@chip/core/strand \ 159 { setserdincrement(n + 1) } (0)-> \ 160 ereport.cpu.intel.erptleaf/**/_uc@chip/core/strand 161 162 CMPND_FLT_PROP_1(l0cache, l0cache, 3, 72h); 163 CMPND_FLT_PROP_1(l1cache, l1cache, 3, 72h); 164 CMPND_FLT_PROP_1(l2cache, l2cache, 3, 72h); 165 CMPND_FLT_PROP_1(cache, cache, 12, 72h); 166 167 CMPND_FLT_PROP_1(l0dtlb, l0dtlb, 3, 72h); 168 CMPND_FLT_PROP_1(l1dtlb, l1dtlb, 3, 72h); 169 CMPND_FLT_PROP_1(l2dtlb, l2dtlb, 3, 72h); 170 CMPND_FLT_PROP_1(dtlb, dtlb, 12, 72h); 171 172 CMPND_FLT_PROP_1(l0itlb, l0itlb, 3, 72h); 173 CMPND_FLT_PROP_1(l1itlb, l1itlb, 3, 72h); 174 CMPND_FLT_PROP_1(l2itlb, l2itlb, 3, 72h); 175 CMPND_FLT_PROP_1(itlb, itlb, 12, 72h); 176 177 CMPND_FLT_PROP_1(l0tlb, l0tlb, 3, 72h); 178 CMPND_FLT_PROP_1(l1tlb, l1tlb, 3, 72h); 179 CMPND_FLT_PROP_1(l2tlb, l2tlb, 3, 72h); 180 CMPND_FLT_PROP_1(tlb, tlb, 12, 72h); 181 182 CMPND_FLT_PROP_1(l0dcache, l0dcache, 3, 72h); 183 CMPND_FLT_PROP_1(l1dcache, l1dcache, 3, 72h); 184 CMPND_FLT_PROP_1(l2dcache, l2dcache, 3, 72h); 185 CMPND_FLT_PROP_1(dcache, dcache, 12, 72h); 186 187 CMPND_FLT_PROP_1(l0icache, l0icache, 3, 72h); 188 CMPND_FLT_PROP_1(l1icache, l1icache, 3, 72h); 189 CMPND_FLT_PROP_1(l2icache, l2icache, 3, 72h); 190 CMPND_FLT_PROP_1(icache, icache, 12, 72h); 191 192 CMPND_FLT_PROP_2(bus_interconnect, bus_interconnect, 10, 72h); 193 CMPND_FLT_PROP_2(bus_interconnect_memory, bus_interconnect_memory, 10, 72h); 194 CMPND_FLT_PROP_2(bus_interconnect_io, bus_interconnect_io, 10, 72h); 195 196 event upset.discard@chip/core/strand; 197 198 prop upset.discard@chip/core/strand (0)-> 199 ereport.cpu.intel.external@chip/core/strand, 200 ereport.cpu.intel.unknown@chip/core/strand; 201 202 /* errors detected in northbridge */ 203 204 205 /* 206 * SET_ADDR and SET_OFFSET are used to set a payload value in the fault that 207 * we diagnose for page faults, to record the physical address of the faulting 208 * page. 209 */ 210 #define SET_ADDR (!payloadprop_defined("physaddr") || \ 211 setpayloadprop("asru-physaddr", payloadprop("physaddr"))) 212 213 #define SET_OFFSET (!payloadprop_defined("offset") || \ 214 setpayloadprop("asru-offset", payloadprop("offset"))) 215 216 #define EREPORT_BUS_ERROR \ 217 ereport.cpu.intel.bus_interconnect_memory_uc@chip/core/strand, \ 218 ereport.cpu.intel.bus_interconnect_uc@chip/core/strand, \ 219 ereport.cpu.intel.bus_interconnect_memory@chip/core/strand, \ 220 ereport.cpu.intel.bus_interconnect@chip/core/strand, \ 221 ereport.cpu.intel.external@chip/core/strand 222 223 engine stat.ce_pgflt@memory-controller/dram-channel/dimm; 224 225 event ereport.cpu.intel.nb.mem_ue@motherboard/memory-controller{within(12s)}; 226 event ereport.cpu.intel.nb.ddr2_mem_ue@ 227 motherboard/memory-controller{within(12s)}; 228 event ereport.cpu.intel.nb.fbd.ma@motherboard/memory-controller{within(12s)}; 229 event fault.memory.intel.page_ue@ 230 motherboard/memory-controller/dram-channel/dimm/rank, 231 message=0, response=0; 232 event fault.memory.intel.dimm_ue@ 233 motherboard/memory-controller/dram-channel/dimm/rank; 234 235 prop fault.memory.intel.page_ue@ 236 motherboard/memory-controller/dram-channel/dimm/rank[rank_num] 237 { payloadprop_defined("rank") && rank_num == payloadprop("rank") && 238 (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 239 SET_ADDR && SET_OFFSET } (1)-> 240 ereport.cpu.intel.nb.mem_ue@motherboard/memory-controller, 241 ereport.cpu.intel.nb.ddr2_mem_ue@motherboard/memory-controller, 242 ereport.cpu.intel.nb.fbd.ma@motherboard/memory-controller; 243 244 prop fault.memory.intel.dimm_ue@ 245 motherboard/memory-controller/dram-channel/dimm/rank[rank_num] 246 { payloadprop_defined("rank") && rank_num == payloadprop("rank") } (1)-> 247 ereport.cpu.intel.nb.mem_ue@motherboard/memory-controller, 248 ereport.cpu.intel.nb.ddr2_mem_ue@motherboard/memory-controller, 249 ereport.cpu.intel.nb.fbd.ma@motherboard/memory-controller; 250 251 event upset.memory.intel.discard@motherboard/memory-controller{within(1s)}; 252 253 prop upset.memory.intel.discard@motherboard/memory-controller (0)-> 254 ereport.cpu.intel.nb.mem_ue@motherboard/memory-controller, 255 ereport.cpu.intel.nb.ddr2_mem_ue@motherboard/memory-controller, 256 ereport.cpu.intel.nb.fbd.ma@motherboard/memory-controller; 257 258 prop upset.memory.intel.discard@motherboard/memory-controller (0)-> 259 EREPORT_BUS_ERROR; 260 261 #define PAGE_CE_COUNT 2 262 #define PAGE_CE_TIME 72h 263 #define DIMM_CE_COUNT 10 264 #define DIMM_CE_TIME 1week 265 266 #define MBDIMM motherboard/memory-controller/dram-channel/dimm 267 event ereport.cpu.intel.nb.mem_ce@MBDIMM/rank{within(12s)}; 268 event ereport.cpu.intel.nb.ddr2_mem_ce@MBDIMM/rank{within(12s)}; 269 event ereport.cpu.intel.nb.ddr2_mem_ce@ 270 motherboard/memory-controller{within(12s)}; 271 272 engine serd.memory.intel.page_ce@MBDIMM/rank, N=PAGE_CE_COUNT, T=PAGE_CE_TIME; 273 event fault.memory.intel.page_ce@MBDIMM/rank, message=0, response=0, 274 count=stat.ce_pgflt@MBDIMM, engine=serd.memory.intel.page_ce@MBDIMM/rank; 275 prop fault.memory.intel.page_ce@MBDIMM/rank 276 { (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 277 SET_ADDR && SET_OFFSET } (0)-> 278 ereport.cpu.intel.nb.mem_ce@MBDIMM/rank, 279 ereport.cpu.intel.nb.ddr2_mem_ce@MBDIMM/rank; 280 281 engine serd.memory.intel.dimm_ce@MBDIMM/rank, N=DIMM_CE_COUNT, T=DIMM_CE_TIME; 282 event fault.memory.intel.dimm_ce@MBDIMM/rank, 283 engine=serd.memory.intel.dimm_ce@MBDIMM/rank; 284 prop fault.memory.intel.dimm_ce@MBDIMM/rank 285 { !confprop_defined(MBDIMM, "dimm-size") && 286 count(stat.ce_pgflt@MBDIMM) > 512 } (1)-> 287 ereport.cpu.intel.nb.mem_ce@MBDIMM/rank, 288 ereport.cpu.intel.nb.ddr2_mem_ce@MBDIMM/rank; 289 #define DIMM_CE(dimm_size, n, t, fault_rate) \ 290 prop fault.memory.intel.dimm_ce@MBDIMM/rank { \ 291 confprop(MBDIMM, "dimm-size") == dimm_size && \ 292 count(stat.ce_pgflt@MBDIMM) > fault_rate && \ 293 setserdn(n) & setserdt(t) } (1)-> \ 294 ereport.cpu.intel.nb.mem_ce@MBDIMM/rank, \ 295 ereport.cpu.intel.nb.ddr2_mem_ce@MBDIMM/rank; 296 297 DIMM_CE("8G", 8, 1week, 2000) 298 DIMM_CE("4G", 4, 1week, 1500) 299 DIMM_CE("2G", 4, 2week, 1000) 300 DIMM_CE("1G", 4, 4week, 500) 301 DIMM_CE("512M", 4, 8week, 250) 302 DIMM_CE("256M", 4, 16week, 125) 303 304 prop upset.memory.intel.discard@motherboard/memory-controller (0)-> 305 ereport.cpu.intel.nb.ddr2_mem_ce@motherboard/memory-controller; 306 307 event ereport.cpu.intel.nb.fbd.alert@rank{within(12s)}; 308 event fault.memory.intel.fbd.alert@rank, retire=0; 309 310 prop fault.memory.intel.fbd.alert@rank (1)-> 311 ereport.cpu.intel.nb.fbd.alert@rank; 312 313 prop fault.memory.intel.fbd.alert@rank (0)-> 314 EREPORT_BUS_ERROR; 315 316 event ereport.cpu.intel.nb.fbd.crc@rank{within(12s)}; 317 event fault.memory.intel.fbd.crc@rank, retire=0; 318 319 prop fault.memory.intel.fbd.crc@rank (1)-> 320 ereport.cpu.intel.nb.fbd.crc@rank; 321 322 prop fault.memory.intel.fbd.crc@rank (0)-> EREPORT_BUS_ERROR; 323 324 event ereport.cpu.intel.nb.fbd.reset_timeout@memory-controller {within(12s)}; 325 event fault.memory.intel.fbd.reset_timeout@memory-controller, retire=0; 326 327 prop fault.memory.intel.fbd.reset_timeout@memory-controller (1)-> 328 ereport.cpu.intel.nb.fbd.reset_timeout@memory-controller; 329 330 prop fault.memory.intel.fbd.reset_timeout@memory-controller (0)-> 331 EREPORT_BUS_ERROR; 332 333 event ereport.cpu.intel.nb.fbd.ch@dram-channel {within(12s)}; 334 engine serd.cpu.intel.nb.fbd.ch@dram-channel, N=2, T=1month; 335 event fault.memory.intel.fbd.ch@dram-channel, retire=0, 336 engine=serd.cpu.intel.nb.fbd.ch@dram-channel; 337 338 prop fault.memory.intel.fbd.ch@dram-channel (1)-> 339 ereport.cpu.intel.nb.fbd.ch@dram-channel; 340 341 prop fault.memory.intel.fbd.ch@dram-channel (0)-> 342 EREPORT_BUS_ERROR; 343 344 event ereport.cpu.intel.nb.fbd.otf@dram-channel {within(12s)}; 345 engine serd.cpu.intel.nb.fbd_otf@dram-channel, N=2, T=1week; 346 event fault.memory.intel.fbd.otf@dram-channel, retire=0, response=0, 347 engine=serd.cpu.intel.nb.fbd_otf@dram-channel; 348 349 prop fault.memory.intel.fbd.otf@dram-channel (1)-> 350 ereport.cpu.intel.nb.fbd.otf@dram-channel; 351 352 event ereport.cpu.intel.nb.otf@motherboard {within(12s)}; 353 event fault.cpu.intel.nb.otf@motherboard, retire=0, response=0; 354 355 prop fault.cpu.intel.nb.otf@motherboard (1)-> 356 ereport.cpu.intel.nb.otf@motherboard; 357 358 event ereport.cpu.intel.nb.unknown@motherboard {within(12s)}; 359 event ereport.cpu.intel.nb.unknown@memory-controller {within(12s)}; 360 event ereport.cpu.intel.nb.unknown@memory-controller/dram-channel {within(12s)}; 361 event ereport.cpu.intel.nb.spd@memory-controller/dram-channel {within(12s)}; 362 event ereport.cpu.intel.nb.ddr2_spd@ 363 memory-controller/dram-channel {within(12s)}; 364 event upset.discard@memory-controller; 365 366 prop upset.discard@memory-controller (0)-> 367 ereport.cpu.intel.nb.unknown@motherboard, 368 ereport.cpu.intel.nb.unknown@memory-controller, 369 ereport.cpu.intel.nb.unknown@memory-controller/dram-channel, 370 ereport.cpu.intel.nb.spd@memory-controller/dram-channel, 371 ereport.cpu.intel.nb.ddr2_spd@memory-controller/dram-channel; 372 373 event ereport.cpu.intel.nb.mem_ds@memory-controller{within(30s)}; 374 event ereport.cpu.intel.nb.ddr2_mem_ds@memory-controller{within(30s)}; 375 event fault.memory.intel.fbd.mem_ds@memory-controller/dram-channel/dimm/rank, 376 retire=0; 377 378 prop fault.memory.intel.fbd.mem_ds@ 379 memory-controller/dram-channel/dimm/rank[rank_num] 380 { payloadprop_defined("rank") && rank_num == payloadprop("rank") } (1)-> 381 ereport.cpu.intel.nb.mem_ds@memory-controller, 382 ereport.cpu.intel.nb.ddr2_mem_ds@memory-controller; 383 384 event ereport.cpu.intel.nb.fsb@chip{within(12s)}; 385 event fault.cpu.intel.nb.fsb@chip, retire=0; 386 387 prop fault.cpu.intel.nb.fsb@chip (1)-> 388 ereport.cpu.intel.nb.fsb@chip; 389 390 prop fault.cpu.intel.nb.fsb@chip (0)-> EREPORT_BUS_ERROR; 391 392 event ereport.cpu.intel.nb.ie@motherboard{within(12s)}; 393 event fault.cpu.intel.nb.ie@motherboard, retire=0; 394 event upset.cpu.intel.nb.ie_ce@motherboard{within(12s)}; 395 396 prop upset.cpu.intel.nb.ie_ce@motherboard 397 { payloadprop("intel-error-list") == "B6" } (0)-> 398 ereport.cpu.intel.nb.ie@motherboard; 399 400 prop fault.cpu.intel.nb.ie@motherboard 401 { payloadprop("intel-error-list") != "B6" } (1)-> 402 ereport.cpu.intel.nb.ie@motherboard; 403 404 prop fault.cpu.intel.nb.ie@motherboard (0)-> EREPORT_BUS_ERROR; 405 406 event ereport.cpu.intel.nb.dma@motherboard{within(12s)}; 407 event fault.cpu.intel.nb.dma@motherboard, retire=0, response=0; 408 409 prop fault.cpu.intel.nb.dma@motherboard (1)-> 410 ereport.cpu.intel.nb.dma@motherboard; 411 412 prop fault.cpu.intel.nb.dma@motherboard (0)-> EREPORT_BUS_ERROR; 413 414 event ereport.cpu.intel.nb.esi@motherboard{within(12s)}; 415 event ereport.cpu.intel.nb.pex@hostbridge{within(12s)}; 416 event upset.cpu.intel.nb.pex@hostbridge; 417 418 prop upset.cpu.intel.nb.pex@hostbridge (1)-> 419 ereport.cpu.intel.nb.esi@motherboard, 420 ereport.cpu.intel.nb.pex@hostbridge; 421 422 prop upset.cpu.intel.nb.pex@hostbridge (0)-> EREPORT_BUS_ERROR; 423 424 event ereport.cpu.intel.nb.unknown@rank{within(12s)}; 425 event upset.discard@rank; 426 427 prop upset.discard@rank (1)-> 428 ereport.cpu.intel.nb.unknown@rank; 429 430 prop upset.discard@rank (0)-> EREPORT_BUS_ERROR; 431 432 /* 433 * CPU integrated memory controller 434 */ 435 436 #define CONTAINS_RANK (payloadprop_contains("resource", \ 437 asru(chip/memory-controller/dram-channel/dimm/rank)) || \ 438 payloadprop_contains("resource", \ 439 asru(chip/memory-controller/dram-channel/dimm))) 440 441 #define STAT_CPU_MEM_CE_PGFLTS \ 442 stat.ce_pgflt@chip/memory-controller/dram-channel/dimm 443 444 #define SET_RES_OFFSET \ 445 (!payloadprop_defined("resource[0].hc-specific.offset") || \ 446 setpayloadprop("asru-offset", \ 447 payloadprop("resource[0].hc-specific.offset"))) 448 449 engine STAT_CPU_MEM_CE_PGFLTS; 450 451 event ereport.cpu.intel.quickpath.mem_ue@chip/memory-controller 452 {within(12s)}; 453 454 event fault.memory.intel.page_ue@ 455 chip/memory-controller/dram-channel/dimm/rank, 456 message=0, response=0; /* do not message individual pageflts */ 457 458 prop fault.memory.intel.page_ue@ 459 chip/memory-controller/dram-channel/dimm/rank 460 { CONTAINS_RANK && (payloadprop_defined("physaddr") || 461 payloadprop_defined("resource[0].hc-specific.offset")) && 462 SET_ADDR && SET_RES_OFFSET } (0)-> 463 ereport.cpu.intel.quickpath.mem_ue@chip/memory-controller; 464 465 #define CHIPDIMM chip/memory-controller/dram-channel/dimm 466 467 event fault.memory.intel.dimm_ue@CHIPDIMM/rank; 468 469 event error.memory.intel.dimm_ue_ep@CHIPDIMM/rank; 470 event error.memory.intel.dimm_ue_ex@CHIPDIMM/rank; 471 472 prop fault.memory.intel.dimm_ue@CHIPDIMM/rank (1)-> 473 error.memory.intel.dimm_ue_ep@CHIPDIMM/rank, 474 error.memory.intel.dimm_ue_ex@CHIPDIMM/rank; 475 476 prop error.memory.intel.dimm_ue_ep@CHIPDIMM/rank 477 { CONTAINS_RANK } (1)-> 478 ereport.cpu.intel.quickpath.mem_ue@chip/memory-controller; 479 480 prop fault.memory.intel.dimm_ue@CHIPDIMM/rank (0)-> EREPORT_BUS_ERROR; 481 482 event ereport.cpu.intel.quickpath.mem_ce@ 483 chip/memory-controller{within(12s)}; 484 485 engine serd.memory.intel.page_ce@CHIPDIMM/rank, N=PAGE_CE_COUNT, T=PAGE_CE_TIME; 486 event fault.memory.intel.page_ce@CHIPDIMM/rank, message=0, response=0, 487 count=STAT_CPU_MEM_CE_PGFLTS, 488 engine=serd.memory.intel.page_ce@CHIPDIMM/rank; 489 prop fault.memory.intel.page_ce@CHIPDIMM/rank 490 { CONTAINS_RANK && (payloadprop_defined("physaddr") || 491 payloadprop_defined("resource[0].hc-specific.offset")) && 492 SET_ADDR && SET_RES_OFFSET } (0)-> 493 ereport.cpu.intel.quickpath.mem_ce@chip/memory-controller; 494 495 engine serd.memory.intel.dimm_ce@CHIPDIMM, N=PAGE_CE_COUNT, T=PAGE_CE_TIME; 496 event fault.memory.intel.dimm_ce@CHIPDIMM, 497 engine=serd.memory.intel.dimm_ce@CHIPDIMM; 498 prop fault.memory.intel.dimm_ce@CHIPDIMM 499 { !confprop_defined(CHIPDIMM, "dimm-size") && 500 count(STAT_CPU_MEM_CE_PGFLTS) > 512 } (0)-> 501 ereport.cpu.intel.quickpath.mem_ce@chip/memory-controller; 502 503 #define CPU_MEM_DIMM_CE(dimm_size, n, t, fault_rate) \ 504 prop fault.memory.intel.dimm_ce@CHIPDIMM { \ 505 confprop(CHIPDIMM, "dimm-size") == dimm_size && \ 506 count(STAT_CPU_MEM_CE_PGFLTS) > fault_rate && \ 507 setserdn(n) & setserdt(t) } (0)-> \ 508 ereport.cpu.intel.quickpath.mem_ce@ \ 509 chip/memory-controller; 510 511 CPU_MEM_DIMM_CE("16G", 16, 1week, 2000) 512 CPU_MEM_DIMM_CE("8G", 8, 1week, 2000) 513 CPU_MEM_DIMM_CE("4G", 4, 1week, 1500) 514 CPU_MEM_DIMM_CE("2G", 4, 2week, 1000) 515 CPU_MEM_DIMM_CE("1G", 4, 4week, 500) 516 CPU_MEM_DIMM_CE("512M", 4, 8week, 250) 517 518 event ereport.cpu.intel.quickpath.mem_unknown@chip/memory-controller {within(12s)}; 519 event ereport.cpu.intel.quickpath.mem_unknown@chip/memory-controller/dram-channel 520 {within(12s)}; 521 event ereport.cpu.intel.quickpath.mem_unknown@ 522 chip/memory-controller/dram-channel/dimm/rank{within(12s)}; 523 event upset.discard@chip/memory-controller; 524 event upset.discard@chip/memory-controller/dram-channel/dimm/rank; 525 526 prop upset.discard@chip/memory-controller (0)-> 527 ereport.cpu.intel.quickpath.mem_unknown@chip/memory-controller, 528 ereport.cpu.intel.quickpath.mem_unknown@ 529 chip/memory-controller/dram-channel; 530 531 prop upset.discard@ 532 chip/memory-controller/dram-channel/dimm/rank (1)-> 533 ereport.cpu.intel.quickpath.mem_unknown@ 534 chip/memory-controller/dram-channel/dimm/rank; 535 536 event ereport.cpu.intel.quickpath.mem_parity@chip/memory-controller {within(1s)}; 537 event fault.cpu.intel.quickpath.mem_parity@chip/memory-controller; 538 539 prop fault.cpu.intel.quickpath.mem_parity@chip/memory-controller (1)-> 540 ereport.cpu.intel.quickpath.mem_parity@chip/memory-controller; 541 542 event ereport.cpu.intel.quickpath.mem_addr_parity@chip/memory-controller {within(1s)}; 543 event fault.cpu.intel.quickpath.mem_addr_parity@ 544 chip/memory-controller; 545 event fault.cpu.intel.quickpath.mem_addr_parity@CHIPDIMM; 546 event fault.cpu.intel.quickpath.mem_addr_parity@CHIPDIMM/rank; 547 548 prop fault.cpu.intel.quickpath.mem_addr_parity@ 549 chip/memory-controller (1)-> 550 ereport.cpu.intel.quickpath.mem_addr_parity@chip/memory-controller; 551 552 prop fault.cpu.intel.quickpath.mem_addr_parity@CHIPDIMM 553 { payloadprop_contains("resource", asru(CHIPDIMM)) } (1)-> 554 ereport.cpu.intel.quickpath.mem_addr_parity@chip/memory-controller; 555 556 prop fault.cpu.intel.quickpath.mem_addr_parity@CHIPDIMM/rank 557 { payloadprop_contains("resource", asru(CHIPDIMM/rank)) } (1)-> 558 ereport.cpu.intel.quickpath.mem_addr_parity@chip/memory-controller; 559 560 event ereport.cpu.intel.quickpath.mem_bad_addr@chip/memory-controller {within(1s)}; 561 event fault.cpu.intel.quickpath.mem_bad_addr@chip/memory-controller; 562 563 prop fault.cpu.intel.quickpath.mem_bad_addr@chip/memory-controller (1)-> 564 ereport.cpu.intel.quickpath.mem_bad_addr@chip/memory-controller; 565 566 event ereport.cpu.intel.quickpath.mem_spare@chip/memory-controller {within(1s)}; 567 event fault.cpu.intel.quickpath.mem_spare@ 568 chip/memory-controller/dram-channel/dimm; 569 570 prop fault.cpu.intel.quickpath.mem_spare@ 571 chip/memory-controller/dram-channel/dimm (1)-> 572 ereport.cpu.intel.quickpath.mem_spare@chip/memory-controller; 573 574 event ereport.cpu.intel.quickpath.mem_bad_id@chip/memory-controller {within(1s)}; 575 event fault.cpu.intel.quickpath.mem_bad_id@chip/memory-controller; 576 577 prop fault.cpu.intel.quickpath.mem_bad_id@chip/memory-controller (1)-> 578 ereport.cpu.intel.quickpath.mem_bad_id@chip/memory-controller; 579 580 event ereport.cpu.intel.quickpath.mem_redundant@chip/memory-controller {within(1s)}; 581 engine serd.cpu.intel.quickpath.mem_redundant@CHIPDIMM, N=2, T=72h; 582 event fault.cpu.intel.quickpath.mem_redundant@CHIPDIMM, 583 engine=serd.cpu.intel.quickpath.mem_redundant@CHIPDIMM; 584 585 event error.cpu.intel.quickpath.mem_redundant@CHIPDIMM/rank; 586 587 prop fault.cpu.intel.quickpath.mem_redundant@CHIPDIMM (1)-> 588 error.cpu.intel.quickpath.mem_redundant@CHIPDIMM/rank<>; 589 prop error.cpu.intel.quickpath.mem_redundant@CHIPDIMM/rank 590 { CONTAINS_RANK } (1)-> 591 ereport.cpu.intel.quickpath.mem_redundant@ 592 chip/memory-controller; 593 594 #define STATUS_UC (payloadprop("error_uncorrected") == 1) 595 event ereport.cpu.intel.quickpath.interconnect@chip 596 {within(1s)}; 597 event upset.cpu.intel.quickpath.interconnect@chip; 598 /* Diagnose corrected events to upsets */ 599 prop upset.cpu.intel.quickpath.interconnect@chip 600 { !STATUS_UC } (1)-> 601 ereport.cpu.intel.quickpath.interconnect@chip; 602 603 engine serd.cpu.intel.quickpath.interconnect@chip, 604 N=3, T=72h; 605 event fault.cpu.intel.quickpath.interconnect@chip, 606 engine=serd.cpu.intel.quickpath.interconnect@chip; 607 608 /* Diagnose uncorrected events to faults */ 609 prop fault.cpu.intel.quickpath.interconnect@chip 610 { STATUS_UC } (0)-> 611 ereport.cpu.intel.quickpath.interconnect@chip; 612 613 614 /* 615 * Nehalem EX specific rules 616 */ 617 /* MBox errors */ 618 #define EX_MEM_EVENT(leafclass, t) \ 619 event ereport.cpu.intel.quickpath.leafclass@ \ 620 chip/memory-controller { within(t) } 621 622 EX_MEM_EVENT(mem_lnktrns, 1s); 623 EX_MEM_EVENT(mem_lnkpers, 1s); 624 EX_MEM_EVENT(mem_sbfbdlinkerr, 1s); 625 EX_MEM_EVENT(mem_nbfbdlnkerr, 1s); 626 EX_MEM_EVENT(mem_lnkcrcvld, 1s); 627 628 engine serd.cpu.intel.quickpath.mem_link_ce@chip/memory-controller, 629 N=500, T=1week; 630 event fault.cpu.intel.quickpath.mem_link_ce@chip/memory-controller, 631 engine=serd.cpu.intel.quickpath.mem_link_ce@chip/memory-controller, 632 retire=0, response=0; 633 634 prop fault.cpu.intel.quickpath.mem_link_ce@chip/memory-controller -> 635 ereport.cpu.intel.quickpath.mem_lnktrns@chip/memory-controller, 636 ereport.cpu.intel.quickpath.mem_lnkpers@chip/memory-controller, 637 ereport.cpu.intel.quickpath.mem_sbfbdlinkerr@chip/memory-controller, 638 ereport.cpu.intel.quickpath.mem_nbfbdlnkerr@chip/memory-controller, 639 ereport.cpu.intel.quickpath.mem_lnkcrcvld@chip/memory-controller; 640 641 EX_MEM_EVENT(mem_lnkuncorr_uc, 1s); 642 EX_MEM_EVENT(mem_lnkpers_uc, 1s); 643 EX_MEM_EVENT(mem_sbfbdlinkerr_uc, 1s); 644 EX_MEM_EVENT(mem_nbfbdlnkerr_uc, 1s); 645 EX_MEM_EVENT(mem_lnkcrcvld_uc, 1s); 646 647 event fault.cpu.intel.quickpath.mem_link_ue@chip/memory-controller, 648 retire=0; 649 650 prop fault.cpu.intel.quickpath.mem_link_ue@chip/memory-controller -> 651 ereport.cpu.intel.quickpath.mem_lnkuncorr_uc@chip/memory-controller, 652 ereport.cpu.intel.quickpath.mem_lnkpers_uc@chip/memory-controller, 653 ereport.cpu.intel.quickpath.mem_sbfbdlinkerr_uc@chip/memory-controller, 654 ereport.cpu.intel.quickpath.mem_nbfbdlnkerr_uc@chip/memory-controller, 655 ereport.cpu.intel.quickpath.mem_lnkcrcvld_uc@chip/memory-controller; 656 657 EX_MEM_EVENT(mem_ptrl_fsm_err, 1s); 658 EX_MEM_EVENT(mem_errflw_fsm_fail, 1s); 659 EX_MEM_EVENT(mem_vberr, 1s); 660 661 engine serd.cpu.intel.quickpath.mem_controller_ce@chip/memory-controller, 662 N=500, T=1week; 663 event fault.cpu.intel.quickpath.mem_controller_ce@chip/memory-controller, 664 engine=serd.cpu.intel.quickpath.mem_controller_ce@chip/memory-controller, 665 retire=0, response=0; 666 667 prop fault.cpu.intel.quickpath.mem_controller_ce@chip/memory-controller -> 668 ereport.cpu.intel.quickpath.mem_ptrl_fsm_err@chip/memory-controller, 669 ereport.cpu.intel.quickpath.mem_errflw_fsm_fail@chip/memory-controller, 670 ereport.cpu.intel.quickpath.mem_vberr@chip/memory-controller; 671 672 EX_MEM_EVENT(mem_ptrl_fsm_err_uc, 1s); 673 EX_MEM_EVENT(mem_errflw_fsm_fail_uc, 1s); 674 EX_MEM_EVENT(mem_mcpar_fsmerr_uc, 1s); 675 EX_MEM_EVENT(mem_vberr_uc, 1s); 676 EX_MEM_EVENT(mem_fberr_uc, 1s); 677 678 event fault.cpu.intel.quickpath.mem_controller_ue@chip/memory-controller, 679 retire=0; 680 681 prop fault.cpu.intel.quickpath.mem_controller_ue@chip/memory-controller -> 682 ereport.cpu.intel.quickpath.mem_ptrl_fsm_err_uc@chip/memory-controller, 683 ereport.cpu.intel.quickpath.mem_errflw_fsm_fail_uc@chip/memory-controller, 684 ereport.cpu.intel.quickpath.mem_mcpar_fsmerr_uc@chip/memory-controller, 685 ereport.cpu.intel.quickpath.mem_vberr_uc@chip/memory-controller, 686 ereport.cpu.intel.quickpath.mem_fberr_uc@chip/memory-controller; 687 688 EX_MEM_EVENT(mem_scrubbing_uc, 1s); 689 event fault.cpu.intel.quickpath.mem_scrubbing@ 690 chip/memory-controller/dram-channel/dimm/rank, 691 response=0; 692 693 prop fault.cpu.intel.quickpath.mem_scrubbing@ 694 chip/memory-controller/dram-channel/dimm/rank[rank_num] 695 { payloadprop_defined("rank") && rank_num == payloadprop("rank") && 696 (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 697 SET_ADDR && SET_OFFSET } (1)-> 698 ereport.cpu.intel.quickpath.mem_scrubbing_uc@chip/memory-controller; 699 700 EX_MEM_EVENT(mem_ecc_uc, 12s); 701 EX_MEM_EVENT(mem_even_parity_uc, 1s); 702 703 EX_MEM_EVENT(mem_ecc, 12s); 704 EX_MEM_EVENT(mem_even_parity, 1s); 705 706 event error.memory.intel.ex_dimm_ce@ 707 chip/memory-controller/dram-channel/dimm/rank; 708 709 prop fault.memory.intel.page_ue@ 710 chip/memory-controller/dram-channel/dimm/rank[rank_num] 711 { payloadprop_defined("rank") && rank_num == payloadprop("rank") && 712 (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 713 SET_ADDR && SET_OFFSET } (0)-> 714 ereport.cpu.intel.quickpath.mem_ecc_uc@chip/memory-controller, 715 ereport.cpu.intel.quickpath.mem_even_parity_uc@chip/memory-controller; 716 717 prop fault.memory.intel.page_ce@ 718 chip/memory-controller/dram-channel/dimm/rank[rank_num] 719 { payloadprop_defined("rank") && rank_num == payloadprop("rank") && 720 (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 721 SET_ADDR && SET_OFFSET } (0)-> 722 ereport.cpu.intel.quickpath.mem_ecc@chip/memory-controller, 723 ereport.cpu.intel.quickpath.mem_even_parity@chip/memory-controller; 724 725 prop error.memory.intel.dimm_ue_ex@ 726 chip/memory-controller/dram-channel/dimm/rank[rank_num] 727 { payloadprop_defined("rank") && rank_num == payloadprop("rank") } (1)-> 728 ereport.cpu.intel.quickpath.mem_ecc_uc@chip/memory-controller, 729 ereport.cpu.intel.quickpath.mem_even_parity_uc@chip/memory-controller; 730 731 prop fault.memory.intel.dimm_ce@ 732 chip/memory-controller/dram-channel/dimm 733 { !confprop_defined(chip/memory-controller/dram-channel/dimm, 734 "dimm-size") && setserdn(10) & setserdt(1week) } (0)-> 735 error.memory.intel.ex_dimm_ce@ 736 chip/memory-controller/dram-channel/dimm/rank; 737 prop error.memory.intel.ex_dimm_ce@ 738 chip/memory-controller/dram-channel/dimm/rank[rank_num] 739 { payloadprop_defined("rank") && rank_num == payloadprop("rank") && 740 !confprop_defined(chip/memory-controller/dram-channel/dimm, 741 "dimm-size") && 742 count(STAT_CPU_MEM_CE_PGFLTS) > 512 } (1)-> 743 ereport.cpu.intel.quickpath.mem_ecc@chip/memory-controller, 744 ereport.cpu.intel.quickpath.mem_even_parity@chip/memory-controller; 745 746 #define EX_CPU_MEM_DIMM_CE(dimm_size, n, t, fault_rate) \ 747 prop fault.memory.intel.dimm_ce@ \ 748 chip/memory-controller/dram-channel/dimm { \ 749 confprop(chip/memory-controller/dram-channel/dimm, \ 750 "dimm-size") == dimm_size && \ 751 setserdn(n) & setserdt(t) } (0)-> \ 752 error.memory.intel.ex_dimm_ce@ \ 753 chip/memory-controller/dram-channel/dimm/rank; \ 754 prop error.memory.intel.ex_dimm_ce@ \ 755 chip/memory-controller/dram-channel/dimm/rank[rank_num] { \ 756 payloadprop_defined("rank") && rank_num == payloadprop("rank") && \ 757 confprop(chip/memory-controller/dram-channel/dimm, \ 758 "dimm-size") == dimm_size && \ 759 count(STAT_CPU_MEM_CE_PGFLTS) > fault_rate } (1)-> \ 760 ereport.cpu.intel.quickpath.mem_ecc@chip/memory-controller, \ 761 ereport.cpu.intel.quickpath.mem_even_parity@chip/memory-controller; 762 763 EX_CPU_MEM_DIMM_CE("16G", 16, 1week, 2000) 764 EX_CPU_MEM_DIMM_CE("8G", 8, 1week, 2000) 765 EX_CPU_MEM_DIMM_CE("4G", 4, 1week, 1500) 766 EX_CPU_MEM_DIMM_CE("2G", 4, 2week, 1000) 767 EX_CPU_MEM_DIMM_CE("1G", 4, 4week, 500) 768 769 event upset.memory.intel.discard@chip/memory-controller{within(1s)}; 770 771 prop upset.memory.intel.discard@chip/memory-controller (0)-> 772 ereport.cpu.intel.quickpath.mem_scrubbing_uc@chip/memory-controller, 773 ereport.cpu.intel.quickpath.mem_ecc_uc@chip/memory-controller, 774 ereport.cpu.intel.quickpath.mem_even_parity_uc@chip/memory-controller, 775 ereport.cpu.intel.quickpath.mem_ecc@chip/memory-controller, 776 ereport.cpu.intel.quickpath.mem_even_parity@chip/memory-controller; 777 778 EX_MEM_EVENT(mem_failover_mir, 1s); 779 event fault.cpu.intel.quickpath.mem_failover_mir@chip/memory-controller, 780 retire=0; 781 782 prop fault.cpu.intel.quickpath.mem_failover_mir@chip/memory-controller -> 783 ereport.cpu.intel.quickpath.mem_failover_mir@chip/memory-controller; 784 785 /* 786 * RBox errors 787 */ 788 #define EX_EVENT(leafclass, t) \ 789 event ereport.cpu.intel.quickpath.leafclass@chip { within(t) } 790 791 engine serd.cpu.intel.quickpath.bus_interconnect@chip, 792 N=3, T=72h; 793 event fault.cpu.intel.quickpath.bus_interconnect@chip, 794 engine=serd.cpu.intel.quickpath.bus_interconnect@chip, 795 retire=0; 796 797 EX_EVENT(bus_retry_abort, 1s); 798 EX_EVENT(bus_link_init_ce, 1s); 799 event upset.cpu.intel.quickpath.discard@chip; 800 801 prop upset.cpu.intel.quickpath.discard@chip (0)-> 802 ereport.cpu.intel.quickpath.bus_retry_abort@chip, 803 ereport.cpu.intel.quickpath.bus_link_init_ce@chip; 804 805 EX_EVENT(bus_unknown, 1s); 806 EX_EVENT(bus_single_ecc, 1s); 807 EX_EVENT(bus_crc_flit, 1s); 808 809 prop fault.cpu.intel.quickpath.bus_interconnect@chip (0)-> 810 ereport.cpu.intel.quickpath.bus_unknown@chip, 811 ereport.cpu.intel.quickpath.bus_single_ecc@chip, 812 ereport.cpu.intel.quickpath.bus_crc_flit@chip; 813 814 EX_EVENT(bus_unknown_external, 1s); 815 EX_EVENT(bus_crc_flit_external, 1s); 816 prop upset.cpu.intel.quickpath.discard@chip (0)-> 817 ereport.cpu.intel.quickpath.bus_unknown_external@chip, 818 ereport.cpu.intel.quickpath.bus_crc_flit_external@chip; 819 820 EX_EVENT(bus_unknown_uc, 1s); 821 EX_EVENT(bus_opr_poison_err, 1s); 822 EX_EVENT(bus_eot_parity, 1s); 823 EX_EVENT(bus_rta_parity, 1s); 824 EX_EVENT(bus_bad_sbu_route, 1s); 825 EX_EVENT(bus_bad_msg, 1s); 826 EX_EVENT(bus_bad_vn_credit, 1s); 827 EX_EVENT(bus_hdr_double_ecc, 1s); 828 EX_EVENT(bus_link_retry_err, 1s); 829 830 prop fault.cpu.intel.quickpath.bus_interconnect@chip 831 { setserdincrement(4) } (0)-> 832 ereport.cpu.intel.quickpath.bus_unknown_uc@chip, 833 ereport.cpu.intel.quickpath.bus_opr_poison_err@chip, 834 ereport.cpu.intel.quickpath.bus_eot_parity@chip, 835 ereport.cpu.intel.quickpath.bus_rta_parity@chip, 836 ereport.cpu.intel.quickpath.bus_bad_sbu_route@chip, 837 ereport.cpu.intel.quickpath.bus_bad_msg@chip, 838 ereport.cpu.intel.quickpath.bus_bad_vn_credit@chip, 839 ereport.cpu.intel.quickpath.bus_hdr_double_ecc@chip, 840 ereport.cpu.intel.quickpath.bus_link_retry_err@chip; 841 842 EX_EVENT(bus_unknown_uc_external, 1s); 843 EX_EVENT(bus_opr_poison_err_external, 1s); 844 EX_EVENT(bus_eot_parity_external, 1s); 845 EX_EVENT(bus_rta_parity_external, 1s); 846 EX_EVENT(bus_bad_sbu_route_external, 1s); 847 EX_EVENT(bus_bad_msg_external, 1s); 848 EX_EVENT(bus_bad_vn_credit_external, 1s); 849 EX_EVENT(bus_hdr_double_ecc_external, 1s); 850 EX_EVENT(bus_link_retry_err_external, 1s); 851 852 prop upset.cpu.intel.quickpath.discard@chip (0)-> 853 ereport.cpu.intel.quickpath.bus_unknown_uc_external@chip, 854 ereport.cpu.intel.quickpath.bus_opr_poison_err_external@chip, 855 ereport.cpu.intel.quickpath.bus_eot_parity_external@chip, 856 ereport.cpu.intel.quickpath.bus_rta_parity_external@chip, 857 ereport.cpu.intel.quickpath.bus_bad_sbu_route_external@chip, 858 ereport.cpu.intel.quickpath.bus_bad_msg_external@chip, 859 ereport.cpu.intel.quickpath.bus_bad_vn_credit_external@chip, 860 ereport.cpu.intel.quickpath.bus_hdr_double_ecc_external@chip, 861 ereport.cpu.intel.quickpath.bus_link_retry_err_external@chip; 862 863 /* 864 * CBox errors 865 */ 866 EX_EVENT(llc_ewb_uc, 1s); 867 event fault.cpu.intel.quickpath.llc_ewb@chip, 868 retire=0, response=0; 869 870 prop fault.cpu.intel.quickpath.llc_ewb@chip 871 { (payloadprop_defined("physaddr") || payloadprop_defined("offset")) && 872 SET_ADDR && SET_OFFSET } (1)-> 873 ereport.cpu.intel.quickpath.llc_ewb_uc@chip; 874 875 prop upset.cpu.intel.quickpath.discard@chip (0)-> 876 ereport.cpu.intel.quickpath.llc_ewb_uc@chip; 877 878 /* 879 * SBox errors 880 */ 881 EX_EVENT(system_cache_uc, 1s); 882 event fault.cpu.intel.quickpath.system_cache@chip, 883 retire=0, response=0; 884 prop fault.cpu.intel.quickpath.system_cache@chip -> 885 ereport.cpu.intel.quickpath.system_cache_uc@chip; 886 887 /* 888 * BBox errors 889 */ 890 EX_EVENT(home_agent_uc, 1s); 891 event fault.cpu.intel.quickpath.home_agent@chip, 892 retire=0, response=0; 893 prop fault.cpu.intel.quickpath.home_agent@chip -> 894 ereport.cpu.intel.quickpath.home_agent_uc@chip; 895 896 /* 897 * UBox errors 898 */ 899 EX_EVENT(sys_cfg_cfa_ecc, 1s); 900 EX_EVENT(sys_cfg_uc, 1s); 901 902 engine serd.cpu.intel.quickpath.sys_cfg@chip, 903 N=2, T=72h; 904 event fault.cpu.intel.quickpath.sys_cfg@chip, 905 engine=serd.cpu.intel.quickpath.sys_cfg@chip, 906 retire=0, response=0; 907 908 prop fault.cpu.intel.quickpath.sys_cfg@chip (0)-> 909 ereport.cpu.intel.quickpath.sys_cfg_cfa_ecc@chip; 910 911 prop fault.cpu.intel.quickpath.sys_cfg@chip 912 { setserdincrement(3) } (0)-> 913 ereport.cpu.intel.quickpath.sys_cfg_uc@chip; 914 915 /* 916 * Handling poison errors 917 */ 918 engine stat.has_poison@motherboard; 919 event fault.cpu.intel.has_poison@motherboard, 920 count=stat.has_poison@motherboard[0], 921 message=0, retire=0, response=0; 922 engine stat.discard_fatal@motherboard; 923 event fault.cpu.intel.discard_fatal@motherboard, 924 count=stat.discard_fatal@motherboard[0], 925 message=0, retire=0, response=0; 926 927 prop fault.cpu.intel.has_poison@motherboard 928 { payloadprop_defined("poison") && 1 == payloadprop("poison") } (1)-> 929 ereport.cpu.intel.quickpath.mem_scrubbing_uc@chip<>/memory-controller<>, 930 ereport.cpu.intel.quickpath.llc_ewb_uc@chip<>, 931 ereport.cpu.intel.quickpath.system_cache_uc@chip<>, 932 ereport.cpu.intel.quickpath.bus_opr_poison_err@chip<>, 933 ereport.cpu.intel.quickpath.bus_opr_poison_err_external@chip<>; 934 935 prop fault.cpu.intel.discard_fatal@motherboard 936 { count(stat.has_poison@motherboard[0]) > count(stat.discard_fatal@motherboard[0]) && 937 payloadprop_defined("bank_number") && 5 == payloadprop("bank_number") && 938 payloadprop_defined("processor_context_corrupt") && 939 1 == payloadprop("processor_context_corrupt") } (0)-> 940 ereport.cpu.intel.internal_unclassified@chip<>/core<>/strand<> {within(10s)}; 941 942 prop fault.cpu.intel.internal@chip/core/strand 943 { (count(stat.has_poison@motherboard[0]) <= count(stat.discard_fatal@motherboard[0]) || 944 !payloadprop_defined("bank_number") || 5 != payloadprop("bank_number") || 945 !payloadprop_defined("processor_context_corrupt") || 946 0 == payloadprop("processor_context_corrupt")) && 947 (payloadprop("error_uncorrected") == 1 ? setserdincrement(4) : 1) } (0)-> 948 ereport.cpu.intel.internal_unclassified@chip/core/strand; 949