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, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#pragma ident "%Z%%M% %I% %E% SMI" 28 29#pragma dictionary "SUN4" 30 31/* 32 * Eversholt rules for the Fire nexus driver 33 */ 34 35#define HB_FIT 1000 36#define HBUS_FIT 1000 37#define PCI_DEV_FIT 1000 38#define PCIEX_DEV_FIT 1000 39#define EBUS_FIT 1000 40#define LINK_EVENTS_COUNT 10 41#define LINK_EVENTS_TIME 1h 42 43#define PROP_PLAT_FRU "PLAT-FRU" 44 45/* 46 * Test for primary or secondary ereports 47 */ 48#define IS_PRIMARY (payloadprop("primary")) 49#define IS_SECONDARY (! payloadprop("primary")) 50 51/* 52 * payload: imu-rds or imu-scs 53 * 54 * Extract the request id, the BDF, value in the IMU RDS/SCS log register 55 * 56 * PRM 2.0, pg 227-228 57 * REQ_ID field: bits [47:32] 58 * 59 * Example: 60 * 0x7766554433221100 61 * ^^^^ 62 */ 63#define IMU_REQ_ID_BIT_OFFSET 32 64#define IMU_REQ_ID_BIT_MODULO (1 << 16) 65#define IMU_MATCH_BDF(imu_rds_scs, b, d, f) \ 66 ( (payloadprop("primary")) && \ 67 ((((imu_rds_scs) >> IMU_REQ_ID_BIT_OFFSET) % IMU_REQ_ID_BIT_MODULO) \ 68 == ((b << 8) | (d << 3) | f)) \ 69 ) 70 71 72/* 73 * payload: mmu-tfsr 74 * 75 * Extract the request id, the BDF value, in the MMU TFSR register 76 * 77 * PRM 2.0, pg 243 78 * Request ID: bits 15:0 79 * 80 * Example: 81 * 0x7766554433221100 82 * ^^^^ 83 */ 84#define MMU_REQ_ID_BIT_MODULO (1 << 16) 85#define MMU_MATCH_BDF(mmu_tfsr, b, d, f) \ 86 ( (payloadprop("primary")) && \ 87 (((mmu_tfsr) % MMU_REQ_ID_BIT_MODULO) == ((b << 8) | (d << 3) | f)) \ 88 ) 89 90 91event error.io.fire.dmc.bad_op@hostbridge/pciexrc; 92event error.io.fire.dmc.bad_parity@hostbridge/pciexrc; 93event error.io.fire.pec.i-e-buffer-parity@hostbridge/pciexrc; 94event error.io.fire.pec.misc-egress@hostbridge/pciexrc ; 95event error.io.fire.pec.adjacentnode@hostbridge/pciexrc ; 96event error.io.fire.pec.secondary@hostbridge/pciexrc ; 97event error.io.fire.pec.fabric_error@hostbridge/pciexrc ; 98 99/* 100 * Fatal JBC ereport: (mb_pea, cpe, ape, pio_cpe, jtceew, jtceei, jtceer) 101 * ebus_to ereport: 102 * The fmri of the ereport is ioboard0/hostbridge0 103 * 104 * Other ereports: 105 * The fmri is ioboard0/hostbridge0/pciexrc[0-1] 106 * 107 */ 108event ereport.io.fire.jbc.ill_acc@hostbridge/pciexrc{within(5s)}; 109event ereport.io.fire.jbc.ill_acc_rd@hostbridge/pciexrc{within(5s)}; 110 111event ereport.io.fire.jbc.mb_pea@hostbridge{within(5s)}; 112event ereport.io.fire.jbc.mb_per@hostbridge/pciexrc{within(5s)}; 113event ereport.io.fire.jbc.mb_pew@hostbridge/pciexrc{within(5s)}; 114event ereport.io.fire.jbc.ebus_to@hostbridge{within(5s)}; 115 116 117/* 118 * Do not diagnose or silently consume the next 15 ereports. 119 * There will be a no-subscriber fmd message. 120 */ 121 /* 122event ereport.io.fire.jbc.jue@hostbridge/pciexrc{within(5s)}; 123event ereport.io.fire.jbc.pio_unmap@hostbridge/pciexrc{within(5s)}; 124event ereport.io.fire.jbc.pio_unmap_rd@hostbridge/pciexrc{within(5s)}; 125event ereport.io.fire.jbc.jte@hostbridge/pciexrc{within(5s)}; 126event ereport.io.fire.jbc.jbe@hostbridge/pciexrc{within(5s)}; 127event ereport.io.fire.jbc.jtceew@hostbridge{within(5s)}; 128event ereport.io.fire.jbc.jtceer@hostbridge{within(5s)}; 129event ereport.io.fire.jbc.jtceei@hostbridge{within(5s)}; 130event ereport.io.fire.jbc.icise@hostbridge/pciexrc{within(5s)}; 131event ereport.io.fire.jbc.ijp@hostbridge/pciexrc{within(5s)}; 132event ereport.io.fire.jbc.ill_bmw@hostbridge/pciexrc{within(5s)} ; 133event ereport.io.fire.jbc.ill_bmr@hostbridge/pciexrc{within(5s)} ; 134event ereport.io.fire.jbc.unsol_rd@hostbridge/pciexrc{within(5s)}; 135event ereport.io.fire.jbc.unsol_intr@hostbridge/pciexrc{within(5s)}; 136event ereport.io.fire.jbc.bjc@hostbridge/pciexrc{within(5s)}; 137 */ 138 139/* 140 * DMC ereports 141 * 142 */ 143event ereport.io.fire.dmc.byp_err@hostbridge/pciexrc{within(5s)}; 144event ereport.io.fire.dmc.byp_oor@hostbridge/pciexrc{within(5s)}; 145event ereport.io.fire.dmc.trn_err@hostbridge/pciexrc{within(5s)}; 146event ereport.io.fire.dmc.trn_oor@hostbridge/pciexrc{within(5s)}; 147event ereport.io.fire.dmc.tte_inv@hostbridge/pciexrc{within(5s)}; 148event ereport.io.fire.dmc.tte_prt@hostbridge/pciexrc{within(5s)}; 149event ereport.io.fire.dmc.ttc_dpe@hostbridge/pciexrc{within(5s)}; 150event ereport.io.fire.dmc.tbw_dme@hostbridge/pciexrc{within(5s)}; 151event ereport.io.fire.dmc.tbw_ude@hostbridge/pciexrc{within(5s)}; 152event ereport.io.fire.dmc.tbw_err@hostbridge/pciexrc{within(5s)}; 153event ereport.io.fire.dmc.tbw_dpe@hostbridge/pciexrc{within(5s)}; 154event ereport.io.fire.dmc.ttc_cae@hostbridge/pciexrc{within(5s)}; 155event ereport.io.fire.dmc.eq_over@hostbridge/pciexrc{within(5s)}; 156 157/* 158 * TLU Other Event ereports 159 * 160 */ 161event ereport.io.fire.pec.ihb_pe@hostbridge/pciexrc{within(5s)}; 162event ereport.io.fire.pec.iip@hostbridge/pciexrc{within(5s)}; 163event ereport.io.fire.pec.edp@hostbridge/pciexrc{within(5s)}; 164event ereport.io.fire.pec.ehp@hostbridge/pciexrc{within(5s)}; 165event ereport.io.fire.pec.eru@hostbridge/pciexrc{within(5s)}; 166event ereport.io.fire.pec.ero@hostbridge/pciexrc{within(5s)}; 167event ereport.io.fire.pec.emp@hostbridge/pciexrc{within(5s)}; 168event ereport.io.fire.pec.epe@hostbridge/pciexrc{within(5s)}; 169event ereport.io.fire.pec.erp@hostbridge/pciexrc{within(5s)}; 170event ereport.io.fire.pec.eip@hostbridge/pciexrc{within(5s)}; 171 172event ereport.io.fire.link-events-trip@hostbridge/pciexrc ; 173 174/* 175 * TLU Uncorrectable and Correctable ereports 176 */ 177event ereport.io.fire.pec.ur@hostbridge/pciexrc {within(5s)}; 178event ereport.io.fire.pec.uc@hostbridge/pciexrc {within(5s)}; 179event ereport.io.fire.pec.cto@hostbridge/pciexrc {within(5s)}; 180event ereport.io.fire.pec.rof@hostbridge/pciexrc {within(5s)}; 181event ereport.io.fire.pec.mfp@hostbridge/pciexrc {within(5s)}; 182event ereport.io.fire.pec.pois@hostbridge/pciexrc {within(5s)}; 183event ereport.io.fire.pec.fcp@hostbridge/pciexrc {within(5s)}; 184event ereport.io.fire.pec.dlp@hostbridge/pciexrc {within(5s)}; 185event ereport.io.fire.pec.te@hostbridge/pciexrc {within(5s)}; 186event ereport.io.fire.pec.re@hostbridge/pciexrc {within(5s)}; 187event ereport.io.fire.pec.bdp@hostbridge/pciexrc {within(5s)}; 188event ereport.io.fire.pec.btp@hostbridge/pciexrc {within(5s)}; 189event ereport.io.fire.pec.rnr@hostbridge/pciexrc {within(5s)}; 190event ereport.io.fire.pec.rto@hostbridge/pciexrc {within(5s)}; 191 192/* 193 * Fire Fabric ereport 194 * Whenever a leaf device sends an error message (fatal, non-fatal, or CE) to 195 * root complex, the nexus driver publishes this ereport to log the ereport. 196 */ 197event ereport.io.fire.fabric@hostbridge/pciexrc {within(5s)}; 198 199/* 200 * A faulty Fire hostbridge may cause (* may cause PCI-E abort): 201 * 202 * - merge buffer errors mb_pea,w,r 203 * - mmu data parity errors ttc_dpe*, tbw_dpe* 204 * - ingress/egress buffer parity errors ihb_pe, iip, edp, ehp 205 * - misc egress eru, ero, emp, epe, erp, eip 206 * - too many link up/down/reset etc. events 207 * - EQ overflow 208 */ 209 210fru hostbridge/pciexrc; 211asru hostbridge/pciexrc; 212 213event fault.io.fire.asic@hostbridge/pciexrc, 214 FITrate=HB_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc; 215 216prop fault.io.fire.asic@hostbridge/pciexrc (0)-> 217 ereport.io.fire.jbc.mb_pea@hostbridge, 218 ereport.io.fire.jbc.mb_per@hostbridge/pciexrc, 219 ereport.io.fire.jbc.mb_pew@hostbridge/pciexrc, 220 ereport.io.fire.dmc.eq_over@hostbridge/pciexrc, 221 error.io.fire.dmc.bad_parity@hostbridge/pciexrc, 222 error.io.fire.pec.i-e-buffer-parity@hostbridge/pciexrc, 223 error.io.fire.pec.misc-egress@hostbridge/pciexrc, 224 error.io.fire.pec.adjacentnode@hostbridge/pciexrc; 225 226prop error.io.fire.dmc.bad_parity@hostbridge/pciexrc (1)-> 227 ereport.io.fire.dmc.ttc_dpe@hostbridge/pciexrc, 228 ereport.io.fire.dmc.tbw_dpe@hostbridge/pciexrc; 229 230prop error.io.fire.pec.i-e-buffer-parity@hostbridge/pciexrc (1) -> 231 ereport.io.fire.pec.ihb_pe@hostbridge/pciexrc, 232 ereport.io.fire.pec.iip@hostbridge/pciexrc, 233 ereport.io.fire.pec.ehp@hostbridge/pciexrc, 234 ereport.io.fire.pec.edp@hostbridge/pciexrc; 235 236prop error.io.fire.pec.misc-egress@hostbridge/pciexrc (1) -> 237 ereport.io.fire.pec.eru@hostbridge/pciexrc, 238 ereport.io.fire.pec.ero@hostbridge/pciexrc, 239 ereport.io.fire.pec.emp@hostbridge/pciexrc, 240 ereport.io.fire.pec.epe@hostbridge/pciexrc, 241 ereport.io.fire.pec.erp@hostbridge/pciexrc, 242 ereport.io.fire.pec.eip@hostbridge/pciexrc; 243 244 245/* 246 * EBUS fault 247 */ 248event fault.io.ebus@hostbridge/pciexrc, 249 FITrate=EBUS_FIT, FRU=hostbridge/pciexrc, ASRU=hostbridge/pciexrc; 250 251/* 252 * A faulty ebus can cause ebus timeout ebus_to 253 */ 254prop fault.io.ebus@hostbridge/pciexrc (0)-> 255 ereport.io.fire.jbc.ebus_to@hostbridge; 256 257 258/* 259 * hostbus 260 */ 261fru hostbridge; 262asru hostbridge; 263event fault.io.hbus@hostbridge/pciexrc, 264 FITrate=HBUS_FIT, FRU=hostbridge, ASRU=hostbridge; 265 266event error.io.fire.jbc.pio_dpe@hostbridge/pciexrc; 267 268event ereport.io.fire.jbc.ape@hostbridge{within(5s)}; 269event ereport.io.fire.jbc.pio_dpe@hostbridge/pciexrc{within(5s)}; 270event ereport.io.fire.jbc.rd_dpe@hostbridge/pciexrc{within(5s)}; 271event ereport.io.fire.jbc.wr_dpe@hostbridge/pciexrc{within(5s)}; 272event ereport.io.fire.jbc.cpe@hostbridge{within(5s)}; 273event ereport.io.fire.jbc.pio_cpe@hostbridge{within(5s)}; 274 275/* A faulty host bus may cause: 276 * 277 * - ape: jbus address parity error. 278 * - pio_dpe*: jbus PIO write parity error. 279 * - rd_dpe : jbus DMA read parity error 280 * - wr_dpe: jbus DMA write parity error. 281 * - cpe: jbus control parity error. 282 * - pio_cpe: jbus PIO control parity error. 283 */ 284prop fault.io.hbus@hostbridge/pciexrc (0)-> 285 ereport.io.fire.jbc.ape@hostbridge, 286 error.io.fire.jbc.pio_dpe@hostbridge/pciexrc, 287 ereport.io.fire.jbc.rd_dpe@hostbridge/pciexrc, 288 ereport.io.fire.jbc.wr_dpe@hostbridge/pciexrc, 289 ereport.io.fire.jbc.cpe@hostbridge, 290 ereport.io.fire.jbc.pio_cpe@hostbridge; 291 292prop error.io.fire.jbc.pio_dpe@hostbridge/pciexrc (1)-> 293 ereport.io.fire.jbc.pio_dpe@hostbridge/pciexrc ; 294 295event ereport.io.fire.dmc.msi_par_err@hostbridge/pciexrc{within(5s)}; 296event ereport.io.fire.dmc.msi_mal_err@hostbridge/pciexrc{within(5s)}; 297 298/* 299 * 300 * PCI-E device fault 301 * 302 */ 303fru pciexbus/pciexdev; 304asru pciexbus/pciexdev/pciexfn; 305event fault.io.fire.pciex.device@pciexbus/pciexdev/pciexfn, 306 FRU=pciexbus/pciexdev, 307 ASRU=pciexbus/pciexdev/pciexfn, 308 FITrate=PCIEX_DEV_FIT; 309 310/* 311 * A faulty PCI-E device can cause (chip specific ereports): 312 * 313 * MSI malformed or parity error 314 * 315 * Extract the request id in the RDS/SCS log register. It 's the BDF 316 * value of the device. 317 */ 318prop fault.io.fire.pciex.device@pciexbus[b]/pciexdev[d]/pciexfn[f] (0) -> 319 ereport.io.fire.dmc.msi_mal_err@hostbridge/pciexrc 320 { 321 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 322 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 323 }, 324 ereport.io.fire.dmc.msi_par_err@hostbridge/pciexrc 325 { 326 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 327 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 328 }; 329 330/* 331 * Event queue overflow 332 */ 333prop fault.io.fire.pciex.device@pciexbus[b]/pciexdev[d]/pciexfn[0] (0) -> 334 ereport.io.fire.dmc.eq_over@hostbridge/pciexrc 335 { 336 /* 337 * Indict PCI-E FRU(s) under this root complex excluding the 338 * one that the Fire ASIC resides on. 339 */ 340 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[0]) 341 && 342 (confprop(asru(pciexbus[b]/pciexdev[d]/pciexfn[0]), PROP_PLAT_FRU) 343 != 344 confprop(asru(hostbridge/pciexrc), PROP_PLAT_FRU)) 345 }; 346 347 348/* 349 * PCI devices 350 * Similar to the above rules. 351 */ 352 353fru pcibus/pcidev; 354asru pcibus/pcidev/pcifn; 355event fault.io.fire.pci.device@pcibus/pcidev/pcifn, 356 FITrate=PCI_DEV_FIT, 357 FRU=pcibus/pcidev, 358 ASRU=pcibus/pcidev/pcifn; 359 360prop fault.io.fire.pci.device@pcibus[b]/pcidev[d]/pcifn[f] (0) -> 361 ereport.io.fire.dmc.msi_mal_err@hostbridge/pciexrc 362 { 363 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 364 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 365 }, 366 ereport.io.fire.dmc.msi_par_err@hostbridge/pciexrc 367 { 368 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 369 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 370 }; 371 372prop fault.io.fire.pci.device@pcibus[b]/pcidev[d]/pcifn[0] (0) -> 373 ereport.io.fire.dmc.eq_over@hostbridge/pciexrc 374 { 375 /* 376 * Indict PCI FRU(s) under this root complex excluding the 377 * one that the Fire ASIC resides on. 378 */ 379 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[0]) 380 && 381 (confprop(asru(pcibus[b]/pcidev[d]/pcifn[0]), PROP_PLAT_FRU) 382 != 383 confprop(asru(hostbridge/pciexrc), PROP_PLAT_FRU)) 384 }; 385 386 387event ereport.io.fire.dmc.msi_not_en@hostbridge/pciexrc{within(5s)}; 388event ereport.io.fire.dmc.cor_not_en@hostbridge/pciexrc{within(5s)}; 389event ereport.io.fire.dmc.nonfatal_not_en@hostbridge/pciexrc{within(5s)}; 390event ereport.io.fire.dmc.fatal_not_en@hostbridge/pciexrc{within(5s)}; 391event ereport.io.fire.dmc.pmpme_not_en@hostbridge/pciexrc{within(5s)}; 392event ereport.io.fire.dmc.pmeack_not_en@hostbridge/pciexrc{within(5s)}; 393event ereport.io.fire.dmc.eq_not_en@hostbridge/pciexrc{within(5s)}; 394 395event error.io.fire.dmc.msg_not_en@hostbridge/pciexrc ; 396 397event defect.io.fire.pci.driver@pcibus/pcidev/pcifn; 398event defect.io.fire.pciex.driver@pciexbus/pciexdev/pciexfn; 399 400/* 401 * A faulty bridge or leaf device driver can cause 402 * - mmu invalid, out of range, protection etc. all except data parity 403 * - invalid pio r/w 404 * - msg received to unenabled queue 405 * - unsupported request 406 * 407 * Need to break into multiple prop to avoid the "line to long" runtime error 408 */ 409prop defect.io.fire.pciex.driver@pciexbus[b]/pciexdev[d]/pciexfn[f] (0) -> 410 /* msg not enable */ 411 ereport.io.fire.dmc.msi_not_en@hostbridge/pciexrc 412 { 413 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 414 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 415 }, 416 ereport.io.fire.dmc.cor_not_en@hostbridge/pciexrc 417 { 418 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 419 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 420 }, 421 ereport.io.fire.dmc.nonfatal_not_en@hostbridge/pciexrc 422 { 423 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 424 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 425 }, 426 ereport.io.fire.dmc.fatal_not_en@hostbridge/pciexrc 427 { 428 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 429 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 430 }, 431 ereport.io.fire.dmc.pmpme_not_en@hostbridge/pciexrc 432 { 433 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 434 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 435 }, 436 ereport.io.fire.dmc.pmeack_not_en@hostbridge/pciexrc 437 { 438 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 439 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 440 }, 441 ereport.io.fire.dmc.eq_not_en@hostbridge/pciexrc 442 { 443 IMU_MATCH_BDF(payloadprop("imu-scs"), b, d, f) && 444 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 445 }; 446 447 448prop defect.io.fire.pciex.driver@pciexbus[b]/pciexdev[d]/pciexfn[f] (0) -> 449 /* bad_op */ 450 ereport.io.fire.dmc.byp_err@hostbridge/pciexrc 451 { 452 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 453 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 454 }, 455 ereport.io.fire.dmc.byp_oor@hostbridge/pciexrc 456 { 457 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 458 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 459 }, 460 ereport.io.fire.dmc.trn_err@hostbridge/pciexrc 461 { 462 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 463 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 464 }, 465 ereport.io.fire.dmc.trn_oor@hostbridge/pciexrc 466 { 467 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 468 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 469 }, 470 ereport.io.fire.dmc.tte_inv@hostbridge/pciexrc 471 { 472 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 473 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 474 }, 475 ereport.io.fire.dmc.tte_prt@hostbridge/pciexrc 476 { 477 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 478 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 479 }, 480 ereport.io.fire.dmc.tbw_dme@hostbridge/pciexrc 481 { 482 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 483 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 484 }, 485 ereport.io.fire.dmc.tbw_ude@hostbridge/pciexrc 486 { 487 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 488 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 489 }, 490 ereport.io.fire.dmc.tbw_err@hostbridge/pciexrc 491 { 492 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 493 is_under(hostbridge/pciexrc, pciexbus[b]/pciexdev[d]/pciexfn[f]) 494 }; 495 496 497/* repeat the above prop for PCI devices */ 498prop defect.io.fire.pci.driver@pcibus[b]/pcidev[d]/pcifn[f] (0) -> 499 /* msg not enable */ 500 ereport.io.fire.dmc.msi_not_en@hostbridge/pciexrc 501 { 502 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 503 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 504 }, 505 ereport.io.fire.dmc.cor_not_en@hostbridge/pciexrc 506 { 507 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 508 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 509 }, 510 ereport.io.fire.dmc.nonfatal_not_en@hostbridge/pciexrc 511 { 512 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 513 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 514 }, 515 ereport.io.fire.dmc.fatal_not_en@hostbridge/pciexrc 516 { 517 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 518 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 519 }, 520 ereport.io.fire.dmc.pmpme_not_en@hostbridge/pciexrc 521 { 522 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 523 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 524 }, 525 ereport.io.fire.dmc.pmeack_not_en@hostbridge/pciexrc 526 { 527 IMU_MATCH_BDF(payloadprop("imu-rds"), b, d, f) && 528 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 529 }, 530 ereport.io.fire.dmc.eq_not_en@hostbridge/pciexrc 531 { 532 IMU_MATCH_BDF(payloadprop("imu-scs"), b, d, f) && 533 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 534 }; 535 536prop defect.io.fire.pci.driver@pcibus[b]/pcidev[d]/pcifn[f] (0) -> 537 /* bad_op */ 538 ereport.io.fire.dmc.byp_err@hostbridge/pciexrc 539 { 540 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 541 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 542 }, 543 ereport.io.fire.dmc.byp_oor@hostbridge/pciexrc 544 { 545 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 546 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 547 }, 548 ereport.io.fire.dmc.trn_err@hostbridge/pciexrc 549 { 550 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 551 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 552 }, 553 ereport.io.fire.dmc.trn_oor@hostbridge/pciexrc 554 { 555 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 556 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 557 }, 558 ereport.io.fire.dmc.tte_inv@hostbridge/pciexrc 559 { 560 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 561 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 562 }, 563 ereport.io.fire.dmc.tte_prt@hostbridge/pciexrc 564 { 565 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 566 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 567 }, 568 ereport.io.fire.dmc.tbw_dme@hostbridge/pciexrc 569 { 570 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 571 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 572 }, 573 ereport.io.fire.dmc.tbw_ude@hostbridge/pciexrc 574 { 575 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 576 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 577 }, 578 ereport.io.fire.dmc.tbw_err@hostbridge/pciexrc 579 { 580 MMU_MATCH_BDF(payloadprop("mmu-tfsr"), b, d, f) && 581 is_under(hostbridge/pciexrc, pcibus[b]/pcidev[d]/pcifn[f]) 582 }; 583 584 585event defect.io.fire.pciex.driver@hostbridge/pciexrc; 586 587/* 588 * A faulty Fire nexus driver can cause 589 * - Jbus unmapped error 590 * - mmu invalid, out of range, protection etc. all except data parity 591 * - invalid pio r/w 592 * - msg received to unenabled queue 593 */ 594 595prop defect.io.fire.pciex.driver@hostbridge/pciexrc (0)-> 596 error.io.fire.dmc.bad_op@hostbridge/pciexrc, 597 error.io.fire.dmc.msg_not_en@hostbridge/pciexrc; 598 599prop error.io.fire.dmc.bad_op@hostbridge/pciexrc (1)-> 600 ereport.io.fire.dmc.byp_err@hostbridge/pciexrc, 601 ereport.io.fire.dmc.byp_oor@hostbridge/pciexrc, 602 ereport.io.fire.dmc.trn_err@hostbridge/pciexrc, 603 ereport.io.fire.dmc.trn_oor@hostbridge/pciexrc, 604 ereport.io.fire.dmc.tte_inv@hostbridge/pciexrc, 605 ereport.io.fire.dmc.tte_prt@hostbridge/pciexrc, 606 ereport.io.fire.dmc.tbw_dme@hostbridge/pciexrc, 607 ereport.io.fire.dmc.tbw_ude@hostbridge/pciexrc, 608 ereport.io.fire.dmc.tbw_err@hostbridge/pciexrc; 609 610prop error.io.fire.dmc.msg_not_en@hostbridge/pciexrc (1)-> 611 ereport.io.fire.dmc.msi_not_en@hostbridge/pciexrc, 612 ereport.io.fire.dmc.cor_not_en@hostbridge/pciexrc, 613 ereport.io.fire.dmc.nonfatal_not_en@hostbridge/pciexrc, 614 ereport.io.fire.dmc.fatal_not_en@hostbridge/pciexrc, 615 ereport.io.fire.dmc.pmpme_not_en@hostbridge/pciexrc, 616 ereport.io.fire.dmc.pmeack_not_en@hostbridge/pciexrc, 617 ereport.io.fire.dmc.eq_not_en@hostbridge/pciexrc; 618 619 620engine serd.io.fire.link-events@hostbridge/pciexrc, 621 N=LINK_EVENTS_COUNT, T=LINK_EVENTS_TIME, method=persistent, 622 trip=ereport.io.fire.link-events-trip@hostbridge/pciexrc ; 623 624event upset.io.fire.link-events@hostbridge/pciexrc , 625 engine=serd.io.fire.link-events@hostbridge/pciexrc ; 626 627event error.io.fire.link-events@hostbridge/pciexrc ; 628 629event ereport.io.fire.pec.lin@hostbridge/pciexrc{within(5s)}; 630event ereport.io.fire.pec.lrs@hostbridge/pciexrc{within(5s)}; 631event ereport.io.fire.pec.ldn@hostbridge/pciexrc{within(5s)}; 632event ereport.io.fire.pec.lup@hostbridge/pciexrc{within(5s)}; 633 634prop upset.io.fire.link-events@hostbridge/pciexrc (0)-> 635 error.io.fire.link-events@hostbridge/pciexrc ; 636 637prop error.io.fire.link-events@hostbridge/pciexrc (1)-> 638 ereport.io.fire.pec.lin@hostbridge/pciexrc , 639 ereport.io.fire.pec.lrs@hostbridge/pciexrc , 640 ereport.io.fire.pec.ldn@hostbridge/pciexrc , 641 ereport.io.fire.pec.lup@hostbridge/pciexrc ; 642 643 644/* 645 * Fault at the adjacent node which is right below the Fire ASIC 646 */ 647fru hostbridge/pciexrc/pciexbus/pciexdev; 648asru hostbridge/pciexrc/pciexbus/pciexdev/pciexfn; 649event fault.io.fire.pciex.device@hostbridge/pciexrc/pciexbus/pciexdev/pciexfn, 650 FITrate=HB_FIT, FRU=hostbridge/pciexrc/pciexbus/pciexdev, 651 ASRU=hostbridge/pciexrc/pciexbus/pciexdev/pciexfn; 652 653/* 654 * Faulty adjacent node may cause 655 * too many link int/up/down/reset events 656 */ 657prop fault.io.fire.pciex.device@hostbridge/pciexrc/pciexbus/pciexdev/pciexfn 658(0) -> 659 error.io.fire.pec.adjacentnode@hostbridge/pciexrc 660 { 661 is_under(hostbridge/pciexrc, 662 hostbridge/pciexrc/pciexbus/pciexdev/pciexfn) 663 }; 664 665prop error.io.fire.pec.adjacentnode@hostbridge/pciexrc (0) -> 666 ereport.io.fire.link-events-trip@hostbridge/pciexrc; 667 668 669/* 670 * Secondary errors of the ereport that the device is at fault. 671 * Undiagnosed the secondary errors since the payload is invalid. 672 */ 673prop error.io.fire.pec.secondary@hostbridge/pciexrc (0) -> 674 ereport.io.fire.dmc.msi_par_err@hostbridge/pciexrc{ IS_SECONDARY }, 675 ereport.io.fire.dmc.msi_mal_err@hostbridge/pciexrc{ IS_SECONDARY }, 676 ereport.io.fire.dmc.eq_over@hostbridge/pciexrc{ IS_SECONDARY }; 677 678/* 679 * For logging purpose only. 680 * The Fire nexus driver generates equivalent pciex ereports for the 681 * common pciex rules to diagnose. 682 */ 683prop error.io.fire.pec.fabric_error@hostbridge/pciexrc(0) -> 684 ereport.io.fire.pec.cto@hostbridge/pciexrc, 685 ereport.io.fire.pec.ur@hostbridge/pciexrc, 686 ereport.io.fire.pec.uc@hostbridge/pciexrc, 687 ereport.io.fire.pec.cto@hostbridge/pciexrc, 688 ereport.io.fire.pec.rof@hostbridge/pciexrc, 689 ereport.io.fire.pec.mfp@hostbridge/pciexrc, 690 ereport.io.fire.pec.pois@hostbridge/pciexrc, 691 ereport.io.fire.pec.fcp@hostbridge/pciexrc, 692 ereport.io.fire.pec.dlp@hostbridge/pciexrc, 693 ereport.io.fire.pec.te@hostbridge/pciexrc, 694 ereport.io.fire.pec.re@hostbridge/pciexrc, 695 ereport.io.fire.pec.bdp@hostbridge/pciexrc, 696 ereport.io.fire.pec.btp@hostbridge/pciexrc, 697 ereport.io.fire.pec.rnr@hostbridge/pciexrc, 698 ereport.io.fire.pec.rto@hostbridge/pciexrc; 699 700 701/* add memory async ereports */ 702event ereport.io.fire.jbc.ce_asyn@hostbridge/pciexrc{within(5s)}; 703event ereport.io.fire.jbc.ue_asyn@hostbridge/pciexrc{within(5s)}; 704event ereport.io.fire.pec.mrc@hostbridge/pciexrc{within(5s)}; 705event ereport.io.fire.pec.wuc@hostbridge/pciexrc{within(5s)}; 706event ereport.io.fire.pec.ruc@hostbridge/pciexrc{within(5s)}; 707event ereport.io.fire.pec.crs@hostbridge/pciexrc{within(5s)}; 708 709event ereport.io.fire.nodiag@hostbridge; 710 711/* 712 * Upset used to hide ereports that are not currently diagnosed. 713 */ 714engine serd.io.fire.nodiag@hostbridge, 715 N=1000, T=1s, method=persistent, 716 trip=ereport.io.fire.nodiag@hostbridge; 717 718event upset.io.fire.nodiag@hostbridge, 719 engine=serd.io.fire.nodiag@hostbridge; 720 721prop upset.io.fire.nodiag@hostbridge (0)-> 722 ereport.io.fire.jbc.ue_asyn@hostbridge/pciexrc, 723 ereport.io.fire.jbc.ce_asyn@hostbridge/pciexrc, 724 ereport.io.fire.jbc.ill_acc@hostbridge/pciexrc, 725 ereport.io.fire.jbc.ill_acc_rd@hostbridge/pciexrc, 726 ereport.io.fire.dmc.ttc_cae@hostbridge/pciexrc, 727 ereport.io.fire.pec.mrc@hostbridge/pciexrc, 728 ereport.io.fire.pec.wuc@hostbridge/pciexrc, 729 ereport.io.fire.pec.ruc@hostbridge/pciexrc, 730 ereport.io.fire.pec.crs@hostbridge/pciexrc, 731 ereport.io.fire.nodiag@hostbridge, 732 error.io.fire.pec.secondary@hostbridge/pciexrc, 733 error.io.fire.pec.fabric_error@hostbridge/pciexrc, 734 ereport.io.fire.fabric@hostbridge/pciexrc 735 ; 736 737