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 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#pragma dictionary "PCIEX" 27 28#include <fm/topo_hc.h> 29 30/* 31 * FIT rates - assume leaf devices are somewhat less reliable than 32 * root complexes, switches and bridges 33 */ 34#define PCIEX_RC_FIT 500 35#define PCIEX_SW_FIT 500 36#define PCIEX_BDG_FIT 500 37#define PCIEX_DEV_FIT 1000 38#define PCIEX_RC_INV_FIT 500 39#define PCIEX_DEV_INV_FIT 1000 40#define PCIEX_RC_NR_FIT 500 41#define PCIEX_SW_NR_FIT 500 42#define PCIEX_BDG_NR_FIT 500 43#define PCIEX_DEV_NR_FIT 1000 44#define PCIEX_BUS_FIT 500 45#define PCIEX_BUS_NR_FIT 500 46 47/* 48 * SERD parameters. 49 * 50 * PCI Express correctable link errors are automatically handled by the 51 * hardware, so have relatively little impact and we can allow quite a 52 * high frequency. We will also be quite conservative about nonfatal internal 53 * errors reported by the driver. 54 * 55 * Nonfatal dpe errors (ptlp/ecrc errors) have to be recovered by the hardened 56 * driver which may cause intermittant performance/responsiveness problems, so 57 * we have tighter serd parameters for these. These are most likely errors in 58 * buffers/caches within devices and bridges, so use similar rates to cpu 59 * data cache parity errors. 60 */ 61#define CORRLINK_COUNT 6 62#define CORRLINK_TIME 2h 63#define BTLP_COUNT 6 64#define BTLP_TIME 2h 65#define BDLLP_COUNT 6 66#define BDLLP_TIME 2h 67#define RTO_COUNT 6 68#define RTO_TIME 2h 69#define RNR_COUNT 6 70#define RNR_TIME 2h 71#define RE_COUNT 6 72#define RE_TIME 2h 73#define NONFATAL_DPE_COUNT 3 74#define NONFATAL_DPE_TIME 168h 75 76/* 77 * if the source-id payload is valid, then check it matches 78 */ 79#define SOURCE_ID_MATCHES_BDF \ 80 (!payloadprop_defined("source-valid") || \ 81 payloadprop("source-valid") == 0 || \ 82 payloadprop("source-id") == ((b << 8) | (d << 3) | f)) 83 84#define SOURCE_ID_MATCHES_OWN_BDF \ 85 (payloadprop_defined("source-valid") && \ 86 payloadprop("source-valid") == 1 && \ 87 payloadprop("source-id") == (confprop(pciexrc, TOPO_PCI_BDF) + 0)) 88 89/* 90 * Other useful macros. These use the EXCAP property (PCI Express Capabilities 91 * register) to find the type for PCI Express devices, and the CLASS-CODE 92 * property (PCI Class Code register) for to find the type of PCI devices behind 93 * a PCI Express-PCI bridge - note that 60400 and 60401 are defined as PCI-PCI 94 * bridges, everything else is consider a PCI leaf device. 95 */ 96#define PCIEXFN pciexbus/pciexdev/pciexfn 97#define PCIEXFNHZ pciexbus<>/pciexdev<>/pciexfn<> 98#define PCIEXFN1 pciexbus[b]/pciexdev[d]/pciexfn[f] 99#define PCIFN pcibus/pcidev/pcifn 100#define PCIFNHZ pcibus<>/pcidev<>/pcifn<> 101#define PCIFN1 pcibus[b]/pcidev[d]/pcifn[f] 102#define IS_LF(f) (confprop(f, TOPO_PCI_EXCAP) == "pciexdev") 103#define IS_BG(f) (confprop(f, TOPO_PCI_EXCAP) == "pcibus") 104#define IS_SD(f) (confprop(f, TOPO_PCI_EXCAP) == "pciexswd") 105#define IS_SU(f) (confprop(f, TOPO_PCI_EXCAP) == "pciexswu") 106#define IS_PCI_LF(f) (confprop_defined(f, TOPO_PCI_CLASS) && \ 107 confprop(f, TOPO_PCI_CLASS) != "60400" && \ 108 confprop(f, TOPO_PCI_CLASS) != "60401") 109 110/* 111 * define faults 112 */ 113event fault.io.pciex.device-interr@PCIEXFN, FITrate=PCIEX_DEV_FIT; 114 115event fault.io.pciex.device-interr-deg@PCIEXFN, FITrate=PCIEX_DEV_FIT, retire=0; 116 117engine serd.io.pciex.flt-nf@PCIEXFN, N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME; 118event fault.io.pciex.device-interr-unaf@PCIEXFN, FITrate=PCIEX_DEV_FIT, 119 engine=serd.io.pciex.flt-nf@PCIEXFN; 120 121engine serd.io.device.nonfatal@PCIEXFN, N=CORRLINK_COUNT, T=CORRLINK_TIME; 122event fault.io.pciex.device-interr-corr@PCIEXFN, FITrate=PCIEX_DEV_FIT, 123 engine=serd.io.device.nonfatal@PCIEXFN; 124engine serd.io.device.nonfatal@PCIEXFN/PCIEXFN, 125 N=CORRLINK_COUNT, T=CORRLINK_TIME; 126event fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN, FITrate=PCIEX_DEV_FIT, 127 engine=serd.io.device.nonfatal@PCIEXFN/PCIEXFN; 128engine serd.io.device.nonfatal@pciexrc/PCIEXFN, 129 N=CORRLINK_COUNT, T=CORRLINK_TIME; 130event fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN, FITrate=PCIEX_DEV_FIT, 131 engine=serd.io.device.nonfatal@pciexrc/PCIEXFN; 132 133event fault.io.pciex.device-interr@pciexrc, FITrate=PCIEX_RC_FIT; 134 135event fault.io.pciex.device-interr-deg@pciexrc, FITrate=PCIEX_RC_FIT, retire=0; 136 137engine serd.io.pciex.flt-nf@pciexrc, N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME; 138event fault.io.pciex.device-interr-unaf@pciexrc, FITrate=PCIEX_RC_FIT, 139 engine=serd.io.pciex.flt-nf@pciexrc; 140 141engine serd.io.device.nonfatal@pciexrc, N=CORRLINK_COUNT, T=CORRLINK_TIME; 142event fault.io.pciex.device-interr-corr@pciexrc, FITrate=PCIEX_RC_FIT, 143 engine=serd.io.device.nonfatal@pciexrc; 144 145event fault.io.pciex.device-invreq@PCIEXFN, FITrate=PCIEX_DEV_INV_FIT; 146 147event fault.io.pciex.device-invreq@pciexrc, FITrate=PCIEX_RC_FIT; 148 149event fault.io.pciex.device-noresp@PCIEXFN, FITrate=PCIEX_DEV_NR_FIT; 150 151event fault.io.pciex.device-noresp@pciexrc, FITrate=PCIEX_RC_NR_FIT; 152 153event fault.io.pciex.bus-noresp@PCIEXFN, FITrate=PCIEX_BUS_NR_FIT; 154 155event fault.io.pciex.bus-linkerr@PCIEXFN, FITrate=PCIEX_BUS_FIT; 156 157engine serd.io.pciex.corrlink-bus@pciexrc/PCIEXFN, 158 N=CORRLINK_COUNT, T=CORRLINK_TIME; 159event fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN, FITrate=PCIEX_BUS_FIT, 160 engine=serd.io.pciex.corrlink-bus@pciexrc/PCIEXFN; 161engine serd.io.pciex.corrlink-bus@PCIEXFN/PCIEXFN, 162 N=CORRLINK_COUNT, T=CORRLINK_TIME; 163event fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN, FITrate=PCIEX_BUS_FIT, 164 engine=serd.io.pciex.corrlink-bus@PCIEXFN/PCIEXFN; 165 166/* 167 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 168 * Handling of leaf driver detected internal errors. Use serd engine if 169 * no service impact - otherwise fail immediately 170 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 171 */ 172event ereport.io.device.inval_state@PCIEXFN{within(5s)}; 173event ereport.io.device.no_response@PCIEXFN{within(5s)}; 174event ereport.io.device.stall@PCIEXFN{within(5s)}; 175event ereport.io.device.badint_limit@PCIEXFN{within(5s)}; 176event ereport.io.device.intern_corr@PCIEXFN{within(5s)}; 177event ereport.io.device.intern_uncorr@PCIEXFN{within(5s)}; 178event ereport.io.service.lost@PCIEXFN{within(5s)}; 179event ereport.io.service.degraded@PCIEXFN{within(5s)}; 180event ereport.io.service.unaffected@PCIEXFN{within(5s)}; 181event ereport.io.service.restored@PCIEXFN{within(30s)}; 182event ereport.io.service.lost@PCIFN{within(5s)}; 183event ereport.io.service.degraded@PCIFN{within(5s)}; 184event ereport.io.service.unaffected@PCIFN{within(5s)}; 185 186event error.io.pciex.noimpact-d@PCIEXFN; 187event error.io.pciex.noimpact-d@PCIEXFN/PCIEXFN; 188event error.io.pciex.noimpact-d@PCIEXFN/PCIFN; 189event error.io.pciex.noimpact-d@PCIFN/PCIFN; 190event error.io.pciex.noimpact-d@PCIFN; 191event error.io.pciex.degraded-d@PCIEXFN; 192event error.io.pciex.degraded-d@PCIEXFN/PCIEXFN; 193event error.io.pciex.degraded-d@PCIEXFN/PCIFN; 194event error.io.pciex.degraded-d@PCIFN/PCIFN; 195event error.io.pciex.degraded-d@PCIFN; 196event error.io.pciex.lost-d@PCIEXFN; 197event error.io.pciex.lost-d@PCIEXFN/PCIEXFN; 198event error.io.pciex.lost-d@PCIEXFN/PCIFN; 199event error.io.pciex.lost-d@PCIFN/PCIFN; 200event error.io.pciex.lost-d@PCIFN; 201event error.io.service.restored@PCIEXFN; 202event error.io.service.restored@PCIFN; 203event error.io.device.nf-device@PCIEXFN; 204event error.io.device.deg-device@PCIEXFN; 205event error.io.device.f-device@PCIEXFN; 206 207prop error.io.device.f-device@PCIEXFN (1)-> 208 ereport.io.device.inval_state@PCIEXFN, 209 ereport.io.device.no_response@PCIEXFN, 210 ereport.io.device.stall@PCIEXFN, 211 ereport.io.device.badint_limit@PCIEXFN, 212 ereport.io.device.intern_corr@PCIEXFN, 213 ereport.io.device.intern_uncorr@PCIEXFN; 214 215prop error.io.device.f-device@PCIEXFN (0)-> 216 error.io.pciex.lost-d@PCIEXFN; 217 218prop error.io.device.deg-device@PCIEXFN (1)-> 219 ereport.io.device.inval_state@PCIEXFN, 220 ereport.io.device.no_response@PCIEXFN, 221 ereport.io.device.stall@PCIEXFN, 222 ereport.io.device.badint_limit@PCIEXFN, 223 ereport.io.device.intern_corr@PCIEXFN, 224 ereport.io.device.intern_uncorr@PCIEXFN; 225 226prop error.io.device.deg-device@PCIEXFN (1)-> 227 error.io.pciex.degraded-d@PCIEXFN; 228 229prop error.io.device.nf-device@PCIEXFN (1)-> 230 ereport.io.device.inval_state@PCIEXFN, 231 ereport.io.device.no_response@PCIEXFN, 232 ereport.io.device.stall@PCIEXFN, 233 ereport.io.device.badint_limit@PCIEXFN, 234 ereport.io.device.intern_corr@PCIEXFN, 235 ereport.io.device.intern_uncorr@PCIEXFN; 236 237prop error.io.device.nf-device@PCIEXFN (1)-> 238 error.io.pciex.noimpact-d@PCIEXFN; 239 240/* 241 * handling of service impact ereports. 242 */ 243prop error.io.pciex.lost-d@PCIEXFN (1)-> 244 ereport.io.service.lost@PCIEXFN, 245 error.io.pciex.lost-d@PCIEXFN/PCIEXFNHZ, 246 error.io.pciex.lost-d@PCIEXFN/PCIFNHZ; 247 248prop error.io.pciex.lost-d@PCIEXFN (0)-> 249 ereport.io.service.unaffected@PCIEXFN, 250 ereport.io.service.degraded@PCIEXFN; 251 252prop error.io.pciex.lost-d@PCIFN (1)-> 253 ereport.io.service.lost@PCIFN, 254 error.io.pciex.lost-d@PCIFN/PCIFNHZ; 255 256prop error.io.pciex.lost-d@PCIFN (0)-> 257 ereport.io.service.unaffected@PCIFN, 258 ereport.io.service.degraded@PCIFN; 259 260prop error.io.pciex.degraded-d@PCIEXFN (1)-> 261 ereport.io.service.degraded@PCIEXFN, 262 error.io.pciex.degraded-d@PCIEXFN/PCIEXFNHZ, 263 error.io.pciex.degraded-d@PCIEXFN/PCIFNHZ; 264 265prop error.io.pciex.degraded-d@PCIEXFN (0)-> 266 ereport.io.service.unaffected@PCIEXFN; 267 268prop error.io.pciex.degraded-d@PCIFN (1)-> 269 ereport.io.service.degraded@PCIFN, 270 error.io.pciex.degraded-d@PCIFN/PCIFNHZ; 271 272prop error.io.pciex.degraded-d@PCIFN (0)-> 273 ereport.io.service.unaffected@PCIFN; 274 275prop error.io.pciex.noimpact-d@PCIEXFN (1)-> 276 ereport.io.service.unaffected@PCIEXFN, 277 error.io.service.restored@PCIEXFN, 278 error.io.pciex.noimpact-d@PCIEXFN/PCIEXFNHZ, 279 error.io.pciex.noimpact-d@PCIEXFN/PCIFNHZ; 280 281prop error.io.pciex.noimpact-d@PCIFN (1)-> 282 ereport.io.service.unaffected@PCIFN, 283 error.io.service.restored@PCIFN, 284 error.io.pciex.noimpact-d@PCIFN/PCIFNHZ; 285 286prop error.io.service.restored@PCIEXFN (1)-> 287 ereport.io.service.lost@PCIEXFN, 288 ereport.io.service.degraded@PCIEXFN; 289 290prop error.io.service.restored@PCIEXFN (1)-> 291 ereport.io.service.restored@PCIEXFN; 292 293/* 294 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 295 * A faulty PCI Express hostbridge (root complex) may cause: 296 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 297 * - nr-d: the device not to respond to a valid upstream request 298 * - ca-d: the device to completer abort a valid upstream request 299 * - mtlp-d: a malformed tlp to be transmitted downstream 300 * - badreq-d: a bad downstream request - not CRC error (may cause 301 * completer to respond with ur or ca) 302 * - ecrcreq-d: TLP with end-to-end CRC error transmitted downstream 303 * - ecrccomp-d: TLP with end-to-end CRC error transmitted downstream 304 * - poisreq-d: poisoned request transmitted downstream 305 * - poiscomp-d: poisoned completion transmitted downstream 306 * - corrlink: correctable link or physical level error 307 * - fatlink: fatal link or physical level error 308 */ 309event error.io.pciex.nr-d@pciexrc/PCIEXFN; 310event error.io.pciex.ca-d@pciexrc/PCIEXFN; 311event error.io.pciex.mtlp-d@pciexrc/PCIEXFN; 312event error.io.pciex.fatlink@pciexrc/PCIEXFN; 313event error.io.pciex.badreq-d@pciexrc/PCIEXFN; 314event error.io.pciex.nf-poisecrc-d@pciexrc/PCIEXFN; 315event error.io.pciex.f-poisecrc-d@pciexrc/PCIEXFN; 316event error.io.pciex.deg-poisecrc-d@pciexrc/PCIEXFN; 317event ereport.io.pciex.dl.btlp@pciexrc{within(5s)}; 318event ereport.io.pciex.dl.bdllp@pciexrc{within(5s)}; 319event ereport.io.pciex.dl.rto@pciexrc{within(5s)}; 320event ereport.io.pciex.dl.rnr@pciexrc{within(5s)}; 321event ereport.io.pciex.pl.re@pciexrc{within(5s)}; 322event ereport.io.pciex.dl.btlp@pciexrc/PCIEXFN{within(5s)}; 323event ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFN{within(5s)}; 324event ereport.io.pciex.dl.rto@pciexrc/PCIEXFN{within(5s)}; 325event ereport.io.pciex.dl.rnr@pciexrc/PCIEXFN{within(5s)}; 326event ereport.io.pciex.pl.re@pciexrc/PCIEXFN{within(5s)}; 327 328prop fault.io.pciex.device-noresp@pciexrc (1)-> 329 error.io.pciex.nr-d@pciexrc/PCIEXFNHZ; 330 331prop fault.io.pciex.device-invreq@pciexrc (1)-> 332 error.io.pciex.badreq-d@pciexrc/PCIEXFNHZ; 333 334prop fault.io.pciex.device-interr-corr@pciexrc { 335 payloadprop_defined("detector") && setserdsuffix("_btlp") && 336 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 337 ereport.io.pciex.dl.btlp@pciexrc, 338 ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ; 339 340prop fault.io.pciex.device-interr-corr@pciexrc { 341 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 342 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 343 ereport.io.pciex.dl.bdllp@pciexrc, 344 ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ; 345 346prop fault.io.pciex.device-interr-corr@pciexrc { 347 payloadprop_defined("detector") && setserdsuffix("_rto") && 348 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 349 ereport.io.pciex.dl.rto@pciexrc, 350 ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ; 351 352prop fault.io.pciex.device-interr-corr@pciexrc { 353 payloadprop_defined("detector") && setserdsuffix("_rnr") && 354 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 355 ereport.io.pciex.dl.rnr@pciexrc, 356 ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ; 357 358prop fault.io.pciex.device-interr-corr@pciexrc { 359 payloadprop_defined("detector") && setserdsuffix("_re") && 360 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 361 ereport.io.pciex.pl.re@pciexrc, 362 ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ; 363 364prop fault.io.pciex.device-interr-unaf@pciexrc (1)-> 365 error.io.pciex.nf-poisecrc-d@pciexrc/PCIEXFNHZ; 366 367prop fault.io.pciex.device-interr-deg@pciexrc (1)-> 368 error.io.pciex.deg-poisecrc-d@pciexrc/PCIEXFNHZ; 369 370prop fault.io.pciex.device-interr@pciexrc (1)-> 371 error.io.pciex.f-poisecrc-d@pciexrc/PCIEXFNHZ, 372 error.io.pciex.ca-d@pciexrc/PCIEXFNHZ, 373 error.io.pciex.mtlp-d@pciexrc/PCIEXFNHZ, 374 error.io.pciex.fatlink@pciexrc/PCIEXFNHZ; 375 376/* 377 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 378 * A faulty PCI Express leaf device or upstream switch port may cause: 379 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 380 * - flt-nr-u: the device not to respond to a valid downstream request 381 * - flt-ca-u: the device to completer abort a valid downstream request 382 * - flt-badreq-u: a bad upstream request - not CRC error (may cause 383 * completer to respond with ur or ca) - leaf only 384 * - flt-mtlp-u: a malformed tlp transmitted upstream - leaf only 385 * - flt-ecrcreq-u: request with end-to-end CRC error transmitted upstream 386 * - flt-ecrccomp-u: compl with end-to-end CRC error transmitted upstream 387 * - flt-poisreq-u: poisoned request transmitted upstream 388 * - flt-poiscomp-u: poisoned completion transmitted upstream 389 * - device: internal error reported by leaf device 390 * - corrlink: correctable link or physical level error 391 * - fatlink: fatal link or physical level error 392 */ 393 394event error.io.pciex.flt-nr-u@PCIEXFN; 395event error.io.pciex.flt-ca-u@PCIEXFN; 396event error.io.pciex.flt-mtlp-u@PCIEXFN; 397event error.io.pciex.fatlink@PCIEXFN; 398event error.io.pciex.flt-badreq-u@PCIEXFN; 399event error.io.pciex.flt-nf-poisecrc-u@PCIEXFN; 400event error.io.pciex.flt-f-poisecrc-u@PCIEXFN; 401event error.io.pciex.flt-deg-poisecrc-u@PCIEXFN; 402event ereport.io.pciex.dl.btlp@PCIEXFN{within(5s)}; 403event ereport.io.pciex.dl.bdllp@PCIEXFN{within(5s)}; 404event ereport.io.pciex.dl.rto@PCIEXFN{within(5s)}; 405event ereport.io.pciex.dl.rnr@PCIEXFN{within(5s)}; 406event ereport.io.pciex.pl.re@PCIEXFN{within(5s)}; 407event ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFN{within(5s)}; 408event ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFN{within(5s)}; 409event ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFN{within(5s)}; 410event ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFN{within(5s)}; 411event ereport.io.pciex.pl.re@PCIEXFN/PCIEXFN{within(5s)}; 412 413prop fault.io.pciex.device-noresp@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 414 error.io.pciex.flt-nr-u@PCIEXFN; 415 416prop fault.io.pciex.device-noresp@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 417 error.io.pciex.flt-nr-u@PCIEXFN; 418 419prop fault.io.pciex.device-invreq@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 420 error.io.pciex.flt-badreq-u@PCIEXFN; 421 422prop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN { 423 payloadprop_defined("detector") && setserdsuffix("_btlp") && 424 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 425 ereport.io.pciex.dl.btlp@pciexrc, 426 ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ; 427 428prop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN { 429 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 430 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 431 ereport.io.pciex.dl.bdllp@pciexrc, 432 ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ; 433 434prop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN { 435 payloadprop_defined("detector") && setserdsuffix("_rto") && 436 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 437 ereport.io.pciex.dl.rto@pciexrc, 438 ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ; 439 440prop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN { 441 payloadprop_defined("detector") && setserdsuffix("_rnr") && 442 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 443 ereport.io.pciex.dl.rnr@pciexrc, 444 ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ; 445 446prop fault.io.pciex.device-interr-corr@pciexrc/PCIEXFN { 447 payloadprop_defined("detector") && setserdsuffix("_re") && 448 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 449 ereport.io.pciex.pl.re@pciexrc, 450 ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ; 451 452prop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN { 453 !IS_SD(PCIEXFN/PCIEXFN) && 454 payloadprop_defined("detector") && setserdsuffix("_btlp") && 455 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 456 ereport.io.pciex.dl.btlp@PCIEXFN, 457 ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ; 458 459prop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN { 460 !IS_SD(PCIEXFN/PCIEXFN) && 461 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 462 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 463 ereport.io.pciex.dl.bdllp@PCIEXFN, 464 ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ; 465 466prop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN { 467 !IS_SD(PCIEXFN/PCIEXFN) && 468 payloadprop_defined("detector") && setserdsuffix("_rto") && 469 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 470 ereport.io.pciex.dl.rto@PCIEXFN, 471 ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ; 472 473prop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN { 474 !IS_SD(PCIEXFN/PCIEXFN) && 475 payloadprop_defined("detector") && setserdsuffix("_rnr") && 476 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 477 ereport.io.pciex.dl.rnr@PCIEXFN, 478 ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ; 479 480prop fault.io.pciex.device-interr-corr@PCIEXFN/PCIEXFN { 481 !IS_SD(PCIEXFN/PCIEXFN) && 482 payloadprop_defined("detector") && setserdsuffix("_re") && 483 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 484 ereport.io.pciex.pl.re@PCIEXFN, 485 ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ; 486 487prop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 488 error.io.pciex.flt-nf-poisecrc-u@PCIEXFN; 489 490prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 491 error.io.device.nf-device@PCIEXFN; 492 493prop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 494 error.io.pciex.flt-nf-poisecrc-u@PCIEXFN; 495 496prop fault.io.pciex.device-interr-deg@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 497 error.io.pciex.flt-deg-poisecrc-u@PCIEXFN; 498 499prop fault.io.pciex.device-interr@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 500 error.io.pciex.flt-f-poisecrc-u@PCIEXFN, 501 error.io.pciex.flt-ca-u@PCIEXFN, 502 error.io.pciex.fatlink@PCIEXFN; 503 504prop fault.io.pciex.device-interr-deg@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 505 error.io.pciex.flt-deg-poisecrc-u@PCIEXFN, 506 error.io.device.deg-device@PCIEXFN; 507 508prop fault.io.pciex.device-interr@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 509 error.io.pciex.flt-f-poisecrc-u@PCIEXFN, 510 error.io.device.f-device@PCIEXFN, 511 error.io.pciex.flt-ca-u@PCIEXFN, 512 error.io.pciex.flt-mtlp-u@PCIEXFN, 513 error.io.pciex.fatlink@PCIEXFN; 514 515/* 516 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 517 * A faulty PCI Express downstream switch port may cause 518 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 519 * - nr-d: the device not to respond to an upstream request 520 * - ca-d: the device to completer abort an upstream request 521 * - ecrcreq-d: TLP with end-to-end CRC error transmitted upstream 522 * - ecrccomp-d: TLP with end-to-end CRC error transmitted upstream 523 * - poisreq-d: poisoned request transmitted upstream 524 * - poiscomp-d: poisoned completion transmitted upstream 525 * - corrlink: correctable link or physical level error 526 * - fatlink: fatal link or physical level error 527 */ 528 529event error.io.pciex.nr-d@PCIEXFN/PCIEXFN; 530event error.io.pciex.ca-d@PCIEXFN/PCIEXFN; 531event error.io.pciex.fatlink@PCIEXFN/PCIEXFN; 532event error.io.pciex.nf-poisecrc-d@PCIEXFN/PCIEXFN; 533event error.io.pciex.f-poisecrc-d@PCIEXFN/PCIEXFN; 534event error.io.pciex.deg-poisecrc-d@PCIEXFN/PCIEXFN; 535 536prop fault.io.pciex.device-noresp@PCIEXFN { IS_SD(PCIEXFN) } (1)-> 537 error.io.pciex.nr-d@PCIEXFN/PCIEXFNHZ; 538 539prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) && 540 payloadprop_defined("detector") && setserdsuffix("_btlp") && 541 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 542 ereport.io.pciex.dl.btlp@PCIEXFN, 543 ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ; 544 545prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) && 546 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 547 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 548 ereport.io.pciex.dl.bdllp@PCIEXFN, 549 ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ; 550 551prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) && 552 payloadprop_defined("detector") && setserdsuffix("_rto") && 553 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 554 ereport.io.pciex.dl.rto@PCIEXFN, 555 ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ; 556 557prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) && 558 payloadprop_defined("detector") && setserdsuffix("_rnr") && 559 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 560 ereport.io.pciex.dl.rnr@PCIEXFN, 561 ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ; 562 563prop fault.io.pciex.device-interr-corr@PCIEXFN { IS_SD(PCIEXFN) && 564 payloadprop_defined("detector") && setserdsuffix("_re") && 565 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 566 ereport.io.pciex.pl.re@PCIEXFN, 567 ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ; 568 569prop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_SD(PCIEXFN) } (1)-> 570 error.io.pciex.nf-poisecrc-d@PCIEXFN/PCIEXFNHZ; 571 572prop fault.io.pciex.device-interr-deg@PCIEXFN { IS_SD(PCIEXFN) } (1)-> 573 error.io.pciex.deg-poisecrc-d@PCIEXFN/PCIEXFNHZ; 574 575prop fault.io.pciex.device-interr@PCIEXFN { IS_SD(PCIEXFN) } (1)-> 576 error.io.pciex.ca-d@PCIEXFN/PCIEXFNHZ, 577 error.io.pciex.f-poisecrc-d@PCIEXFN/PCIEXFNHZ, 578 error.io.pciex.fatlink@PCIEXFN/PCIEXFNHZ; 579 580/* 581 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 582 * A faulty PCIEX bus may cause: 583 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 584 * - flt-nr-u: a device to not respond because the link is down 585 * - nr-d: a device to not respond because the link is down 586 * - corrlink: correctable link or physical level error 587 * - fatlink: fatal link or physical level error 588 */ 589 590event error.io.pciex.nr-d@PCIEXFN; 591 592prop fault.io.pciex.bus-noresp@PCIEXFN { !IS_SD(PCIEXFN) } (0)-> 593 error.io.pciex.flt-nr-u@PCIEXFN, 594 error.io.pciex.nr-d@PCIEXFN; 595 596prop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN { 597 !IS_SD(PCIEXFN/PCIEXFN) && 598 payloadprop_defined("detector") && setserdsuffix("_btlp") && 599 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 600 ereport.io.pciex.dl.btlp@PCIEXFN, 601 ereport.io.pciex.dl.btlp@PCIEXFN/PCIEXFNHZ; 602 603prop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN { 604 !IS_SD(PCIEXFN/PCIEXFN) && 605 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 606 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 607 ereport.io.pciex.dl.bdllp@PCIEXFN, 608 ereport.io.pciex.dl.bdllp@PCIEXFN/PCIEXFNHZ; 609 610prop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN { 611 !IS_SD(PCIEXFN/PCIEXFN) && 612 payloadprop_defined("detector") && setserdsuffix("_rto") && 613 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 614 ereport.io.pciex.dl.rto@PCIEXFN, 615 ereport.io.pciex.dl.rto@PCIEXFN/PCIEXFNHZ; 616 617prop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN { 618 !IS_SD(PCIEXFN/PCIEXFN) && 619 payloadprop_defined("detector") && setserdsuffix("_rnr") && 620 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 621 ereport.io.pciex.dl.rnr@PCIEXFN, 622 ereport.io.pciex.dl.rnr@PCIEXFN/PCIEXFNHZ; 623 624prop fault.io.pciex.bus-linkerr-corr@PCIEXFN/PCIEXFN { 625 !IS_SD(PCIEXFN/PCIEXFN) && 626 payloadprop_defined("detector") && setserdsuffix("_re") && 627 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 628 ereport.io.pciex.pl.re@PCIEXFN, 629 ereport.io.pciex.pl.re@PCIEXFN/PCIEXFNHZ; 630 631prop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN { 632 payloadprop_defined("detector") && setserdsuffix("_btlp") && 633 setserdn(BTLP_COUNT) && setserdt(BTLP_TIME) } (0)-> 634 ereport.io.pciex.dl.btlp@pciexrc, 635 ereport.io.pciex.dl.btlp@pciexrc/PCIEXFNHZ; 636 637prop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN { 638 payloadprop_defined("detector") && setserdsuffix("_bdllp") && 639 setserdn(BDLLP_COUNT) && setserdt(BDLLP_TIME) } (0)-> 640 ereport.io.pciex.dl.bdllp@pciexrc, 641 ereport.io.pciex.dl.bdllp@pciexrc/PCIEXFNHZ; 642 643prop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN { 644 payloadprop_defined("detector") && setserdsuffix("_rto") && 645 setserdn(RTO_COUNT) && setserdt(RTO_TIME) } (0)-> 646 ereport.io.pciex.dl.rto@pciexrc, 647 ereport.io.pciex.dl.rto@pciexrc/PCIEXFNHZ; 648 649prop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN { 650 payloadprop_defined("detector") && setserdsuffix("_rnr") && 651 setserdn(RNR_COUNT) && setserdt(RNR_TIME) } (0)-> 652 ereport.io.pciex.dl.rnr@pciexrc, 653 ereport.io.pciex.dl.rnr@pciexrc/PCIEXFNHZ; 654 655prop fault.io.pciex.bus-linkerr-corr@pciexrc/PCIEXFN { 656 payloadprop_defined("detector") && setserdsuffix("_re") && 657 setserdn(RE_COUNT) && setserdt(RE_TIME) } (0)-> 658 ereport.io.pciex.pl.re@pciexrc, 659 ereport.io.pciex.pl.re@pciexrc/PCIEXFNHZ; 660 661prop fault.io.pciex.bus-linkerr@PCIEXFN { !IS_SD(PCIEXFN) } (0)-> 662 error.io.pciex.fatlink@PCIEXFN; 663 664/* 665 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 666 * A faulty pciex-pci bridge may cause 667 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 668 * The following errors to propagate onto the PCI Express fabric 669 * - flt-nr-u: the device not to respond to a valid downstream request 670 * - flt-ca-u: the device to completer abort a valid downstream request 671 * - flt-ecrcreq-u: request with end-to-end CRC error transmitted upstream 672 * - flt-ecrccomp-u: compl with end-to-end CRC error transmitted upstream 673 * - flt-poisreq-u: poisoned request transmitted upstream 674 * - flt-poiscomp-u: poisoned completion transmitted upstream 675 * - corrlink: correctable link or physical level error upstream 676 * - fatlink: fatal link or physical level error upstream 677 * - sec-interr: internal error on pci express to pci bridge 678 * 679 * And the following errors to propagate onto the secondary pci or pci/x bus 680 * (these will be handled by code in the pci.esc file). 681 * - nr-pw-d: the device not to respond to a valid upstream request 682 * - nr-drw-d: the device not to respond to a valid upstream request 683 * - retry-to-d: failure to retry an downstream delayed request 684 * - ta-pw-d: the device responds with a ta to a valid upstream 685 * request 686 * - ta-drw-d: the device responds with a ta to a valid upstream 687 * request 688 * - ape-d: address/parity to get corrupted during downstream transmission. 689 * - dpe-d: data/parity to get corrupted during downstream transmission. 690 * - scpe-d: split completion to get corrupted during downstream transmission 691 */ 692 693event error.io.pci.ape-d@PCIEXFN/PCIFN; 694event error.io.pci.f-dpe-d@PCIEXFN/PCIFN; 695event error.io.pci.deg-dpe-d@PCIEXFN/PCIFN; 696event error.io.pci.nf-dpe-d@PCIEXFN/PCIFN; 697event error.io.pci.retry-to-d@PCIEXFN/PCIFN; 698event error.io.pci.nr-pw-d@PCIEXFN/PCIFN; 699event error.io.pci.nr-drw-d@PCIEXFN/PCIFN; 700event error.io.pci.ta-pw-d@PCIEXFN/PCIFN; 701event error.io.pci.ta-drw-d@PCIEXFN/PCIFN; 702event error.io.pcix.scpe-d@PCIEXFN/PCIFN; 703event error.io.pciex.sec-interr@PCIEXFN; 704event ereport.io.pci.sec-sta@PCIEXFN{within(5s)}; 705 706prop fault.io.pciex.device-noresp@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 707 error.io.pciex.flt-nr-u@PCIEXFN, 708 error.io.pci.retry-to-d@PCIEXFN/PCIFNHZ, 709 error.io.pci.nr-pw-d@PCIEXFN/PCIFNHZ, 710 error.io.pci.nr-drw-d@PCIEXFN/PCIFNHZ; 711 712prop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 713 error.io.pciex.flt-nf-poisecrc-u@PCIEXFN, 714 error.io.pci.nf-dpe-d@PCIEXFN/PCIFNHZ; 715 716prop fault.io.pciex.device-interr-deg@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 717 error.io.pciex.flt-deg-poisecrc-u@PCIEXFN, 718 error.io.pci.deg-dpe-d@PCIEXFN/PCIFNHZ; 719 720prop fault.io.pciex.device-interr@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 721 error.io.pciex.flt-f-poisecrc-u@PCIEXFN, 722 error.io.pciex.flt-ca-u@PCIEXFN, 723 error.io.pciex.flt-mtlp-u@PCIEXFN, 724 error.io.pciex.sec-interr@PCIEXFN, 725 error.io.pciex.fatlink@PCIEXFN, 726 error.io.pci.ta-pw-d@PCIEXFN/PCIFNHZ, 727 error.io.pci.ta-drw-d@PCIEXFN/PCIFNHZ, 728 error.io.pci.ape-d@PCIEXFN/PCIFNHZ, 729 error.io.pcix.scpe-d@PCIEXFN/PCIFNHZ, 730 error.io.pci.f-dpe-d@PCIEXFN/PCIFNHZ; 731 732prop fault.io.pciex.device-interr-unaf@PCIEXFN { IS_BG(PCIEXFN) } (0)-> 733 ereport.io.pci.sec-sta@PCIEXFN; 734 735prop fault.io.pciex.device-interr@PCIEXFN { IS_BG(PCIEXFN) } (0)-> 736 ereport.io.pci.sec-sta@PCIEXFN; 737 738/* 739 * the following rules for ptlp and ecrc faults are split into fatal and 740 * nonfatal, depending on the service impact reported by the leaf driver 741 */ 742event error.io.pciex.nf-poisecrc-d@PCIEXFN; 743event error.io.pciex.deg-poisecrc-d@PCIEXFN; 744event error.io.pciex.f-poisecrc-d@PCIEXFN; 745event error.io.pciex.ecrcreq-d@PCIEXFN; 746event error.io.pciex.ecrccomp-d@PCIEXFN; 747event error.io.pciex.poisreq-d@PCIEXFN; 748event error.io.pciex.poiscomp-d@PCIEXFN; 749event error.io.pciex.flt-poisreq-u@PCIEXFN; 750event error.io.pciex.flt-poiscomp-u@PCIEXFN; 751event error.io.pciex.flt-ecrcreq-u@PCIEXFN; 752event error.io.pciex.flt-ecrccomp-u@PCIEXFN; 753 754prop error.io.pciex.nf-poisecrc-d@PCIEXFN (1)-> 755 error.io.pciex.ecrcreq-d@PCIEXFN, 756 error.io.pciex.ecrccomp-d@PCIEXFN, 757 error.io.pciex.poisreq-d@PCIEXFN, 758 error.io.pciex.poiscomp-d@PCIEXFN; 759 760prop error.io.pciex.nf-poisecrc-d@PCIEXFN (1)-> 761 error.io.pciex.noimpact-d@PCIEXFN; 762 763prop error.io.pciex.f-poisecrc-d@PCIEXFN (1)-> 764 error.io.pciex.ecrcreq-d@PCIEXFN, 765 error.io.pciex.ecrccomp-d@PCIEXFN, 766 error.io.pciex.poisreq-d@PCIEXFN, 767 error.io.pciex.poiscomp-d@PCIEXFN; 768 769prop error.io.pciex.f-poisecrc-d@PCIEXFN (0)-> 770 error.io.pciex.lost-d@PCIEXFN; 771 772prop error.io.pciex.deg-poisecrc-d@PCIEXFN (1)-> 773 error.io.pciex.ecrcreq-d@PCIEXFN, 774 error.io.pciex.ecrccomp-d@PCIEXFN, 775 error.io.pciex.poisreq-d@PCIEXFN, 776 error.io.pciex.poiscomp-d@PCIEXFN; 777 778prop error.io.pciex.deg-poisecrc-d@PCIEXFN (1)-> 779 error.io.pciex.degraded-d@PCIEXFN; 780 781prop error.io.pciex.flt-nf-poisecrc-u@PCIEXFN (1)-> 782 error.io.pciex.flt-ecrcreq-u@PCIEXFN, 783 error.io.pciex.flt-ecrccomp-u@PCIEXFN, 784 error.io.pciex.flt-poisreq-u@PCIEXFN, 785 error.io.pciex.flt-poiscomp-u@PCIEXFN; 786 787prop error.io.pciex.flt-nf-poisecrc-u@PCIEXFN (1)-> 788 error.io.pciex.noimpact-d@PCIEXFN; 789 790prop error.io.pciex.flt-deg-poisecrc-u@PCIEXFN (1)-> 791 error.io.pciex.flt-ecrcreq-u@PCIEXFN, 792 error.io.pciex.flt-ecrccomp-u@PCIEXFN, 793 error.io.pciex.flt-poisreq-u@PCIEXFN, 794 error.io.pciex.flt-poiscomp-u@PCIEXFN; 795 796prop error.io.pciex.flt-deg-poisecrc-u@PCIEXFN (1)-> 797 error.io.pciex.degraded-d@PCIEXFN; 798 799prop error.io.pciex.flt-f-poisecrc-u@PCIEXFN (1)-> 800 error.io.pciex.flt-ecrcreq-u@PCIEXFN, 801 error.io.pciex.flt-ecrccomp-u@PCIEXFN, 802 error.io.pciex.flt-poisreq-u@PCIEXFN, 803 error.io.pciex.flt-poiscomp-u@PCIEXFN; 804 805prop error.io.pciex.flt-f-poisecrc-u@PCIEXFN (0)-> 806 error.io.pciex.lost-d@PCIEXFN; 807 808/* 809 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 810 * declarations 811 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 812 */ 813event error.io.pciex.fatal@PCIEXFN; 814event error.io.pciex.nonfatal@PCIEXFN; 815event error.io.pciex.flt-ur-u@PCIEXFN; 816event error.io.pciex.mtlp-d@PCIEXFN; 817event error.io.pciex.sw-mtlp-d@PCIEXFN; 818event error.io.pciex.mtlp-d@PCIEXFN/PCIEXFN; 819event error.io.pciex.ca-d@PCIEXFN; 820event error.io.pciex.ca-fwd-d@PCIEXFN; 821event error.io.pciex.ca-fwd-d@PCIEXFN/PCIEXFN; 822event error.io.pciex.poisreq-fwd-d@PCIEXFN; 823event error.io.pciex.poisreq-fwd-d@pciexrc/PCIEXFN; 824event error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN; 825event error.io.pciex.poiscomp-fwd-d@PCIEXFN; 826event error.io.pciex.poiscomp-fwd-d@PCIEXFN/PCIEXFN; 827event error.io.pciex.ecrcreq-fwd-d@PCIEXFN/PCIEXFN; 828event error.io.pciex.ecrccomp-fwd-d@PCIEXFN/PCIEXFN; 829event error.io.pciex.ecrcreq-fwd-d@PCIEXFN; 830event error.io.pciex.ecrccomp-fwd-d@PCIEXFN; 831event error.io.pciex.source-ecrcreq-u@PCIEXFN; 832event error.io.pciex.source-ecrccomp-u@PCIEXFN; 833event error.io.pciex.source-poiscomp-u@PCIEXFN; 834event error.io.pciex.source-poisreq-u@PCIEXFN; 835event error.io.pciex.badreq-d@PCIEXFN; 836event error.io.pciex.badreq-d@PCIEXFN/PCIEXFN; 837event error.io.pci.badreq-pw-d@PCIEXFN/PCIFN; 838event error.io.pci.badreq-drw-d@PCIEXFN/PCIFN; 839event error.io.pci.target-ma-d@PCIEXFN; 840event error.io.pci.target-rta-d@PCIEXFN; 841event error.io.pci.dpdata-pw-d@PCIEXFN/PCIFN; 842event error.io.pci.dpdata-dw-d@PCIEXFN/PCIFN; 843event error.io.pci.dpdata-dr-d@PCIEXFN/PCIFN; 844event error.io.pciex.ca-u@PCIEXFN; 845event error.io.pciex.ca-u@PCIEXFN/PCIEXFN; 846event error.io.pciex.ca-u@pciexrc/PCIEXFN; 847event error.io.pciex.ur-u@PCIEXFN; 848event error.io.pciex.ur-u@PCIEXFN/PCIEXFN; 849event error.io.pciex.ur-u@pciexrc/PCIEXFN; 850event error.io.pciex.nr-u@PCIEXFN; 851event error.io.pciex.nr-u@PCIEXFN/PCIEXFN; 852event error.io.pciex.nr-u@pciexrc/PCIEXFN; 853event error.io.pciex.mtlp-u@PCIEXFN; 854event error.io.pciex.mtlp-u@PCIEXFN/PCIEXFN; 855event error.io.pciex.mtlp-u@pciexrc/PCIEXFN; 856event error.io.pciex.badreq-u@PCIEXFN; 857event error.io.pciex.badreq-u@PCIEXFN/PCIEXFN; 858event error.io.pciex.badreq-u@pciexrc/PCIEXFN; 859event error.io.pciex.poisreq-u@PCIEXFN; 860event error.io.pciex.poisreq-u@PCIEXFN/PCIEXFN; 861event error.io.pciex.poisreq-u@pciexrc/PCIEXFN; 862event error.io.pciex.poiscomp-u@PCIEXFN; 863event error.io.pciex.poiscomp-u@PCIEXFN/PCIEXFN; 864event error.io.pciex.poiscomp-u@pciexrc/PCIEXFN; 865event error.io.pciex.ecrcreq-u@PCIEXFN; 866event error.io.pciex.ecrcreq-u@PCIEXFN/PCIEXFN; 867event error.io.pciex.ecrccomp-u@PCIEXFN; 868event error.io.pciex.ecrccomp-u@PCIEXFN/PCIEXFN; 869 870event ereport.io.pci.ma@PCIEXFN{within(5s)}; 871event ereport.io.pci.mdpe@PCIEXFN{within(5s)}; 872event ereport.io.pci.dpe@PCIEXFN{within(5s)}; 873event ereport.io.pci.rta@PCIEXFN{within(5s)}; 874event ereport.io.pci.sta@PCIEXFN{within(5s)}; 875event ereport.io.pciex.dl.dllp@PCIEXFN{within(5s)}; 876event ereport.io.pciex.pl.te@PCIEXFN{within(5s)}; 877event ereport.io.pciex.tl.fcp@PCIEXFN{within(5s)}; 878event ereport.io.pciex.tl.rof@PCIEXFN{within(5s)}; 879event ereport.io.pciex.tl.mtlp@PCIEXFN{within(5s)}; 880event ereport.io.pciex.tl.ur@PCIEXFN{within(5s)}; 881event ereport.io.pciex.tl.ca@PCIEXFN{within(5s)}; 882event ereport.io.pciex.tl.ptlp@PCIEXFN{within(5s)}; 883event ereport.io.pciex.tl.ecrc@PCIEXFN{within(5s)}; 884event ereport.io.pciex.tl.uc@PCIEXFN{within(5s)}; 885event ereport.io.pciex.tl.cto@PCIEXFN{within(5s)}; 886event ereport.io.pciex.dl.dllp@pciexrc{within(5s)}; 887event ereport.io.pciex.pl.te@pciexrc{within(5s)}; 888event ereport.io.pciex.tl.fcp@pciexrc{within(5s)}; 889event ereport.io.pciex.tl.rof@pciexrc{within(5s)}; 890event ereport.io.pciex.tl.mtlp@pciexrc{within(5s)}; 891event ereport.io.pciex.tl.ur@pciexrc{within(5s)}; 892event ereport.io.pciex.tl.ca@pciexrc{within(5s)}; 893event ereport.io.pciex.tl.ptlp@pciexrc{within(5s)}; 894event ereport.io.pciex.tl.ecrc@pciexrc{within(5s)}; 895event ereport.io.pciex.tl.cto@pciexrc{within(5s)}; 896event ereport.io.pci.sec-ma@pciexrc{within(5s)}; 897event ereport.io.pci.sec-mdpe@pciexrc{within(5s)}; 898event ereport.io.pci.sec-dpe@pciexrc{within(5s)}; 899event ereport.io.pci.sec-rta@pciexrc{within(5s)}; 900event ereport.io.pci.sec-sta@pciexrc{within(5s)}; 901event ereport.io.pci.sec-mdpe@PCIEXFN{within(5s)}; 902event ereport.io.pci.sec-dpe@PCIEXFN{within(5s)}; 903event ereport.io.pci.sec-rserr@PCIEXFN{within(5s)}; 904event ereport.io.pci.sserr@PCIEXFN{within(5s)}; 905event ereport.io.pci.sec-rserr@pciexrc{within(5s)}; 906event ereport.io.pciex.rc.fe-msg@pciexrc{within(5s)}; 907event ereport.io.pciex.rc.nfe-msg@pciexrc{within(5s)}; 908event ereport.io.pciex.rc.mue-msg@pciexrc{within(5s)}; 909event ereport.io.pciex.bdg.sec-interr@PCIEXFN{within(5s)}; 910event ereport.io.pciex.bdg.sec-ude@PCIEXFN{within(5s)}; 911event ereport.io.pci.target-mdpe@PCIEXFN{within(5s)}; 912event ereport.io.pci.target-mdpe@PCIFN{within(5s)}; 913 914/* 915 * handling of fatal and nonfatal error messages propagated up to root complex 916 * 917 * Use these for errors reported by root-complex on behalf of another device. 918 * Can use source-id payload to identify where the message came from. 919 */ 920prop error.io.pciex.fatal@PCIEXFN1 (1)-> 921 ereport.io.pciex.rc.mue-msg@pciexrc { is_under(pciexrc, PCIEXFN1) }, 922 ereport.io.pciex.rc.fe-msg@pciexrc { is_under(pciexrc, PCIEXFN1) && 923 SOURCE_ID_MATCHES_BDF }; 924 925prop error.io.pciex.fatal@PCIEXFN (0)-> 926 ereport.io.pci.sserr@PCIEXFN; 927 928prop error.io.pciex.fatal@PCIEXFN { is_under(PCIEXFN1, PCIEXFN) } (0)-> 929 ereport.io.pci.sserr@PCIEXFN1, 930 ereport.io.pci.sec-rserr@PCIEXFN1; 931 932prop error.io.pciex.fatal@PCIEXFN { is_under(pciexrc, PCIEXFN) } (0)-> 933 ereport.io.pci.sec-rserr@pciexrc; 934 935prop error.io.pciex.nonfatal@PCIEXFN1 (1)-> 936 ereport.io.pciex.rc.mue-msg@pciexrc { is_under(pciexrc, PCIEXFN1) }, 937 ereport.io.pciex.rc.nfe-msg@pciexrc { is_under(pciexrc, PCIEXFN1) && 938 SOURCE_ID_MATCHES_BDF }; 939 940prop error.io.pciex.nonfatal@PCIEXFN (0)-> 941 ereport.io.pci.sserr@PCIEXFN; 942 943prop error.io.pciex.nonfatal@PCIEXFN { is_under(PCIEXFN1, PCIEXFN) } (0)-> 944 ereport.io.pci.sserr@PCIEXFN1, 945 ereport.io.pci.sec-rserr@PCIEXFN1; 946 947prop error.io.pciex.nonfatal@PCIEXFN { is_under(pciexrc, PCIEXFN) } (0)-> 948 ereport.io.pci.sec-rserr@pciexrc; 949 950/* 951 * link-level errors - could generate ereports at either end of link 952 * 953 * can use may propagations here as these ereports are only seen for these 954 * faults. 955 */ 956prop error.io.pciex.fatlink@PCIEXFN { !IS_SD(PCIEXFN) } (0)-> 957 error.io.pciex.fatal@PCIEXFN; 958 959prop error.io.pciex.fatlink@PCIEXFN { !IS_SD(PCIEXFN) } (0)-> 960 ereport.io.pciex.dl.dllp@PCIEXFN, 961 ereport.io.pciex.tl.fcp@PCIEXFN, 962 ereport.io.pciex.tl.rof@PCIEXFN; 963 964prop error.io.pciex.fatlink@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (0)-> 965 error.io.pciex.fatal@PCIEXFN; 966 967prop error.io.pciex.fatlink@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (0)-> 968 ereport.io.pciex.dl.dllp@PCIEXFN, 969 ereport.io.pciex.pl.te@PCIEXFN, 970 ereport.io.pciex.tl.fcp@PCIEXFN, 971 ereport.io.pciex.tl.rof@PCIEXFN; 972 973prop error.io.pciex.fatlink@pciexrc/PCIEXFN (0)-> 974 ereport.io.pciex.dl.dllp@pciexrc, 975 ereport.io.pciex.pl.te@pciexrc, 976 ereport.io.pciex.tl.fcp@pciexrc, 977 ereport.io.pciex.tl.rof@pciexrc; 978 979/* 980 * bridge internal error 981 */ 982prop error.io.pciex.sec-interr@PCIEXFN { IS_BG(PCIEXFN) } (2) -> 983 error.io.pciex.nonfatal@PCIEXFN, 984 ereport.io.pciex.bdg.sec-interr@PCIEXFN; 985 986/* 987 * downstream poisoned request 988 * 989 * - poisreq-d cascades down to the leaf device/bridge and any switch ports 990 * on route must raise a ptlp ereport while any switch ports forwarding 991 * the poisoned request must raise sec-mdpe ereports. The originator of the 992 * poisoning (be it root complex or downstream port of a switch) also raises 993 * sec-mdpe. A hardened leaf driver will also raise ptlp. A target-mdpe may 994 * be seen at the leaf (which may be a pci device beyond the bridge). 995 * 996 * Additionally, the leaf/bridge may treat the request as a ur, which the 997 * root complex will see and report an ma. Use flt-ur-u to represent this. 998 * 999 * The fault can always be recognized and the source identified using the ptlp 1000 * and sec-mdpe ereports. 1001 */ 1002prop error.io.pciex.poisreq-d@PCIEXFN (1)-> 1003 error.io.pciex.poisreq-fwd-d@PCIEXFN; 1004 1005prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SD(PCIEXFN) || 1006 IS_SU(PCIEXFN) } (1)-> 1007 error.io.pciex.flt-ur-u@PCIEXFN, 1008 error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFNHZ; 1009 1010prop error.io.pciex.poisreq-fwd-d@pciexrc/PCIEXFN (1)-> 1011 ereport.io.pci.sec-mdpe@pciexrc; 1012 1013prop error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN { IS_SU(PCIEXFN) } (0)-> 1014 ereport.io.pci.sec-mdpe@PCIEXFN; 1015 1016prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (2)-> 1017 ereport.io.pci.dpe@PCIEXFN, 1018 ereport.io.pciex.tl.ptlp@PCIEXFN; 1019 1020prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (0)-> 1021 error.io.pciex.nonfatal@PCIEXFN; 1022 1023prop error.io.pciex.poisreq-fwd-d@PCIEXFN/PCIEXFN { IS_SD(PCIEXFN) } (1)-> 1024 ereport.io.pci.sec-mdpe@PCIEXFN; 1025 1026prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_SD(PCIEXFN) } (0)-> 1027 ereport.io.pci.dpe@PCIEXFN, 1028 ereport.io.pciex.tl.ptlp@PCIEXFN, 1029 error.io.pciex.nonfatal@PCIEXFN; 1030 1031prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)-> 1032 ereport.io.pci.dpe@PCIEXFN, 1033 ereport.io.pciex.tl.ptlp@PCIEXFN, 1034 error.io.pciex.nonfatal@PCIEXFN; 1035 1036prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1037 error.io.pci.dpdata-pw-d@PCIEXFN/PCIFNHZ, 1038 error.io.pci.dpdata-dw-d@PCIEXFN/PCIFNHZ; 1039 1040prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1041 error.io.pciex.nonfatal@PCIEXFN; 1042 1043prop error.io.pciex.poisreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1044 ereport.io.pci.dpe@PCIEXFN, 1045 ereport.io.pciex.tl.ptlp@PCIEXFN, 1046 error.io.pciex.flt-ur-u@PCIEXFN; 1047 1048prop error.io.pciex.poisreq-fwd-d@PCIEXFN (0)-> 1049 ereport.io.pci.target-mdpe@PCIEXFN; 1050 1051/* 1052 * downstream poisoned completion 1053 * 1054 * - poiscomp-d cascades down to the leaf device/bridge and any switch ports on 1055 * route must raise ptlp and mdpe ereports. A hardened leaf driver will also 1056 * raise pltp and mdpe. For non-hardened leaf devices, no ptlp/mdpe may be 1057 * reported, and though we should still see a nonfatal error reported from 1058 * the root complex identifying the leaf device, we won't actually be informed 1059 * that the error was an ptlp. 1060 */ 1061prop error.io.pciex.poiscomp-d@PCIEXFN (1)-> 1062 error.io.pciex.poiscomp-fwd-d@PCIEXFN; 1063 1064prop error.io.pciex.poiscomp-fwd-d@PCIEXFN (1)-> 1065 error.io.pciex.poiscomp-fwd-d@PCIEXFN/PCIEXFNHZ; 1066 1067prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (2)-> 1068 ereport.io.pci.dpe@PCIEXFN, 1069 ereport.io.pciex.tl.ptlp@PCIEXFN; 1070 1071prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 1072 ereport.io.pci.mdpe@PCIEXFN, 1073 ereport.io.pci.sec-mdpe@PCIEXFN; 1074 1075prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) } (0)-> 1076 error.io.pciex.nonfatal@PCIEXFN; 1077 1078prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_SD(PCIEXFN) } (0)-> 1079 ereport.io.pci.mdpe@PCIEXFN, 1080 ereport.io.pci.sec-mdpe@PCIEXFN, 1081 ereport.io.pci.dpe@PCIEXFN, 1082 ereport.io.pciex.tl.ptlp@PCIEXFN, 1083 error.io.pciex.nonfatal@PCIEXFN; 1084 1085prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (4)-> 1086 ereport.io.pci.mdpe@PCIEXFN, 1087 ereport.io.pci.dpe@PCIEXFN, 1088 ereport.io.pciex.tl.ptlp@PCIEXFN, 1089 error.io.pciex.nonfatal@PCIEXFN; 1090 1091prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1092 error.io.pci.dpdata-dr-d@PCIEXFN/PCIFNHZ; 1093 1094prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1095 error.io.pciex.nonfatal@PCIEXFN; 1096 1097prop error.io.pciex.poiscomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1098 ereport.io.pci.mdpe@PCIEXFN, 1099 ereport.io.pci.dpe@PCIEXFN, 1100 ereport.io.pciex.tl.ptlp@PCIEXFN; 1101 1102/* 1103 * downstream request with ecrc error. 1104 * 1105 * - ecrcreq-d cascades down to the leaf device/bridge and any switches on 1106 * route can optionally raise an ecrc ereport. A hardened leaf driver may also 1107 * raise ecrc. For non-hardened leaf devices, no ecrc may be reported, and 1108 * though we should still see a nonfatal error reported from the root complex 1109 * identifying the leaf device, we won't actually be informed that the error 1110 * was an ecrc. 1111 * 1112 * Additionally, as the leaf/bridge will just throw away the packet, we should 1113 * eventually get a cto at the root complex - so use an nr-u at the pciex 1114 * leaf or bridge to get the appropriate behaviour. For the case where the leaf 1115 * driver wasn't hardened we may be able to identify the leaf device (and 1116 * therefore any intermediate switches which might have caused the problem) 1117 * either via a target-ma ereport if available or via the nonfatal error 1118 * reported from the root complex identifying the leaf device. The combination 1119 * of a nonfatal error reported from the root complex and a cto from the root 1120 * complex is sufficient to positively identify this case. 1121 */ 1122prop error.io.pciex.ecrcreq-d@PCIEXFN (1)-> 1123 error.io.pciex.ecrcreq-fwd-d@PCIEXFN; 1124 1125prop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) || 1126 IS_SD(PCIEXFN) } (1)-> 1127 error.io.pciex.flt-nr-u@PCIEXFN, 1128 error.io.pciex.ecrcreq-fwd-d@PCIEXFN/PCIEXFNHZ; 1129 1130prop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_SU(PCIEXFN) || 1131 IS_SD(PCIEXFN) } (0)-> 1132 ereport.io.pciex.tl.ecrc@PCIEXFN, 1133 error.io.pciex.nonfatal@PCIEXFN; 1134 1135prop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)-> 1136 error.io.pciex.nonfatal@PCIEXFN, 1137 ereport.io.pciex.tl.ecrc@PCIEXFN, 1138 error.io.pciex.flt-nr-u@PCIEXFN; 1139 1140prop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (2)-> 1141 error.io.pciex.nonfatal@PCIEXFN, 1142 error.io.pciex.flt-nr-u@PCIEXFN; 1143 1144prop error.io.pciex.ecrcreq-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1145 ereport.io.pciex.tl.ecrc@PCIEXFN; 1146 1147/* 1148 * downstream completion with ecrc error. 1149 * 1150 * - ecrccomp-d cascades down to the leaf device/bridge and any switches on 1151 * route can optionally raise an ecrc ereport. A hardened leaf driver may 1152 * also raise ecrc. For non-hardened leaf devices, no ecrc may be reported, 1153 * and though we should still see a nonfatal error reported from the root 1154 * complex identifying the leaf device, we won't actually be informed that 1155 * the error was an ecrc. 1156 * 1157 * Additionally, as the leaf/bridge will just throw away the packet, we should 1158 * eventually get a cto. Note the leaf ereports are optional (ie in case driver 1159 * not hardened) but if we get both ecrc and cto we need to distinguish from 1160 * cto only which would be an nr-d. 1161 */ 1162prop error.io.pciex.ecrccomp-d@PCIEXFN (1)-> 1163 error.io.pciex.ecrccomp-fwd-d@PCIEXFN; 1164 1165prop error.io.pciex.ecrccomp-fwd-d@PCIEXFN (1)-> 1166 error.io.pciex.ecrccomp-fwd-d@PCIEXFN/PCIEXFNHZ; 1167 1168prop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_SU(PCIEXFN) || 1169 IS_SD(PCIEXFN) } (0)-> 1170 error.io.pciex.nonfatal@PCIEXFN, 1171 ereport.io.pciex.tl.ecrc@PCIEXFN; 1172 1173prop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (3)-> 1174 error.io.pciex.nonfatal@PCIEXFN, 1175 ereport.io.pciex.tl.ecrc@PCIEXFN, 1176 error.io.pciex.nr-d@PCIEXFN; 1177 1178prop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1179 error.io.pciex.nonfatal@PCIEXFN; 1180 1181prop error.io.pciex.ecrccomp-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1182 ereport.io.pciex.tl.ecrc@PCIEXFN, 1183 error.io.pciex.nr-d@PCIEXFN; 1184 1185/* 1186 * upstream poisoned request 1187 * 1188 * - flt-poisreq-u is on the pciex node which generated the fault 1189 * - source-poisreq-u refers to at least one leaf or bridge device 1190 * whose bdf (if leaf) must match the source-id in the payload of the 1191 * ereport generated from the root complex. 1192 * - poisreq-u propagates up to the root complex and any switch ports on 1193 * route will raise a ptlp ereport, while any upstream devices generating 1194 * or forwarding the poisoned packed will raise an mdpe ereport. The root 1195 * complex should also report a ptlp. 1196 * 1197 * Additionally, as the root complex may treat the request as a ur, which the 1198 * leaf/bridge will see (and if hardened report) as an ma (including sending a 1199 * ta onto the child pci bus if this was a delayed write). 1200 * 1201 * We can always recognize what sort of fault this is from the ptlp (with no 1202 * sec-mdpe) at the root complex. Recognizing which originating devices may be 1203 * implicated can be done using the mdpe ereport (for a hardened leaf driver), 1204 * or for a non-hardened leaf driver by using the source-id payload in the ptlp 1205 * ereport to identify the originator of the request. The ptlp/mdpe ereports 1206 * at the intervening switches will narrow the fault down to a single suspect. 1207 */ 1208 1209prop error.io.pciex.flt-poisreq-u@PCIEXFN1 { (IS_LF(PCIEXFN) || 1210 IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)-> 1211 error.io.pciex.source-poisreq-u@PCIEXFN; 1212 1213prop error.io.pciex.source-poisreq-u@PCIEXFN1 { IS_LF(PCIEXFN1) && 1214 SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)-> 1215 ereport.io.pciex.tl.ptlp@pciexrc, 1216 ereport.io.pciex.tl.ur@pciexrc; 1217 1218prop error.io.pciex.source-poisreq-u@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1219 ereport.io.pci.ma@PCIEXFN; 1220 1221prop error.io.pciex.source-poisreq-u@PCIEXFN { IS_BG(PCIEXFN) && 1222 is_under(pciexrc, PCIEXFN) } (0)-> 1223 ereport.io.pciex.tl.ptlp@pciexrc, 1224 ereport.io.pciex.tl.ur@pciexrc; 1225 1226prop error.io.pciex.source-poisreq-u@PCIEXFN { IS_BG(PCIEXFN) } (0)-> 1227 ereport.io.pci.ma@PCIEXFN, 1228 ereport.io.pci.sec-sta@PCIEXFN, 1229 error.io.pci.ta-drw-d@PCIEXFN/PCIFN; 1230 1231prop error.io.pciex.flt-poisreq-u@PCIEXFN (1)-> 1232 error.io.pciex.poisreq-u@PCIEXFN; 1233 1234/* 1235 * the remaining propagations are also used for poisoned requests propagating 1236 * up due to a fault behind a pcie-pci bridge 1237 */ 1238prop error.io.pciex.poisreq-u@PCIEXFN/PCIEXFN (1)-> 1239 error.io.pciex.poisreq-u@PCIEXFN; 1240 1241prop error.io.pciex.poisreq-u@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1242 ereport.io.pci.mdpe@PCIEXFN; 1243 1244prop error.io.pciex.poisreq-u@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1245 ereport.io.pci.mdpe@PCIEXFN; 1246 1247prop error.io.pciex.poisreq-u@PCIEXFN { IS_SD(PCIEXFN) } (2)-> 1248 ereport.io.pci.sec-dpe@PCIEXFN, 1249 ereport.io.pciex.tl.ptlp@PCIEXFN; 1250 1251prop error.io.pciex.poisreq-u@PCIEXFN { IS_SD(PCIEXFN) } (0)-> 1252 ereport.io.pci.mdpe@PCIEXFN, 1253 error.io.pciex.nonfatal@PCIEXFN; 1254 1255prop error.io.pciex.poisreq-u@PCIEXFN { IS_SU(PCIEXFN) } (1)-> 1256 ereport.io.pci.mdpe@PCIEXFN; 1257 1258prop error.io.pciex.poisreq-u@PCIEXFN { IS_SU(PCIEXFN) } (0)-> 1259 ereport.io.pci.sec-dpe@PCIEXFN, 1260 ereport.io.pciex.tl.ptlp@PCIEXFN, 1261 error.io.pciex.nonfatal@PCIEXFN; 1262 1263prop error.io.pciex.poisreq-u@pciexrc/PCIEXFN (1)-> 1264 ereport.io.pci.sec-dpe@pciexrc; 1265 1266/* 1267 * upstream poisoned completion 1268 * 1269 * - flt-poiscomp-u is on the pciex node which generated the fault. There will 1270 * be a target-mdpe downstream from here. 1271 * - source-poiscomp-u refers to at least one leaf or bridge device 1272 * whose bdf (if leaf) must match the source-id in the payload of the 1273 * ereport generated from the root complex. 1274 * - poiscomp-u propagates up to the root complex and any switches on 1275 * route will raise ptlp and sec-mdpe ereports. The root complex will also 1276 * raise a sec-mdpe and ptlp. 1277 * 1278 * We can always recognize what sort of fault this is from the ptlp/sec-mdpe at 1279 * the root complex. Recognizing which originating devices may be implicated 1280 * can be done using the source-id payload in the ptlp ereport to identify the 1281 * originator of the completion. The ptlp/sec-mdpe ereports at the intervening 1282 * switches will narrow the fault down to a single suspect. 1283 */ 1284prop error.io.pciex.flt-poiscomp-u@PCIEXFN { IS_LF(PCIEXFN1) && 1285 is_under(PCIEXFN, PCIEXFN1) } (0)-> 1286 ereport.io.pci.target-mdpe@PCIEXFN1; 1287 1288prop error.io.pciex.flt-poiscomp-u@PCIEXFN { IS_PCI_LF(PCIFN) && 1289 is_under(PCIEXFN, PCIFN) } (0)-> 1290 ereport.io.pci.target-mdpe@PCIFN; 1291 1292prop error.io.pciex.flt-poiscomp-u@PCIEXFN1 { (IS_LF(PCIEXFN) || 1293 IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)-> 1294 error.io.pciex.source-poiscomp-u@PCIEXFN; 1295 1296prop error.io.pciex.source-poiscomp-u@PCIEXFN1 { IS_LF(PCIEXFN1) && 1297 SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)-> 1298 ereport.io.pciex.tl.ptlp@pciexrc; 1299 1300prop error.io.pciex.source-poiscomp-u@PCIEXFN1 { IS_BG(PCIEXFN1) && 1301 is_under(pciexrc, PCIEXFN1) } (0)-> 1302 ereport.io.pciex.tl.ptlp@pciexrc; 1303 1304prop error.io.pciex.flt-poiscomp-u@PCIEXFN (1)-> 1305 error.io.pciex.poiscomp-u@PCIEXFN; 1306 1307/* 1308 * the remaining propagations are also used for poisoned completions propagating 1309 * up due to a fault behind a pcie-pci bridge 1310 */ 1311prop error.io.pciex.poiscomp-u@PCIEXFN/PCIEXFN (1)-> 1312 error.io.pciex.poiscomp-u@PCIEXFN; 1313 1314prop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (2)-> 1315 ereport.io.pci.sec-dpe@PCIEXFN, 1316 ereport.io.pciex.tl.ptlp@PCIEXFN; 1317 1318prop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (1)-> 1319 ereport.io.pci.sec-mdpe@PCIEXFN, 1320 ereport.io.pci.mdpe@PCIEXFN; 1321 1322prop error.io.pciex.poiscomp-u@PCIEXFN { IS_SD(PCIEXFN) } (0)-> 1323 error.io.pciex.nonfatal@PCIEXFN; 1324 1325prop error.io.pciex.poiscomp-u@PCIEXFN { IS_SU(PCIEXFN) } (0)-> 1326 ereport.io.pci.mdpe@PCIEXFN, 1327 ereport.io.pci.sec-mdpe@PCIEXFN, 1328 ereport.io.pci.sec-dpe@PCIEXFN, 1329 ereport.io.pciex.tl.ptlp@PCIEXFN, 1330 error.io.pciex.nonfatal@PCIEXFN; 1331 1332prop error.io.pciex.poiscomp-u@pciexrc/PCIEXFN (1)-> 1333 ereport.io.pci.sec-dpe@pciexrc; 1334 1335prop error.io.pciex.poiscomp-u@pciexrc/PCIEXFN (0)-> 1336 ereport.io.pci.sec-mdpe@pciexrc; 1337 1338/* 1339 * upstream request with ecrc error. 1340 * 1341 * - flt-ecrcreq-u is on the pciex node which generated the fault. 1342 * - source-ecrcreq-u cascades down to at least one leaf device (pciex or pci), 1343 * whose bdf (if pciex) must match the source-id in the payload of the 1344 * ereport generated from the root complex. 1345 * - ecrcreq-u propagates up to the root complex which must report it with an 1346 * ecrc ereport and any switches on route can optionally raise an ecrc ereport 1347 * 1348 * Additionally, as the root complex will just throw away the packet, we may 1349 * eventually get a cto - so use an nr-d at the pciex leaf or bridge to get 1350 * the appropriate behaviour. 1351 * 1352 * We can always recognize what sort of fault this is from the ecrc (with no 1353 * cto) at the root complex. Recognizing which leaf device may be implicated 1354 * can be done from the cto ereport (for a hardened leaf driver) or for a 1355 * non-hardened leaf using the source-id payload of the ecrc. 1356 */ 1357prop error.io.pciex.flt-ecrcreq-u@PCIEXFN1 { (IS_LF(PCIEXFN) || 1358 IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)-> 1359 error.io.pciex.source-ecrcreq-u@PCIEXFN; 1360 1361prop error.io.pciex.source-ecrcreq-u@PCIEXFN (0)-> 1362 error.io.pciex.nr-d@PCIEXFN; 1363 1364prop error.io.pciex.source-ecrcreq-u@PCIEXFN1 { IS_LF(PCIEXFN1) && 1365 SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)-> 1366 ereport.io.pciex.tl.ecrc@pciexrc; 1367 1368prop error.io.pciex.source-ecrcreq-u@PCIEXFN { IS_BG(PCIEXFN) && 1369 is_under(pciexrc, PCIEXFN) } (0)-> 1370 ereport.io.pciex.tl.ecrc@pciexrc; 1371 1372prop error.io.pciex.flt-ecrcreq-u@PCIEXFN (1)-> 1373 error.io.pciex.ecrcreq-u@PCIEXFN; 1374 1375prop error.io.pciex.ecrcreq-u@PCIEXFN/PCIEXFN (1)-> 1376 error.io.pciex.ecrcreq-u@PCIEXFN; 1377 1378prop error.io.pciex.ecrcreq-u@PCIEXFN { IS_SD(PCIEXFN)||IS_SU(PCIEXFN) } (0)-> 1379 ereport.io.pciex.tl.ecrc@PCIEXFN, 1380 error.io.pciex.nonfatal@PCIEXFN; 1381 1382/* 1383 * upstream completion with ecrc error. 1384 * 1385 * - flt-ecrccomp-u is on the pciex node which generated the fault. 1386 * - source-ecrccomp-u cascades down to at least one leaf device (pciex or pci), 1387 * whose bdf (if pciex) must match the source-id in the payload of the 1388 * ereport generated from the root complex. 1389 * - ecrccomp-u propagates up to the root complex, which should report it with 1390 * an ecrc ereport and any switches on route can optionally raise an ecrc 1391 * ereport. 1392 * 1393 * Additionally, as the root complex will just throw away the packet, we'll 1394 * eventually get a cto - so use an flt-nr-u at the pciex leaf or bridge to get 1395 * the appropriate behaviour. 1396 * 1397 * We can always recognize what sort of fault this from the ecrc/cto from the 1398 * root complex. Recognizing which leaf device may be implicated can be done 1399 * using either the source-id payload of the ecrc or the target-ma ereport if 1400 * available. 1401 */ 1402prop error.io.pciex.flt-ecrccomp-u@PCIEXFN1 { (IS_LF(PCIEXFN) || 1403 IS_BG(PCIEXFN)) && is_under(PCIEXFN1, PCIEXFN) } (0)-> 1404 error.io.pciex.source-ecrccomp-u@PCIEXFN; 1405 1406prop error.io.pciex.source-ecrccomp-u@PCIEXFN (0)-> 1407 error.io.pciex.flt-nr-u@PCIEXFN; 1408 1409prop error.io.pciex.source-ecrccomp-u@PCIEXFN1 { IS_LF(PCIEXFN1) && 1410 SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)-> 1411 ereport.io.pciex.tl.ecrc@pciexrc; 1412 1413prop error.io.pciex.source-ecrccomp-u@PCIEXFN { IS_BG(PCIEXFN) && 1414 is_under(pciexrc, PCIEXFN) } (0)-> 1415 ereport.io.pciex.tl.ecrc@pciexrc; 1416 1417prop error.io.pciex.flt-ecrccomp-u@PCIEXFN (1)-> 1418 error.io.pciex.ecrccomp-u@PCIEXFN; 1419 1420prop error.io.pciex.ecrccomp-u@PCIEXFN/PCIEXFN (1)-> 1421 error.io.pciex.ecrccomp-u@PCIEXFN; 1422 1423prop error.io.pciex.ecrccomp-u@PCIEXFN { IS_SD(PCIEXFN)||IS_SU(PCIEXFN) } (0)-> 1424 ereport.io.pciex.tl.ecrc@PCIEXFN, 1425 error.io.pciex.nonfatal@PCIEXFN; 1426 1427/* 1428 * no response to downstream requester 1429 * 1430 * - nr-d will effectively cascade downstream to the requester. The fault here 1431 * is always at the root complex. For a hardened leaf device driver, we will 1432 * always be able to recognize this as the requester will report this as a 1433 * cto. For non-hardened leaf devices, no cto will be reported, and though we 1434 * should still see a nonfatal error reported from the root complex 1435 * identifying the leaf device, we won't actually be informed that the error 1436 * was a cto. 1437 */ 1438prop error.io.pciex.nr-d@PCIEXFN (1)-> 1439 error.io.pciex.nr-d@PCIEXFN/PCIEXFNHZ; 1440 1441prop error.io.pciex.nr-d@PCIEXFN { IS_BG(PCIEXFN) } (2)-> 1442 error.io.pciex.nonfatal@PCIEXFN, 1443 ereport.io.pciex.tl.cto@PCIEXFN; 1444 1445prop error.io.pciex.nr-d@PCIEXFN { IS_BG(PCIEXFN) } (0)-> 1446 ereport.io.pci.ma@PCIEXFN, 1447 ereport.io.pci.sec-sta@PCIEXFN, 1448 error.io.pci.nr-drw-d@PCIEXFN/PCIFN, 1449 error.io.pci.ta-drw-d@PCIEXFN/PCIFN; 1450 1451prop error.io.pciex.nr-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1452 error.io.pciex.nonfatal@PCIEXFN; 1453 1454prop error.io.pciex.nr-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1455 ereport.io.pci.ma@PCIEXFN, 1456 ereport.io.pciex.tl.cto@PCIEXFN; 1457 1458/* 1459 * no response to upstream requester 1460 * 1461 * - flt-nr-u will effectively cascade upstream to the root complex which will 1462 * report it as a cto. 1463 * 1464 * We have to use target-ma to informs us which device failed to respond. 1465 */ 1466prop error.io.pciex.flt-nr-u@PCIEXFN (1)-> 1467 error.io.pci.target-ma-d@PCIEXFN; 1468 1469prop error.io.pciex.flt-nr-u@PCIEXFN (1)-> 1470 error.io.pciex.nr-u@PCIEXFN; 1471 1472prop error.io.pciex.nr-u@PCIEXFN/PCIEXFN (1)-> 1473 error.io.pciex.nr-u@PCIEXFN; 1474 1475prop error.io.pciex.nr-u@pciexrc/PCIEXFN (1)-> 1476 ereport.io.pciex.tl.cto@pciexrc; 1477 1478prop error.io.pciex.nr-u@pciexrc/PCIEXFN (0)-> 1479 ereport.io.pci.sec-ma@pciexrc; 1480 1481/* 1482 * downstream malformed tlp 1483 * 1484 * This will cascade downstream to the receiver which will report it as an mtlp. 1485 * For non-hardened leaf drivers, no mtlp will be reported, and though we should 1486 * still see a fatal error reported from the root complex identifying the leaf 1487 * device, we won't actually be informed that the error was a mtlp. 1488 * Note that sw-mtlp-d is to handle the case where the switch is actually 1489 * the target of the packet (config request etc). 1490 */ 1491prop error.io.pciex.mtlp-d@PCIEXFN { IS_SD(PCIEXFN) || IS_SU(PCIEXFN) } (1)-> 1492 error.io.pciex.sw-mtlp-d@PCIEXFN, 1493 error.io.pciex.mtlp-d@PCIEXFN/PCIEXFNHZ; 1494 1495prop error.io.pciex.sw-mtlp-d@PCIEXFN { IS_SU(PCIEXFN) } (2)-> 1496 error.io.pciex.fatal@PCIEXFN, 1497 ereport.io.pciex.tl.mtlp@PCIEXFN; 1498 1499prop error.io.pciex.mtlp-d@PCIEXFN { IS_BG(PCIEXFN) } (2)-> 1500 error.io.pciex.fatal@PCIEXFN, 1501 ereport.io.pciex.tl.mtlp@PCIEXFN; 1502 1503prop error.io.pciex.mtlp-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1504 error.io.pciex.fatal@PCIEXFN; 1505 1506prop error.io.pciex.mtlp-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1507 ereport.io.pciex.tl.mtlp@PCIEXFN; 1508 1509/* 1510 * upstream malformed tlp 1511 * 1512 * This will cascade upstream to the receiver which will report it as an mtlp. 1513 */ 1514prop error.io.pciex.flt-mtlp-u@PCIEXFN (1)-> 1515 error.io.pciex.mtlp-u@PCIEXFN; 1516 1517prop error.io.pciex.mtlp-u@PCIEXFN/PCIEXFN (1)-> 1518 error.io.pciex.mtlp-u@PCIEXFN; 1519 1520prop error.io.pciex.mtlp-u@pciexrc/PCIEXFN (1)-> 1521 ereport.io.pciex.tl.mtlp@pciexrc; 1522 1523/* 1524 * downstream completer aborts 1525 * 1526 * This could be the fault of the root complex or a switch reporting an internal 1527 * error, or of the leaf device sending an invalid request (the latter is 1528 * handled by the flt-badreq-u case below). 1529 * 1530 * This is reported by the completer or by an intervening downstream switch 1531 * port. The completer abort response propagates down to the initiator which 1532 * will set the legacy pci bit rta. 1533 * 1534 * The fault can always be recognized by the ca ereport from the root complex 1535 * or downstream switch port. The originator of the request can be recognized 1536 * by the rta for a hardened driver or by using the source-id payload of the 1537 * ca ereport for a non-hardened driver. 1538 */ 1539prop error.io.pciex.ca-d@pciexrc/PCIEXFN (0)-> 1540 ereport.io.pciex.tl.ca@pciexrc; 1541 1542prop error.io.pciex.ca-d@pciexrc/PCIEXFN (1)-> 1543 ereport.io.pci.sec-sta@pciexrc; 1544 1545prop error.io.pciex.ca-d@PCIEXFN/PCIEXFN (0)-> 1546 ereport.io.pci.sec-sta@PCIEXFN; 1547 1548prop error.io.pciex.ca-d@PCIEXFN/PCIEXFN (2)-> 1549 ereport.io.pciex.tl.ca@PCIEXFN, 1550 error.io.pciex.nonfatal@PCIEXFN; 1551 1552prop error.io.pciex.ca-d@PCIEXFN (0)-> 1553 error.io.pciex.ca-fwd-d@PCIEXFN; 1554 1555prop error.io.pciex.ca-fwd-d@PCIEXFN (1)-> 1556 error.io.pciex.ca-fwd-d@PCIEXFN/PCIEXFNHZ; 1557 1558prop error.io.pciex.ca-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1559 ereport.io.pci.rta@PCIEXFN; 1560 1561prop error.io.pciex.ca-fwd-d@PCIEXFN { IS_BG(PCIEXFN) } (0)-> 1562 ereport.io.pci.sec-sta@PCIEXFN, 1563 error.io.pci.ta-drw-d@PCIEXFN/PCIFN; 1564 1565prop error.io.pciex.ca-fwd-d@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1566 ereport.io.pci.rta@PCIEXFN; 1567 1568/* 1569 * upstream completer aborts 1570 * 1571 * This could be the fault of the leaf device/bridge/upstream switch port 1572 * reporting an internal error, or of the root complex sending an invalid 1573 * request (the latter case is handled by badreq-d below). 1574 * 1575 * This is reported as a ca by the completer. The completer (for non-posted 1576 * requests) sends the appropriate error bits in the completion message to 1577 * the initiator which will set the legacy pci bit sec-rta. 1578 * 1579 * The fault can always be recognized from the sec-rta bit at the root complex. 1580 * 1581 * If the fault was with a PCI Express leaf with a hardened driver, then we 1582 * will identify the device from the ca ereport. 1583 * 1584 * If the fault was with a PCI Express leaf with a non-hardened driver, then we 1585 * can still identify the leaf device from the source-id payload of the nonfatal 1586 * message ereport from the root complex or from the target-rta ereport. 1587 */ 1588prop error.io.pciex.flt-ca-u@PCIEXFN { !IS_LF(PCIEXFN) } (1)-> 1589 ereport.io.pciex.tl.ca@PCIEXFN; 1590 1591prop error.io.pciex.flt-ca-u@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1592 ereport.io.pciex.tl.ca@PCIEXFN; 1593 1594prop error.io.pciex.flt-ca-u@PCIEXFN (0)-> 1595 error.io.pciex.nonfatal@PCIEXFN, 1596 ereport.io.pci.sta@PCIEXFN; 1597 1598prop error.io.pciex.flt-ca-u@PCIEXFN (2)-> 1599 error.io.pci.target-rta-d@PCIEXFN, 1600 error.io.pciex.ca-u@PCIEXFN; 1601 1602prop error.io.pciex.ca-u@PCIEXFN/PCIEXFN (1)-> 1603 error.io.pciex.ca-u@PCIEXFN; 1604 1605prop error.io.pciex.ca-u@pciexrc/PCIEXFN (0)-> 1606 ereport.io.pci.sec-rta@pciexrc; 1607 1608/* 1609 * upstream bad request 1610 * 1611 * When detecting bad data on a request the completer (or any switch on the 1612 * way to the completer) may report ur or ca. If the switch detects the problem 1613 * first then the request doesn't get forwarded on to the completer. 1614 * 1615 * These are reported as ur/ca ereports. For non-posted requests, the reporter 1616 * then sends the appropriate error bits in the completion message to the 1617 * initiator which will set the legacy pci bits ma or rta. 1618 * 1619 * For flt-badreq-u, the ca/ur ereports contain a source-id payload that 1620 * identifies the initiator. 1621 * 1622 * The fault can always be recognized by the ca/ur ereport from the root 1623 * complex or downstream switch port. The originator of the request can be 1624 * recognized by the rta/ma for a hardened driver or by using the source-id 1625 * payload of the ca/ur ereport for a non-hardened driver. 1626 */ 1627prop error.io.pciex.flt-badreq-u@PCIEXFN (0)-> 1628 ereport.io.pci.ma@PCIEXFN, 1629 ereport.io.pci.rta@PCIEXFN; 1630 1631prop error.io.pciex.flt-badreq-u@PCIEXFN1 { 1632 SOURCE_ID_MATCHES_BDF && is_under(pciexrc, PCIEXFN1) } (0)-> 1633 ereport.io.pciex.tl.ur@pciexrc, 1634 ereport.io.pciex.tl.ca@pciexrc; 1635 1636prop error.io.pciex.flt-badreq-u@PCIEXFN (1)-> 1637 error.io.pciex.badreq-u@PCIEXFN; 1638 1639prop error.io.pciex.badreq-u@PCIEXFN/PCIEXFN (1)-> 1640 error.io.pciex.badreq-u@PCIEXFN; 1641 1642prop error.io.pciex.badreq-u@pciexrc/PCIEXFN (0)-> 1643 ereport.io.pci.sec-sta@pciexrc; 1644 1645prop error.io.pciex.flt-badreq-u@PCIEXFN1 { IS_SD(PCIEXFN) && 1646 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIEXFN1) } (0)-> 1647 ereport.io.pciex.tl.ur@PCIEXFN, 1648 ereport.io.pciex.tl.ca@PCIEXFN; 1649 1650prop error.io.pciex.flt-badreq-u@PCIEXFN1 { IS_SD(PCIEXFN) && 1651 is_under(PCIEXFN, PCIEXFN1) } (0)-> 1652 ereport.io.pci.sec-sta@PCIEXFN, 1653 error.io.pciex.nonfatal@PCIEXFN; 1654 1655/* 1656 * downstream bad request 1657 * 1658 * When detecting bad data on a request the completer (or any switch on the 1659 * way to the completer) may report ur or ca. If the switch detects the problem 1660 * first then the request doesn't get forwarded on to the completer. 1661 * 1662 * These are reported as ur/ca ereports (except where the completer is a non- 1663 * hardened leaf driver when all we get is a nonfatal error from the root 1664 * complex identifying the leaf device). The reporter then sends the appropriate 1665 * error bits in the completion message to the initiator which will set the 1666 * legacy pci bits ma or rta (oddly there is no equivalent in pcie error 1667 * reporting). 1668 */ 1669prop error.io.pciex.badreq-d@PCIEXFN { IS_SU(PCIEXFN) || IS_SD(PCIEXFN) } (1)-> 1670 error.io.pciex.flt-ur-u@PCIEXFN, 1671 error.io.pciex.flt-ca-u@PCIEXFN, 1672 error.io.pciex.badreq-d@PCIEXFN/PCIEXFNHZ; 1673 1674prop error.io.pciex.badreq-d@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1675 error.io.pciex.flt-ur-u@PCIEXFN, 1676 error.io.pciex.flt-ca-u@PCIEXFN, 1677 error.io.pci.badreq-pw-d@PCIEXFN/PCIFNHZ, 1678 error.io.pci.badreq-drw-d@PCIEXFN/PCIFNHZ; 1679 1680prop error.io.pciex.badreq-d@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1681 error.io.pciex.flt-ur-u@PCIEXFN, 1682 error.io.pciex.flt-ca-u@PCIEXFN; 1683 1684prop error.io.pciex.flt-ur-u@PCIEXFN { !IS_LF(PCIEXFN) } (1)-> 1685 ereport.io.pciex.tl.ur@PCIEXFN; 1686 1687prop error.io.pciex.flt-ur-u@PCIEXFN { IS_LF(PCIEXFN) } (0)-> 1688 ereport.io.pciex.tl.ur@PCIEXFN; 1689 1690prop error.io.pciex.flt-ur-u@PCIEXFN (2)-> 1691 error.io.pci.target-ma-d@PCIEXFN, 1692 error.io.pciex.ur-u@PCIEXFN; 1693 1694prop error.io.pciex.flt-ur-u@PCIEXFN (0)-> 1695 error.io.pciex.nonfatal@PCIEXFN; 1696 1697prop error.io.pciex.ur-u@PCIEXFN/PCIEXFN (1)-> 1698 error.io.pciex.ur-u@PCIEXFN; 1699 1700prop error.io.pciex.ur-u@pciexrc/PCIEXFN (0)-> 1701 ereport.io.pci.sec-ma@pciexrc; 1702 1703/* 1704 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1705 * Stub unused legacy pci ereports at root complex. 1706 * Stub tl.uc as we can't do anything useful with it (we should eventually 1707 * get a cto which we can do something with - a uc without a cto is a genuinely 1708 * spurious completion which is at least harmless). 1709 * Stub messages that the root complex sends to itself. 1710 * Stub mce/mue/ce/nr/noadverr. 1711 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1712 */ 1713 1714event error.io.pciex.discard_rc@pciexrc; 1715 1716event ereport.io.pciex.noadverr@PCIEXFN{within(5s)}; 1717event ereport.io.pciex.correctable@PCIEXFN{within(5s)}; 1718event ereport.io.pciex.nonfatal@PCIEXFN{within(5s)}; 1719event ereport.io.pciex.a-nonfatal@PCIEXFN{within(5s)}; 1720event ereport.io.pciex.fatal@PCIEXFN{within(5s)}; 1721event ereport.io.pci.nr@PCIEXFN{within(5s)}; 1722event ereport.io.pci.nr@pciexrc{within(5s)}; 1723event ereport.io.pci.ma@pciexrc{within(5s)}; 1724event ereport.io.pci.rta@pciexrc{within(5s)}; 1725event ereport.io.pci.sta@pciexrc{within(5s)}; 1726event ereport.io.pci.dpe@pciexrc{within(5s)}; 1727event ereport.io.pci.mdpe@pciexrc{within(5s)}; 1728event ereport.io.pci.sserr@pciexrc{within(5s)}; 1729event ereport.io.pciex.tl.uc@pciexrc{within(5s)}; 1730event ereport.io.pciex.noadverr@pciexrc{within(5s)}; 1731event ereport.io.pciex.a-nonfatal@pciexrc{within(5s)}; 1732event ereport.io.pciex.rc.ce-msg@pciexrc{within(5s)}; 1733event ereport.io.pciex.rc.mce-msg@pciexrc{within(5s)}; 1734 1735event upset.io.pciex.discard_uc@PCIEXFN; 1736event upset.io.pciex.discard@PCIEXFN; 1737event upset.io.pciex.discard@pciexrc; 1738 1739prop upset.io.pciex.discard_uc@PCIEXFN { IS_BG(PCIEXFN) } (1)-> 1740 ereport.io.pciex.tl.uc@PCIEXFN; 1741 1742prop upset.io.pciex.discard_uc@PCIEXFN { IS_LF(PCIEXFN) } (1)-> 1743 ereport.io.pciex.tl.uc@PCIEXFN; 1744 1745prop upset.io.pciex.discard@PCIEXFN (1)-> 1746 ereport.io.pci.nr@PCIEXFN, 1747 ereport.io.pciex.noadverr@PCIEXFN, 1748 ereport.io.pciex.correctable@PCIEXFN, 1749 ereport.io.pciex.nonfatal@PCIEXFN, 1750 ereport.io.pciex.a-nonfatal@PCIEXFN, 1751 ereport.io.pciex.fatal@PCIEXFN; 1752 1753prop error.io.pciex.discard_rc@pciexrc (0)-> 1754 ereport.io.pciex.rc.mue-msg@pciexrc, 1755 ereport.io.pciex.rc.fe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF }, 1756 ereport.io.pciex.rc.nfe-msg@pciexrc { SOURCE_ID_MATCHES_OWN_BDF }; 1757 1758prop upset.io.pciex.discard@pciexrc (1)-> 1759 error.io.pciex.discard_rc@pciexrc, 1760 ereport.io.pci.nr@pciexrc, 1761 ereport.io.pciex.noadverr@pciexrc, 1762 ereport.io.pciex.a-nonfatal@pciexrc, 1763 ereport.io.pciex.rc.ce-msg@pciexrc, 1764 ereport.io.pciex.rc.mce-msg@pciexrc, 1765 ereport.io.pciex.tl.uc@pciexrc, 1766 ereport.io.pci.ma@pciexrc, 1767 ereport.io.pci.rta@pciexrc, 1768 ereport.io.pci.sta@pciexrc, 1769 ereport.io.pci.dpe@pciexrc, 1770 ereport.io.pci.mdpe@pciexrc, 1771 ereport.io.pci.sserr@pciexrc; 1772 1773/* 1774 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1775 * rules for propagations from child PCI bus 1776 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1777 */ 1778 1779event error.io.pci.retry-to-u@PCIEXFN/PCIFN; 1780event error.io.pci.ma-u@PCIEXFN/PCIFN; 1781event error.io.pci.ta-u@PCIEXFN/PCIFN; 1782event error.io.pci.ape-u@PCIEXFN/PCIFN; 1783event error.io.pci.source-ape-u@PCIFN; 1784event error.io.pci.target-ma-d@PCIFN; 1785event error.io.pci.target-rta-d@PCIFN; 1786event error.io.pci.badreq-pw-u@PCIEXFN/PCIFN; 1787event error.io.pci.badreq-drw-u@PCIEXFN/PCIFN; 1788event error.io.pci.source-perr-u@PCIFN; 1789event error.io.pci.source-dpdata-u@PCIFN; 1790event error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN; 1791event error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN; 1792event error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN; 1793event error.io.pci.perr-pw-u@PCIEXFN/PCIFN; 1794event error.io.pci.perr-dw-u@PCIEXFN/PCIFN; 1795event error.io.pci.perr-dr-u@PCIEXFN/PCIFN; 1796event error.io.pci.serr-u@PCIEXFN/PCIFN; 1797event error.io.pcix.scpe-u@PCIEXFN/PCIFN; 1798event error.io.pcix.source-scpe-u@PCIFN; 1799event error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN; 1800event error.io.pcix.spl-comp-ta-u@PCIEXFN/PCIFN; 1801event error.io.pcix.spl-comp-ma-d@PCIEXFN/PCIFN; 1802event error.io.pcix.spl-comp-ta-d@PCIEXFN/PCIFN; 1803event error.io.pcix.uscmd@PCIEXFN; 1804 1805event ereport.io.pcix.sec-spl-dis@PCIEXFN{within(5s)}; 1806event ereport.io.pciex.bdg.uscmd@PCIEXFN{within(5s)}; 1807event ereport.io.pciex.bdg.sec-perr@PCIEXFN{within(5s)}; 1808event ereport.io.pciex.bdg.sec-uadr@PCIEXFN{within(5s)}; 1809event ereport.io.pciex.bdg.sec-uat@PCIEXFN{within(5s)}; 1810event ereport.io.pciex.bdg.sec-serr@PCIEXFN{within(5s)}; 1811event ereport.io.pciex.bdg.sec-tex@PCIEXFN{within(5s)}; 1812event ereport.io.pciex.bdg.sec-rma@PCIEXFN{within(5s)}; 1813event ereport.io.pciex.bdg.sec-rta@PCIEXFN{within(5s)}; 1814event ereport.io.pciex.bdg.sec-ma-sc@PCIEXFN{within(5s)}; 1815event ereport.io.pciex.bdg.sec-ta-sc@PCIEXFN{within(5s)}; 1816event ereport.io.pci.dto@PCIEXFN{within(5s)}; 1817event ereport.io.pci.sec-rta@PCIEXFN{within(5s)}; 1818event ereport.io.pci.sec-ma@PCIEXFN{within(5s)}; 1819 1820/* 1821 * ma-u will only propagate on to pciex bus for non-posted accesses. It 1822 * is then represented as an unsupported request. 1823 */ 1824prop error.io.pci.ma-u@PCIEXFN/PCIFN (0)-> 1825 ereport.io.pciex.tl.ur@PCIEXFN; 1826 1827prop error.io.pci.ma-u@PCIEXFN/PCIFN { is_under(pciexrc, PCIEXFN/PCIFN) } (0)-> 1828 ereport.io.pci.sec-ma@pciexrc; 1829 1830prop error.io.pci.ma-u@PCIEXFN/PCIFN (2)-> 1831 ereport.io.pci.sec-ma@PCIEXFN, 1832 error.io.pciex.nonfatal@PCIEXFN; 1833 1834prop error.io.pci.target-ma-d@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) && 1835 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1836 ereport.io.pciex.bdg.sec-rma@PCIEXFN; 1837 1838/* 1839 * ta-u will only propagate on to pciex bus for non-posted accesses. It is 1840 * then represented as a completer abort. 1841 */ 1842prop error.io.pci.ta-u@PCIEXFN/PCIFN (0)-> 1843 ereport.io.pci.sta@PCIEXFN, 1844 ereport.io.pciex.tl.ca@PCIEXFN; 1845 1846prop error.io.pci.ta-u@PCIEXFN/PCIFN { is_under(pciexrc, PCIEXFN/PCIFN) } (0)-> 1847 ereport.io.pci.sec-rta@pciexrc; 1848 1849prop error.io.pci.ta-u@PCIEXFN/PCIFN (2)-> 1850 ereport.io.pci.sec-rta@PCIEXFN, 1851 error.io.pciex.nonfatal@PCIEXFN; 1852 1853prop error.io.pci.target-rta-d@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) && 1854 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1855 ereport.io.pciex.bdg.sec-rta@PCIEXFN; 1856 1857/* 1858 * PERR# on a delayed write is represented as an unsupported request 1859 */ 1860prop error.io.pci.perr-dw-u@PCIEXFN/PCIFN (1)-> 1861 ereport.io.pci.sec-mdpe@PCIEXFN; 1862 1863prop error.io.pci.perr-dw-u@PCIEXFN/PCIFN (0)-> 1864 error.io.pciex.flt-ur-u@PCIEXFN; 1865 1866prop error.io.pci.perr-pw-u@PCIEXFN/PCIFN (1)-> 1867 ereport.io.pci.sec-mdpe@PCIEXFN; 1868 1869prop error.io.pci.perr-pw-u@PCIEXFN/PCIFN (0)-> 1870 error.io.pciex.nonfatal@PCIEXFN; 1871 1872prop error.io.pci.perr-dr-u@PCIEXFN/PCIFN (1)-> 1873 error.io.pciex.nonfatal@PCIEXFN; 1874 1875prop error.io.pci.source-perr-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) && 1876 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1877 ereport.io.pciex.bdg.sec-perr@PCIEXFN; 1878 1879/* 1880 * If the bridge receives data with bad ecc/parity from pci/pci-x, it will 1881 * propagate onto pci express as a poisoned tlp 1882 */ 1883prop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (2)-> 1884 ereport.io.pci.sec-dpe@PCIEXFN, 1885 error.io.pciex.poiscomp-u@PCIEXFN; 1886 1887prop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (0)-> 1888 error.io.pciex.nonfatal@PCIEXFN; 1889 1890prop error.io.pci.dpdata-dr-u@PCIEXFN/PCIFN (1)-> 1891 ereport.io.pci.sec-mdpe@PCIEXFN, 1892 ereport.io.pci.mdpe@PCIEXFN; 1893 1894prop error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN (1)-> 1895 ereport.io.pci.sec-dpe@PCIEXFN; 1896 1897prop error.io.pci.dpdata-dw-u@PCIEXFN/PCIFN (0)-> 1898 error.io.pciex.nonfatal@PCIEXFN, 1899 error.io.pciex.poisreq-u@PCIEXFN, 1900 ereport.io.pci.ma@PCIEXFN, 1901 ereport.io.pci.sec-sta@PCIEXFN, 1902 error.io.pci.ta-drw-d@PCIEXFN/PCIFN; 1903 1904prop error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN (2)-> 1905 ereport.io.pci.sec-dpe@PCIEXFN, 1906 error.io.pciex.poisreq-u@PCIEXFN; 1907 1908prop error.io.pci.dpdata-pw-u@PCIEXFN/PCIFN (0)-> 1909 error.io.pciex.nonfatal@PCIEXFN, 1910 ereport.io.pci.ma@PCIEXFN; 1911 1912prop error.io.pci.source-dpdata-u@PCIFN { is_under(pciexrc, PCIFN) } (0)-> 1913 ereport.io.pciex.tl.ptlp@pciexrc, 1914 ereport.io.pciex.tl.ur@pciexrc; 1915 1916prop error.io.pci.source-dpdata-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) 1917 && SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1918 ereport.io.pciex.bdg.sec-ude@PCIEXFN; 1919 1920/* 1921 * If the bridge sees an address or attribute parity error it is considered 1922 * a fatal error. 1923 */ 1924prop error.io.pci.ape-u@PCIEXFN/PCIFN (2)-> 1925 ereport.io.pci.sec-dpe@PCIEXFN, 1926 error.io.pciex.fatal@PCIEXFN; 1927 1928prop error.io.pci.source-ape-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) && 1929 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1930 ereport.io.pciex.bdg.sec-uat@PCIEXFN, 1931 ereport.io.pciex.bdg.sec-uadr@PCIEXFN; 1932 1933prop error.io.pci.ape-u@PCIEXFN/PCIFN (0)-> 1934 ereport.io.pci.sec-rserr@PCIEXFN, 1935 ereport.io.pciex.bdg.sec-serr@PCIEXFN, 1936 ereport.io.pci.sec-sta@PCIEXFN; 1937 1938/* 1939 * If the bridge sees a split completion error (pci-x only) it could 1940 * result in a number of things 1941 * - unrecovered split completion message data error (uscmd). This would 1942 * happen on a pio write. A completer abort is returned to the initiator. 1943 * - for various faults in the split completion (eg address parity error) 1944 * we will respond with a target abort (which the child device will treat 1945 * as a split completion ta) 1946 * - for other faults we can't tell who send the split completion and so 1947 * just drop the request (which the child device sees as a split 1948 * completion ma) 1949 */ 1950prop error.io.pcix.scpe-u@PCIEXFN/PCIFN (0)-> 1951 ereport.io.pci.sec-dpe@PCIEXFN, 1952 ereport.io.pci.sec-rserr@PCIEXFN, 1953 ereport.io.pciex.bdg.sec-serr@PCIEXFN, 1954 ereport.io.pci.sec-sta@PCIEXFN, 1955 error.io.pciex.fatal@PCIEXFN; 1956 1957prop error.io.pcix.source-scpe-u@PCIFN1 { IS_BG(PCIEXFN) && IS_PCI_LF(PCIFN1) && 1958 SOURCE_ID_MATCHES_BDF && is_under(PCIEXFN, PCIFN1) } (0)-> 1959 ereport.io.pciex.bdg.sec-uat@PCIEXFN, 1960 ereport.io.pciex.bdg.sec-uadr@PCIEXFN; 1961 1962prop error.io.pcix.scpe-u@PCIEXFN/PCIFN (1)-> 1963 error.io.pcix.uscmd@PCIEXFN, 1964 error.io.pcix.spl-comp-ma-d@PCIEXFN/PCIFN, 1965 error.io.pcix.spl-comp-ta-d@PCIEXFN/PCIFN; 1966 1967prop error.io.pcix.uscmd@PCIEXFN (4)-> 1968 error.io.pciex.fatal@PCIEXFN, 1969 ereport.io.pci.sta@PCIEXFN, 1970 ereport.io.pciex.tl.ca@PCIEXFN, 1971 ereport.io.pciex.bdg.uscmd@PCIEXFN; 1972 1973prop error.io.pcix.uscmd@PCIEXFN { is_under(pciexrc, PCIEXFN) } (0)-> 1974 ereport.io.pci.sec-rta@pciexrc; 1975 1976/* 1977 * Similarly a child device may have responded with a master abort or 1978 * target abort to one of our split competions. The hardware just logs these. 1979 */ 1980prop error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN (3)-> 1981 error.io.pciex.nonfatal@PCIEXFN, 1982 ereport.io.pcix.sec-spl-dis@PCIEXFN, 1983 ereport.io.pciex.bdg.sec-ma-sc@PCIEXFN; 1984 1985prop error.io.pcix.spl-comp-ma-u@PCIEXFN/PCIFN (0)-> 1986 ereport.io.pci.sec-ma@PCIEXFN; 1987 1988prop error.io.pcix.spl-comp-ta-u@PCIEXFN/PCIFN (4)-> 1989 error.io.pciex.nonfatal@PCIEXFN, 1990 ereport.io.pcix.sec-spl-dis@PCIEXFN, 1991 ereport.io.pciex.bdg.sec-ta-sc@PCIEXFN, 1992 ereport.io.pci.sec-rta@PCIEXFN; 1993 1994/* 1995 * SERR# is considered fatal 1996 */ 1997prop error.io.pci.serr-u@PCIEXFN/PCIFN (3)-> 1998 error.io.pciex.fatal@PCIEXFN, 1999 ereport.io.pci.sec-rserr@PCIEXFN, 2000 ereport.io.pciex.bdg.sec-serr@PCIEXFN; 2001 2002/* 2003 * Retry time-out is nonfatal. The initial requester has stopped retrying so 2004 * there's nothing else the hardware can do but flag the error. 2005 */ 2006prop error.io.pci.retry-to-u@PCIEXFN/PCIFN (2)-> 2007 error.io.pciex.nonfatal@PCIEXFN, 2008 ereport.io.pciex.bdg.sec-tex@PCIEXFN; 2009 2010prop error.io.pci.retry-to-u@PCIEXFN/PCIFN (0)-> 2011 ereport.io.pci.sta@PCIEXFN, 2012 ereport.io.pci.dto@PCIEXFN; 2013 2014prop error.io.pci.retry-to-u@PCIEXFN/PCIFN { 2015 is_under(pciexrc, PCIEXFN/PCIFN) } (0)-> 2016 ereport.io.pci.sec-rta@pciexrc; 2017 2018/* 2019 * A bad dma request (eg with invalid address) propagates onto pci express 2020 * as a bad dma request. The end result may be a master abort or target abort 2021 * (depending on whether the child is pci-x or pci). 2022 */ 2023prop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN (0)-> 2024 ereport.io.pci.ma@PCIEXFN, 2025 ereport.io.pci.rta@PCIEXFN, 2026 ereport.io.pci.sec-sta@PCIEXFN; 2027 2028prop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN { 2029 is_under(pciexrc, PCIEXFN/PCIFN) } (0)-> 2030 ereport.io.pciex.tl.ur@pciexrc, 2031 ereport.io.pciex.tl.ca@pciexrc, 2032 ereport.io.pci.sec-sta@pciexrc; 2033 2034prop error.io.pci.badreq-pw-u@PCIEXFN/PCIFN { IS_SD(PCIEXFN1) && 2035 is_under(PCIEXFN1, PCIEXFN/PCIFN) } (0)-> 2036 ereport.io.pciex.tl.ur@PCIEXFN1, 2037 ereport.io.pciex.tl.ca@PCIEXFN1, 2038 ereport.io.pci.sec-sta@PCIEXFN1, 2039 error.io.pciex.nonfatal@PCIEXFN1; 2040 2041prop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN (0)-> 2042 ereport.io.pci.ma@PCIEXFN, 2043 ereport.io.pci.rta@PCIEXFN, 2044 ereport.io.pci.sec-sta@PCIEXFN; 2045 2046prop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN { 2047 is_under(pciexrc, PCIEXFN/PCIFN) } (0)-> 2048 ereport.io.pciex.tl.ur@pciexrc, 2049 ereport.io.pciex.tl.ca@pciexrc, 2050 ereport.io.pci.sec-sta@pciexrc; 2051 2052prop error.io.pci.badreq-drw-u@PCIEXFN/PCIFN { IS_SD(PCIEXFN1) && 2053 is_under(PCIEXFN1, PCIEXFN/PCIFN) } (0)-> 2054 ereport.io.pciex.tl.ur@PCIEXFN1, 2055 ereport.io.pciex.tl.ca@PCIEXFN1, 2056 ereport.io.pci.sec-sta@PCIEXFN1, 2057 error.io.pciex.nonfatal@PCIEXFN1; 2058 2059/* 2060 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2061 * target- propagations 2062 * 2063 * A Root Complex driver may generate "target-" ereports when knowledge of the 2064 * physical address associated with a fault allows the target device to be 2065 * determined. This is not a requirement of the Diagnosis Engine, but can be 2066 * valuable when available. 2067 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2068 */ 2069event error.io.pci.target-ma-d@PCIEXFN/PCIEXFN; 2070event error.io.pci.target-rta-d@PCIEXFN/PCIEXFN; 2071event error.io.pci.target-ma-d@PCIEXFN/PCIFN; 2072event error.io.pci.target-rta-d@PCIEXFN/PCIFN; 2073 2074event ereport.io.pci.target-rta@PCIEXFN{within(5s)}; 2075event ereport.io.pci.target-ma@PCIEXFN{within(5s)}; 2076 2077prop error.io.pci.target-ma-d@PCIEXFN (1)-> 2078 error.io.pci.target-ma-d@PCIEXFN/PCIEXFNHZ; 2079 2080prop error.io.pci.target-ma-d@PCIEXFN (1)-> 2081 error.io.pci.target-ma-d@PCIEXFN/PCIFNHZ; 2082 2083prop error.io.pci.target-ma-d@PCIEXFN (0)-> 2084 ereport.io.pci.target-ma@PCIEXFN; 2085 2086prop error.io.pci.target-rta-d@PCIEXFN (1)-> 2087 error.io.pci.target-rta-d@PCIEXFN/PCIEXFNHZ; 2088 2089prop error.io.pci.target-rta-d@PCIEXFN (1)-> 2090 error.io.pci.target-rta-d@PCIEXFN/PCIFNHZ; 2091 2092prop error.io.pci.target-rta-d@PCIEXFN (0)-> 2093 ereport.io.pci.target-rta@PCIEXFN; 2094 2095/* 2096 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2097 * stub unused pciex-pci bridge ereports 2098 * - ignore usc/sec-unex-spl 2099 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info) 2100 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe) 2101 * - ignore ecc.ce ereports for now (could do serd on these) 2102 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2103 */ 2104 2105event ereport.io.pciex.bdg.usc@PCIEXFN{within(5s)}; 2106event ereport.io.pcix.sec-unex-spl@PCIEXFN{within(5s)}; 2107event ereport.io.pcix.sec-spl-or@PCIEXFN{within(5s)}; 2108event ereport.io.pcix.sec-spl-dly@PCIEXFN{within(5s)}; 2109event ereport.io.pcix.sec-ecc.ce-addr@PCIEXFN{within(5s)}; 2110event ereport.io.pcix.sec-ecc.ce-attr@PCIEXFN{within(5s)}; 2111event ereport.io.pcix.sec-ecc.ce-data@PCIEXFN{within(5s)}; 2112event ereport.io.pcix.sec-ecc.ue-addr@PCIEXFN{within(5s)}; 2113event ereport.io.pcix.sec-ecc.ue-attr@PCIEXFN{within(5s)}; 2114event ereport.io.pcix.sec-ecc.ue-data@PCIEXFN{within(5s)}; 2115event ereport.io.pcix.sec-s-ce@PCIEXFN{within(5s)}; 2116event ereport.io.pcix.sec-s-ue@PCIEXFN{within(5s)}; 2117 2118event upset.io.pciex.discard-bdg@PCIEXFN; 2119 2120prop upset.io.pciex.discard-bdg@PCIEXFN (1)-> 2121 ereport.io.pciex.bdg.usc@PCIEXFN, 2122 ereport.io.pcix.sec-unex-spl@PCIEXFN, 2123 ereport.io.pcix.sec-spl-or@PCIEXFN, 2124 ereport.io.pcix.sec-spl-dly@PCIEXFN, 2125 ereport.io.pcix.sec-ecc.ce-addr@PCIEXFN, 2126 ereport.io.pcix.sec-ecc.ce-attr@PCIEXFN, 2127 ereport.io.pcix.sec-ecc.ce-data@PCIEXFN, 2128 ereport.io.pcix.sec-ecc.ue-addr@PCIEXFN, 2129 ereport.io.pcix.sec-ecc.ue-attr@PCIEXFN, 2130 ereport.io.pcix.sec-ecc.ue-data@PCIEXFN, 2131 ereport.io.pcix.sec-s-ce@PCIEXFN, 2132 ereport.io.pcix.sec-s-ue@PCIEXFN; 2133