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 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#pragma ident "%Z%%M% %I% %E% SMI" 27 28#pragma dictionary "PCI" 29 30#include <fm/topo_hc.h> 31 32#define PCI_DEV_FIT 1000 33#define PCI_BUS_FIT 500 34 35/* 36 * SERD parameters. 37 * 38 * Nonfatal dpe errors have to be recovered by the hardened driver which may 39 * cause intermittant performance/responsiveness problems, so we have tighter 40 * serd parameters for these. These are most likely errors in buffers/caches 41 * within devices and bridges, so use similar rates to cpu data cache parity 42 * errors. 43 * 44 * We will be more conservative about nonfatal internal errors reported 45 * by the driver. 46 */ 47#define NONFATAL_COUNT 6 48#define NONFATAL_TIME 2h 49#define NONFATAL_DPE_COUNT 3 50#define NONFATAL_DPE_TIME 168h 51 52#define PCIFN pcibus/pcidev/pcifn 53#define PCIFNHZ pcibus<>/pcidev<>/pcifn<> 54 55engine serd.io.device.nonfatal@PCIFN, 56 N=NONFATAL_COUNT, T=NONFATAL_TIME; 57 58engine serd.io.pci.nf-dpe@PCIFN, 59 N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME; 60 61engine serd.io.pci.nf-dpe-bus@pcibus, 62 N=NONFATAL_DPE_COUNT, T=NONFATAL_DPE_TIME; 63 64#define IS_LEAF \ 65 (confprop_defined(PCIFN, TOPO_PCI_CLASS) && \ 66 confprop(PCIFN, TOPO_PCI_CLASS) != "60400" && \ 67 confprop(PCIFN, TOPO_PCI_CLASS) != "60401") 68 69#define IS_BDG \ 70 (confprop(PCIFN, TOPO_PCI_CLASS) == "60400" || \ 71 confprop(PCIFN, TOPO_PCI_CLASS) == "60401") 72 73#define FD_IS_LEAF \ 74 (confprop_defined(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) && \ 75 confprop(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) != "60400" && \ 76 confprop(pcibus/pcidev[fromdev]/pcifn, TOPO_PCI_CLASS) != "60401") 77 78#define IS_LF(f) (confprop_defined(f, TOPO_PCI_CLASS) && \ 79 confprop(f, TOPO_PCI_CLASS) != "60400" && \ 80 confprop(f, TOPO_PCI_CLASS) != "60401") 81/* 82 * note general rule for errors is that for upstream propagations 83 * @PCIFN is the sending device while for downstream 84 * propagations it is the receiving device. 85 */ 86 87event fault.io.pci.device-interr-corr@PCIFN, 88 engine=serd.io.device.nonfatal@PCIFN, FITrate=PCI_DEV_FIT; 89 90event fault.io.pci.device-interr-unaf@PCIFN, 91 engine=serd.io.pci.nf-dpe@PCIFN, FITrate=PCI_DEV_FIT; 92 93event fault.io.pci.device-interr-deg@PCIFN, FITrate=PCI_DEV_FIT, retire=0; 94 95event fault.io.pci.device-interr@PCIFN, FITrate=PCI_DEV_FIT; 96 97event fault.io.pci.device-invreq@PCIFN, FITrate=PCI_DEV_FIT; 98 99event fault.io.pci.device-noresp@PCIFN, FITrate=PCI_DEV_FIT; 100 101/* 102 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 103 * A faulty hostbridge may cause: 104 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 105 * - nr-pw-d: the device not to respond to an upstream request 106 * - nr-drw-d: the device not to respond to an upstream request 107 * - ta-pw-d: the device to send a target abort to an upstream request 108 * - ta-drw-d: the device to send a target abort to an upstream request 109 * - serr-u: the device to report itself in error 110 * - badreq-pw-d:a bad downstream request - not parity error (may cause target 111 * to target abort or master abort) 112 * - badreq-drw-d:a bad downstream request - not parity error (may cause 113 * target to target abort or master abort) 114 * - ape-d: address/parity to get corrupted during downstream transmission 115 * - scpe-d: split completion to get corrupted during downstream transmission 116 * - dpe-d: the device to transfer bad data and/or bad parity downstream 117 * - retry-to-d: the device to exceed the set timeout for a delayed 118 * transaction retry. 119 */ 120#define PCI_TO_HB pcibus/pcidev<todev>/pcifn<> {fromdev != 32 && todev == 32} 121#define PCI_FROM_HB pcibus/pcidev<todev>/pcifn<> {fromdev == 32 && todev != 32} 122 123event error.io.pci.retry-to-d@PCIFN; 124event error.io.pci.nr-pw-d@PCIFN; 125event error.io.pci.nr-drw-d@PCIFN; 126event error.io.pci.ta-pw-d@PCIFN; 127event error.io.pci.ta-drw-d@PCIFN; 128event error.io.pci.badreq-pw-d@PCIFN; 129event error.io.pci.badreq-drw-d@PCIFN; 130event error.io.pci.f-dpe-d@PCIFN; 131event error.io.pci.deg-dpe-d@PCIFN; 132event error.io.pci.nf-dpe-d@PCIFN; 133event error.io.pci.ape-d@PCIFN; 134event error.io.pci.ape-u@PCIFN; 135event error.io.pci.dpdata-dw-d@PCIFN; 136event error.io.pci.dpdata-pw-d@PCIFN; 137event error.io.pci.dpdata-dr-d@PCIFN; 138event error.io.pci.dpdata-pw-u@PCIFN; 139event error.io.pci.dpdata-dw-u@PCIFN; 140event error.io.pci.dpdata-dr-u@PCIFN; 141event error.io.pci.ta-u@PCIFN; 142event error.io.pci.ma-u@PCIFN; 143event error.io.pci.perr-dw-u@PCIFN; 144event error.io.pci.perr-pw-u@PCIFN; 145event error.io.pci.perr-dr-u@PCIFN; 146event error.io.pci.badreq-drw-u@PCIFN; 147event error.io.pci.badreq-pw-u@PCIFN; 148event error.io.pci.device-serr@PCIFN; 149event error.io.pci.device-ta@PCIFN; 150event error.io.pci.device-par@PCIFN; 151event error.io.pci.serr-u@PCIFN; 152event error.io.pcix.scpe-d@PCIFN; 153event error.io.pcix.scpe-u@PCIFN; 154event error.io.pcix.spl-comp-ma-u@PCIFN; 155event error.io.pcix.spl-comp-ta-u@PCIFN; 156event error.io.pcix.spl-comp-ma-d@PCIFN; 157event error.io.pcix.spl-comp-ta-d@PCIFN; 158 159event ereport.io.pci.ma@PCIFN{within(5s)}; 160event ereport.io.pci.rta@PCIFN{within(5s)}; 161event ereport.io.pci.mdpe@PCIFN{within(5s)}; 162event ereport.io.pci.sta@PCIFN{within(5s)}; 163event ereport.io.pci.sserr@PCIFN{within(5s)}; 164event ereport.io.pci.dpe@PCIFN{within(5s)}; 165event ereport.io.pci.target-mdpe@PCIFN{within(5s)}; 166event ereport.io.pci.target-rta@PCIFN{within(5s)}; 167event ereport.io.pci.target-ma@PCIFN{within(5s)}; 168event ereport.io.pcix.discard@PCIFN{within(5s)}; 169 170prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)-> 171 error.io.pci.nr-pw-d@PCI_FROM_HB, 172 error.io.pci.nr-drw-d@PCI_FROM_HB, 173 error.io.pci.retry-to-d@PCI_FROM_HB; 174 175prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn (0)-> 176 error.io.pci.badreq-pw-d@PCI_FROM_HB, 177 error.io.pci.badreq-drw-d@PCI_FROM_HB; 178 179prop fault.io.pci.device-interr-unaf@pcibus/pcidev[fromdev]/pcifn (0)-> 180 error.io.pci.nf-dpe-d@PCI_FROM_HB; 181 182prop fault.io.pci.device-interr-deg@pcibus/pcidev[fromdev]/pcifn (0)-> 183 error.io.pci.deg-dpe-d@PCI_FROM_HB; 184 185prop fault.io.pci.device-interr@PCIFN (0)-> 186 error.io.pci.device-par@PCIFN, 187 error.io.pci.device-ta@PCIFN, 188 error.io.pci.device-serr@PCIFN; 189 190prop error.io.pci.device-par@pcibus/pcidev[fromdev]/pcifn (1)-> 191 error.io.pci.f-dpe-d@PCI_FROM_HB, 192 error.io.pcix.scpe-d@PCI_FROM_HB, 193 error.io.pci.ape-d@PCI_FROM_HB; 194 195prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)-> 196 error.io.pci.ta-pw-d@PCI_FROM_HB, 197 error.io.pci.ta-drw-d@PCI_FROM_HB; 198 199prop error.io.pci.device-ta@pcibus/pcidev[fromdev]/pcifn (1)-> 200 ereport.io.pci.sta@pcibus/pcidev<todev>/pcifn { 201 todev == fromdev && fromdev == 32 }; 202 203prop error.io.pci.device-serr@PCIFN (2)-> 204 error.io.pci.serr-u@PCIFN, 205 ereport.io.pci.sserr@PCIFN; 206 207/* 208 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 209 * ereport generation rules for hostbridge 210 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 211 */ 212prop error.io.pci.dpdata-pw-u@pcibus/pcidev[fromdev]/pcifn (1)-> 213 ereport.io.pci.dpe@PCI_TO_HB; 214 215prop error.io.pci.dpdata-dw-u@pcibus/pcidev[fromdev]/pcifn (1)-> 216 ereport.io.pci.dpe@PCI_TO_HB; 217 218prop error.io.pci.dpdata-dr-u@pcibus/pcidev[fromdev]/pcifn (2)-> 219 ereport.io.pci.mdpe@PCI_TO_HB, 220 ereport.io.pci.dpe@PCI_TO_HB; 221 222prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (3)-> 223 ereport.io.pci.dpe@PCI_TO_HB, 224 error.io.pci.serr-u@PCI_TO_HB, 225 ereport.io.pci.sserr@PCI_TO_HB; 226 227prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)-> 228 ereport.io.pci.sta@PCI_TO_HB; 229 230prop error.io.pci.ma-u@pcibus/pcidev[fromdev]/pcifn (1)-> 231 ereport.io.pci.ma@PCI_TO_HB; 232 233prop error.io.pci.ta-u@pcibus/pcidev[fromdev]/pcifn (1)-> 234 ereport.io.pci.rta@PCI_TO_HB; 235 236prop error.io.pci.perr-dw-u@pcibus/pcidev[fromdev]/pcifn (1)-> 237 ereport.io.pci.mdpe@PCI_TO_HB; 238 239prop error.io.pci.perr-pw-u@pcibus/pcidev[fromdev]/pcifn (1)-> 240 ereport.io.pci.mdpe@PCI_TO_HB; 241 242prop error.io.pci.badreq-drw-u@pcibus/pcidev[fromdev]/pcifn (0)-> 243 ereport.io.pci.sta@PCI_TO_HB; 244 245prop error.io.pci.badreq-pw-u@pcibus/pcidev[fromdev]/pcifn (0)-> 246 ereport.io.pci.sta@PCI_TO_HB; 247 248prop error.io.pcix.scpe-u@PCIFN (1)-> 249 error.io.pcix.spl-comp-ma-d@PCIFN, 250 error.io.pcix.spl-comp-ta-d@PCIFN; 251 252prop error.io.pcix.scpe-u@pcibus/pcidev[fromdev]/pcifn (0)-> 253 ereport.io.pci.dpe@PCI_TO_HB, 254 error.io.pci.serr-u@PCI_TO_HB, 255 ereport.io.pci.sserr@PCI_TO_HB, 256 ereport.io.pci.sta@PCI_TO_HB; 257 258prop error.io.pcix.spl-comp-ma-u@pcibus/pcidev[fromdev]/pcifn (3)-> 259 ereport.io.pcix.discard@PCI_TO_HB, 260 error.io.pci.serr-u@PCI_TO_HB, 261 ereport.io.pci.sserr@PCI_TO_HB; 262 263prop error.io.pcix.spl-comp-ta-u@pcibus/pcidev[fromdev]/pcifn (3)-> 264 ereport.io.pcix.discard@PCI_TO_HB, 265 error.io.pci.serr-u@PCI_TO_HB, 266 ereport.io.pci.sserr@PCI_TO_HB; 267 268/* 269 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 270 * A faulty PCI leaf device or pci-pci bridge may cause: 271 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 272 * - nr-pw-u: the device not to respond to a valid downstream request 273 * - nr-drw-u: the device not to respond to a valid downstream request 274 * - ta-pw-u: the device responds with a ta to a valid downstream 275 * request 276 * - ta-drw-u: the device responds with a ta to a valid downstream 277 * request 278 * - serr-u: the device to report itself in error 279 * - badreq-pw-u: a bad upstream request (may cause target to target 280 * abort or master abort) 281 * - badreq-drw-u: a bad upstream request (may cause target to target 282 * abort or master abort) 283 * - ape-u: the transfer of bad address/parity upstream. 284 * - scpe-u: the transfer of bad split completion upstream. 285 * - dpe-u: the device to deliver bad data/parity upstream. 286 * - retry-to-u: the device to exceed the set timeout for a delayed 287 * transaction retry. 288 * 289 * A faulty PCI-X leaf device or bridge may also cause: 290 * 291 * - tx-oor: the device sends a byte count larger than the completers 292 * address range. 293 * - rx-unex-sc: the device recieved a split completion with a tag 294 * which does not match any outstanding transaction. 295 */ 296 297#define PCI_NOT_HB pcibus/pcidev[fromdev]/pcifn {fromdev != 32} 298 299event error.io.pci.retry-to-u@PCIFN; 300event error.io.pci.nr-pw-u@PCIFN; 301event error.io.pci.nr-drw-u@PCIFN; 302event error.io.pci.ta-pw-u@PCIFN; 303event error.io.pci.ta-drw-u@PCIFN; 304event error.io.pci.f-dpe-u@PCIFN; 305event error.io.pci.deg-dpe-u@PCIFN; 306event error.io.pci.nf-dpe-u@PCIFN; 307event error.io.pci.flt-dpdata-pw-u@PCIFN; 308event error.io.pci.flt-dpdata-dw-u@PCIFN; 309event error.io.pci.flt-dpdata-dr-u@PCIFN; 310event error.io.pci.source-dpdata-u@PCIFN; 311event error.io.pci.f-source-dpdata-u@PCIFN; 312event error.io.pci.f-source-dpdata-u@PCIFN/PCIFN; 313event error.io.pci.deg-source-dpdata-u@PCIFN; 314event error.io.pci.deg-source-dpdata-u@PCIFN/PCIFN; 315event error.io.pci.nf-source-dpdata-u@PCIFN; 316event error.io.pci.nf-source-dpdata-u@PCIFN/PCIFN; 317event error.io.pci.perr-d@PCIFN; 318event error.io.pci.target-mdpe-d@PCIFN; 319event error.io.pci.target-mdpe-d@PCIFN/PCIFN; 320event error.io.pci.target-rta-d@PCIFN/PCIFN; 321event error.io.pci.target-ma-d@PCIFN/PCIFN; 322event error.io.pcix.tx-oor@PCIFN; 323event error.io.pcix.rx-unex-sc@PCIFN; 324event error.io.device.nf-device@PCIFN; 325event error.io.device.f-device@PCIFN; 326event error.io.device.deg-device@PCIFN; 327event error.io.service.restored@PCIFN; 328 329event ereport.io.pcix.oor@PCIFN{within(5s)}; 330event ereport.io.pcix.unex-sc@PCIFN{within(5s)}; 331event ereport.io.service.lost@PCIFN{within(5s)}; 332event ereport.io.service.degraded@PCIFN{within(5s)}; 333event ereport.io.service.unaffected@PCIFN{within(5s)}; 334event ereport.io.service.restored@PCIFN{within(30s)}; 335 336prop fault.io.pci.device-noresp@pcibus/pcidev[fromdev]/pcifn (0)-> 337 error.io.pci.nr-pw-u@PCI_NOT_HB, 338 error.io.pci.nr-drw-u@PCI_NOT_HB, 339 error.io.pci.retry-to-u@PCI_NOT_HB; 340 341prop fault.io.pci.device-interr-corr@pcibus/pcidev[fromdev]/pcifn (0)-> 342 error.io.device.nf-device@PCI_NOT_HB; 343 344prop fault.io.pci.device-interr-unaf@pcibus/pcidev[fromdev]/pcifn (0)-> 345 error.io.pci.nf-dpe-u@PCI_NOT_HB; 346 347prop fault.io.pci.device-interr-deg@pcibus/pcidev[fromdev]/pcifn (0)-> 348 error.io.device.deg-device@PCI_NOT_HB, 349 error.io.pci.deg-dpe-u@PCI_NOT_HB; 350 351prop fault.io.pci.device-interr@pcibus/pcidev[fromdev]/pcifn (0)-> 352 error.io.pci.ta-pw-u@PCI_NOT_HB, 353 error.io.pci.ta-drw-u@PCI_NOT_HB, 354 error.io.pci.serr-u@PCI_NOT_HB, 355 error.io.pci.ape-u@PCI_NOT_HB, 356 error.io.pci.f-dpe-u@PCI_NOT_HB, 357 error.io.device.f-device@PCI_NOT_HB, 358 error.io.pcix.scpe-u@PCI_NOT_HB, 359 error.io.pcix.tx-oor@PCI_NOT_HB, 360 error.io.pcix.rx-unex-sc@PCI_NOT_HB; 361 362prop fault.io.pci.device-invreq@pcibus/pcidev[fromdev]/pcifn {FD_IS_LEAF} (0)-> 363 error.io.pci.badreq-drw-u@PCI_NOT_HB, 364 error.io.pci.badreq-pw-u@PCI_NOT_HB; 365 366prop error.io.pcix.tx-oor@PCIFN (1)-> 367 ereport.io.pcix.oor@PCIFN; 368 369prop error.io.pcix.rx-unex-sc@pcibus/pcidev[fromdev]/pcifn (1)-> 370 ereport.io.pcix.unex-sc@pcibus/pcidev<todev>/pcifn<> {fromdev != todev}; 371 372prop error.io.pci.f-dpe-u@PCIFN (1)-> 373 error.io.pci.flt-dpdata-pw-u@PCIFN, 374 error.io.pci.flt-dpdata-dw-u@PCIFN, 375 error.io.pci.flt-dpdata-dr-u@PCIFN; 376 377prop error.io.pci.f-dpe-u@PCIFN (1)-> 378 error.io.pci.f-source-dpdata-u@PCIFN; 379 380prop error.io.pci.f-source-dpdata-u@PCIFN (1)-> 381 error.io.pci.f-source-dpdata-u@PCIFN/PCIFNHZ; 382 383prop error.io.pci.f-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)-> 384 error.io.pci.source-dpdata-u@PCIFN; 385 386prop error.io.pci.f-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (0)-> 387 ereport.io.service.lost@PCIFN; 388 389prop error.io.pci.deg-dpe-u@PCIFN (1)-> 390 error.io.pci.flt-dpdata-pw-u@PCIFN, 391 error.io.pci.flt-dpdata-dw-u@PCIFN, 392 error.io.pci.flt-dpdata-dr-u@PCIFN; 393 394prop error.io.pci.deg-dpe-u@PCIFN (1)-> 395 error.io.pci.deg-source-dpdata-u@PCIFN; 396 397prop error.io.pci.deg-source-dpdata-u@PCIFN (1)-> 398 error.io.pci.deg-source-dpdata-u@PCIFN/PCIFNHZ; 399 400prop error.io.pci.deg-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)-> 401 error.io.pci.source-dpdata-u@PCIFN; 402 403prop error.io.pci.deg-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)-> 404 ereport.io.service.degraded@PCIFN; 405 406prop error.io.pci.nf-dpe-u@PCIFN (1)-> 407 error.io.pci.flt-dpdata-pw-u@PCIFN, 408 error.io.pci.flt-dpdata-dw-u@PCIFN, 409 error.io.pci.flt-dpdata-dr-u@PCIFN; 410 411prop error.io.pci.nf-dpe-u@PCIFN (1)-> 412 error.io.pci.nf-source-dpdata-u@PCIFN; 413 414prop error.io.pci.nf-source-dpdata-u@PCIFN (1)-> 415 error.io.pci.nf-source-dpdata-u@PCIFN/PCIFNHZ; 416 417prop error.io.pci.nf-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)-> 418 error.io.pci.source-dpdata-u@PCIFN; 419 420prop error.io.pci.nf-source-dpdata-u@PCIFN { IS_LF(PCIFN) } (1)-> 421 ereport.io.service.unaffected@PCIFN, 422 error.io.service.restored@PCIFN; 423 424prop error.io.pci.flt-dpdata-pw-u@PCIFN (1)-> 425 error.io.pci.dpdata-pw-u@PCIFN; 426 427prop error.io.pci.flt-dpdata-pw-u@PCIFN { IS_BDG } (1)-> 428 error.io.pci.serr-u@PCIFN; 429 430prop error.io.pci.flt-dpdata-dw-u@PCIFN (2)-> 431 error.io.pci.perr-d@PCIFN, 432 error.io.pci.dpdata-dw-u@PCIFN; 433 434prop error.io.pci.flt-dpdata-dr-u@PCIFN (2)-> 435 error.io.pci.dpdata-dr-u@PCIFN, 436 error.io.pci.target-mdpe-d@PCIFN; 437 438/* 439 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 440 * A faulty pci-pci bridge may also cause 441 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 442 * - nr-pw-d: the device not to respond to a valid upstream request 443 * - nr-drw-d: the device not to respond to a valid upstream request 444 * - ta-pw-d: the device responds with a ta to a valid upstream 445 * request 446 * - ta-drw-d: the device responds with a ta to a valid upstream 447 * request 448 * - ape-d: address/parity to get corrupted during downstream transmission. 449 * - scpe-d: split completion gets corrupted during downstream transmission. 450 * - dpe-d: data/parity to get corrupted during downstream transmission. 451 * - retry-to-d: the device to exceed the set timeout for a delayed 452 * transaction retry. 453 */ 454 455event error.io.pci.ape-d@PCIFN/PCIFN; 456event error.io.pci.f-dpe-d@PCIFN/PCIFN; 457event error.io.pci.deg-dpe-d@PCIFN/PCIFN; 458event error.io.pci.nf-dpe-d@PCIFN/PCIFN; 459event error.io.pci.retry-to-d@PCIFN/PCIFN; 460event error.io.pci.nr-pw-d@PCIFN/PCIFN; 461event error.io.pci.nr-drw-d@PCIFN/PCIFN; 462event error.io.pci.ta-pw-d@PCIFN/PCIFN; 463event error.io.pci.ta-drw-d@PCIFN/PCIFN; 464event error.io.pcix.scpe-d@PCIFN/PCIFN; 465 466prop fault.io.pci.device-noresp@PCIFN (0)-> 467 error.io.pci.nr-pw-d@PCIFN/PCIFN, 468 error.io.pci.nr-drw-d@PCIFN/PCIFN, 469 error.io.pci.retry-to-d@PCIFN/PCIFN; 470 471prop fault.io.pci.device-interr-unaf@PCIFN (0)-> 472 error.io.pci.nf-dpe-d@PCIFN/PCIFN; 473 474prop fault.io.pci.device-interr-deg@PCIFN (0)-> 475 error.io.pci.deg-dpe-d@PCIFN/PCIFN; 476 477prop fault.io.pci.device-interr@PCIFN (0)-> 478 error.io.pci.ta-pw-d@PCIFN/PCIFN, 479 error.io.pci.ta-drw-d@PCIFN/PCIFN, 480 error.io.pci.ape-d@PCIFN/PCIFN, 481 error.io.pcix.scpe-d@PCIFN/PCIFN, 482 error.io.pci.f-dpe-d@PCIFN/PCIFN; 483 484/* 485 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 486 * A faulty PCI bus may cause: 487 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 488 * - ape-d: address/parity to get corrupted during downstream transmission. 489 * - scpe-d: split completion gets corrupted during downstream transmission. 490 * - dpe-d: data/parity to get corrupted during downstream transmission. 491 * - ape-u: address/parity to get corrupted during upstream transmission. 492 * - dpe-u: data/parity to get corrupted during read upstream transmission. 493 * - scpe-u: split completion to get corrupted during upstream transmission. 494 */ 495 496event fault.io.pci.bus-linkerr-unaf@pcibus, 497 engine=serd.io.pci.nf-dpe-bus@pcibus, FITrate=PCI_BUS_FIT; 498 499event fault.io.pci.bus-linkerr-deg@pcibus, FITrate=PCI_BUS_FIT, retire=0; 500 501event fault.io.pci.bus-linkerr@pcibus, FITrate=PCI_BUS_FIT; 502 503prop fault.io.pci.bus-linkerr-unaf@pcibus (0)-> 504 error.io.pci.nf-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32}, 505 error.io.pci.nf-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32}; 506 507prop fault.io.pci.bus-linkerr-deg@pcibus (0)-> 508 error.io.pci.deg-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32}, 509 error.io.pci.deg-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32}; 510 511prop fault.io.pci.bus-linkerr@pcibus (0)-> 512 error.io.pci.ape-d@pcibus/pcidev<todev>/pcifn { todev != 32}, 513 error.io.pci.f-dpe-d@pcibus/pcidev<todev>/pcifn { todev != 32}, 514 error.io.pci.ape-u@pcibus/pcidev<todev>/pcifn { todev != 32}, 515 error.io.pci.f-dpe-u@pcibus/pcidev<todev>/pcifn { todev != 32}, 516 error.io.pcix.scpe-d@pcibus/pcidev<todev>/pcifn { todev != 32}, 517 error.io.pcix.scpe-u@pcibus/pcidev<todev>/pcifn { todev != 32}, 518 error.io.pcix.tx-oor@pcibus/pcidev<todev>/pcifn { todev != 32}, 519 error.io.pcix.rx-unex-sc@pcibus/pcidev<todev>/pcifn { todev != 32}; 520 521/* 522 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 523 * recursive rules for pci-pci bridges 524 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 525 */ 526 527event error.io.pci.serr-u@PCIFN/PCIFN; 528event error.io.pci.perr-dw-u@PCIFN/PCIFN; 529event error.io.pci.perr-pw-u@PCIFN/PCIFN; 530event error.io.pci.perr-d@PCIFN/PCIFN; 531event error.io.pci.dpdata-pw-u@PCIFN/PCIFN; 532event error.io.pci.dpdata-dw-u@PCIFN/PCIFN; 533event error.io.pci.dpdata-dr-u@PCIFN/PCIFN; 534event error.io.pci.dpdata-pw-fwd-d@PCIFN; 535event error.io.pci.dpdata-pw-fwd-d@PCIFN/PCIFN; 536event error.io.pci.dpdata-dw-fwd-d@PCIFN; 537event error.io.pci.dpdata-dw-fwd-d@PCIFN/PCIFN; 538event error.io.pci.dpdata-dr-fwd-d@PCIFN; 539event error.io.pci.dpdata-dr-fwd-d@PCIFN/PCIFN; 540event error.io.pci.source-perr-u@PCIFN; 541event error.io.pci.leaf-ape-d@PCIFN; 542event error.io.pci.ape-u@PCIFN/PCIFN; 543event error.io.pci.source-ape-u@PCIFN; 544event error.io.pci.badreq-pw-d@PCIFN/PCIFN; 545event error.io.pci.badreq-drw-d@PCIFN/PCIFN; 546event error.io.pci.badreq-pw-u@PCIFN/PCIFN; 547event error.io.pci.badreq-drw-u@PCIFN/PCIFN; 548event error.io.pci.ta-d@PCIFN; 549event error.io.pci.ta-d@PCIFN/PCIFN; 550event error.io.pci.ta-u@PCIFN/PCIFN; 551event error.io.pci.target-rta-d@PCIFN; 552event error.io.pci.target-ma-d@PCIFN; 553event error.io.pci.nr-pw-u@PCIFN/PCIFN; 554event error.io.pci.ta-pw-u@PCIFN/PCIFN; 555event error.io.pci.retry-to-u@PCIFN/PCIFN; 556event error.io.pcix.scpe-u@PCIFN/PCIFN; 557event error.io.pcix.source-scpe-u@PCIFN; 558event error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN; 559event error.io.pcix.spl-comp-ta-u@PCIFN/PCIFN; 560event error.io.pci.ma-u@PCIFN/PCIFN; 561 562event ereport.io.pci.sec-ma@PCIFN{within(5s)}; 563event ereport.io.pci.sec-sta@PCIFN{within(5s)}; 564event ereport.io.pci.sec-rta@PCIFN{within(5s)}; 565event ereport.io.pci.sec-mdpe@PCIFN{within(5s)}; 566event ereport.io.pci.sec-dpe@PCIFN{within(5s)}; 567event ereport.io.pci.sec-rserr@PCIFN{within(5s)}; 568event ereport.io.pci.dto@PCIFN{within(5s)}; 569event ereport.io.pcix.sec-spl-dis@PCIFN{within(5s)}; 570event ereport.io.pcix.spl-dis@PCIFN{within(5s)}; 571 572/* 573 * SERR# can propagate upstream and may be seen by other devices on the bus 574 */ 575prop error.io.pci.serr-u@pcibus/pcidev[fromdev]/pcifn (0)-> 576 ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {todev!=fromdev}; 577 578prop error.io.pci.serr-u@PCIFN { IS_BDG } (1)-> 579 ereport.io.pci.sserr@PCIFN; 580 581prop error.io.pci.serr-u@PCIFN/PCIFN (2)-> 582 ereport.io.pci.sec-rserr@PCIFN, 583 error.io.pci.serr-u@PCIFN; 584 585/* 586 * PERR# can propagate upstream for delayed writes. For posted writes 587 * it turns into an SERR#. 588 */ 589prop error.io.pci.perr-dw-u@PCIFN/PCIFN (2)-> 590 ereport.io.pci.sec-mdpe@PCIFN, 591 error.io.pci.perr-dw-u@PCIFN; 592 593prop error.io.pci.perr-pw-u@PCIFN/PCIFN (2)-> 594 ereport.io.pci.sec-mdpe@PCIFN, 595 error.io.pci.serr-u@PCIFN; 596 597/* 598 * PERR# can propagate downstream (only for downstream dw parity error) 599 */ 600prop error.io.pci.perr-d@PCIFN { IS_LEAF } (0)-> 601 ereport.io.pci.mdpe@PCIFN; 602 603prop error.io.pci.perr-d@PCIFN { IS_BDG } (1)-> 604 ereport.io.pci.mdpe@PCIFN; 605 606prop error.io.pci.perr-d@PCIFN (1)-> 607 error.io.pci.perr-d@PCIFN/PCIFNHZ; 608 609/* 610 * downstream target ereports are for any descendant device 611 * 612 * A hostbridge driver may generate "target-" ereports when knowledge of the 613 * physical address associated with a fault allows the target device to be 614 * determined. This is not a requirement of the Diagnosis Engine, but can be 615 * valuable when available. 616 */ 617prop error.io.pci.target-mdpe-d@PCIFN (0)-> 618 ereport.io.pci.target-mdpe@PCIFN; 619 620prop error.io.pci.target-mdpe-d@PCIFN (1)-> 621 error.io.pci.target-mdpe-d@PCIFN/PCIFNHZ; 622 623prop error.io.pci.target-rta-d@PCIFN (0)-> 624 ereport.io.pci.target-rta@PCIFN; 625 626prop error.io.pci.target-rta-d@PCIFN (1)-> 627 error.io.pci.target-rta-d@PCIFN/PCIFNHZ; 628 629prop error.io.pci.target-ma-d@PCIFN (0)-> 630 ereport.io.pci.target-ma@PCIFN; 631 632prop error.io.pci.target-ma-d@PCIFN (1)-> 633 error.io.pci.target-ma-d@PCIFN/PCIFNHZ; 634 635/* 636 * target aborts propagate upstream 637 */ 638prop error.io.pci.ta-u@PCIFN { IS_BDG } (1)-> 639 ereport.io.pci.sta@PCIFN; 640 641prop error.io.pci.ta-u@PCIFN { IS_LEAF } (0)-> 642 ereport.io.pci.sta@PCIFN; 643 644prop error.io.pci.ta-u@PCIFN/PCIFN (2)-> 645 ereport.io.pci.sec-rta@PCIFN, 646 error.io.pci.ta-u@PCIFN; 647 648/* 649 * bad data (ie invalid but not an ape or dpe) can propagate downstream, 650 * and at some point may result in a target or master abort 651 */ 652prop error.io.pci.badreq-pw-d@PCIFN (1)-> 653 error.io.pci.badreq-pw-d@PCIFN/PCIFNHZ, 654 error.io.pci.nr-pw-u@PCIFN, 655 error.io.pci.ta-pw-u@PCIFN; 656 657prop error.io.pci.badreq-pw-d@PCIFN { IS_LEAF } (0)-> 658 error.io.pci.nr-pw-u@PCIFN, 659 error.io.pci.ta-pw-u@PCIFN; 660 661prop error.io.pci.badreq-drw-d@PCIFN (1)-> 662 error.io.pci.badreq-drw-d@PCIFN/PCIFNHZ, 663 error.io.pci.nr-drw-u@PCIFN, 664 error.io.pci.ta-drw-u@PCIFN; 665 666prop error.io.pci.badreq-drw-d@PCIFN { IS_LEAF } (0)-> 667 error.io.pci.nr-drw-u@PCIFN, 668 error.io.pci.ta-drw-u@PCIFN; 669 670prop error.io.pci.nr-pw-u@PCIFN/PCIFN (2)-> 671 ereport.io.pci.sec-ma@PCIFN, 672 error.io.pci.serr-u@PCIFN; 673 674prop error.io.pci.ta-pw-u@PCIFN { IS_LEAF } (0)-> 675 ereport.io.pci.sta@PCIFN; 676 677prop error.io.pci.ta-pw-u@PCIFN { IS_BDG } (1)-> 678 ereport.io.pci.sta@PCIFN; 679 680prop error.io.pci.ta-pw-u@PCIFN/PCIFN (2)-> 681 ereport.io.pci.sec-rta@PCIFN, 682 error.io.pci.serr-u@PCIFN; 683 684prop error.io.pci.nr-drw-u@PCIFN (1)-> 685 error.io.pci.ma-u@PCIFN; 686 687prop error.io.pci.nr-drw-u@PCIFN (1)-> 688 error.io.pci.target-rta-d@PCIFN, 689 error.io.pci.target-ma-d@PCIFN; 690 691prop error.io.pci.ma-u@PCIFN/PCIFN (1)-> 692 ereport.io.pci.sec-ma@PCIFN; 693 694prop error.io.pci.ma-u@PCIFN/PCIFN (1)-> 695 error.io.pci.ma-u@PCIFN, 696 error.io.pci.ta-u@PCIFN; 697 698prop error.io.pci.ta-drw-u@PCIFN (1)-> 699 error.io.pci.ta-u@PCIFN; 700 701prop error.io.pci.ta-drw-u@PCIFN (1)-> 702 error.io.pci.target-rta-d@PCIFN; 703 704/* 705 * bad data (ie invalid but not an ape or dpe) can propagate upstream, 706 * and at some point may result in a target or master abort 707 */ 708prop error.io.pci.badreq-pw-u@PCIFN/PCIFN (1)-> 709 error.io.pci.badreq-pw-u@PCIFN, 710 error.io.pci.nr-pw-d@PCIFN/PCIFN, 711 error.io.pci.ta-pw-d@PCIFN/PCIFN; 712 713prop error.io.pci.badreq-pw-u@PCIFN (0)-> 714 error.io.pci.nr-pw-d@PCIFN, 715 error.io.pci.ta-pw-d@PCIFN; 716 717prop error.io.pci.nr-pw-d@PCIFN { IS_LEAF } (0)-> 718 ereport.io.pci.ma@PCIFN; 719 720prop error.io.pci.nr-pw-d@PCIFN { IS_BDG } (2)-> 721 ereport.io.pci.ma@PCIFN, 722 error.io.pci.serr-u@PCIFN; 723 724prop error.io.pci.ta-pw-d@PCIFN/PCIFN (1)-> 725 ereport.io.pci.sec-sta@PCIFN; 726 727prop error.io.pci.ta-pw-d@PCIFN { IS_LEAF } (0)-> 728 ereport.io.pci.rta@PCIFN; 729 730prop error.io.pci.ta-pw-d@PCIFN { IS_BDG } (2)-> 731 ereport.io.pci.rta@PCIFN, 732 error.io.pci.serr-u@PCIFN; 733 734/* 735 * for delayed writes we treat upstream badreq specially as rta always 736 * propagates back downstream to the leaf 737 */ 738prop error.io.pci.badreq-drw-u@PCIFN { IS_LEAF } (0)-> 739 ereport.io.pci.rta@PCIFN, 740 ereport.io.pci.ma@PCIFN; 741 742prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (1)-> 743 ereport.io.pci.ma@PCIFN, 744 ereport.io.pci.rta@PCIFN; 745 746prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (0)-> 747 ereport.io.pci.sec-sta@PCIFN; 748 749prop error.io.pci.badreq-drw-u@PCIFN/PCIFN (0)-> 750 error.io.pci.badreq-drw-u@PCIFN; 751 752prop error.io.pci.nr-drw-d@PCIFN { IS_LEAF } (0)-> 753 ereport.io.pci.ma@PCIFN; 754 755prop error.io.pci.nr-drw-d@PCIFN { IS_BDG } (1)-> 756 ereport.io.pci.ma@PCIFN; 757 758prop error.io.pci.nr-drw-d@PCIFN { IS_BDG } (0)-> 759 ereport.io.pci.sec-sta@PCIFN; 760 761prop error.io.pci.nr-drw-d@PCIFN (1)-> 762 error.io.pci.ta-d@PCIFN/PCIFNHZ, 763 error.io.pci.nr-drw-d@PCIFN/PCIFNHZ; 764 765prop error.io.pci.ta-drw-d@PCIFN/PCIFN (1)-> 766 ereport.io.pci.sec-sta@PCIFN; 767 768prop error.io.pci.ta-drw-d@PCIFN (1)-> 769 error.io.pci.ta-d@PCIFN; 770 771prop error.io.pci.ta-d@PCIFN { IS_LEAF } (0)-> 772 ereport.io.pci.rta@PCIFN; 773 774prop error.io.pci.ta-d@PCIFN { IS_BDG } (2)-> 775 ereport.io.pci.sec-sta@PCIFN, 776 ereport.io.pci.rta@PCIFN; 777 778prop error.io.pci.ta-d@PCIFN (1)-> 779 error.io.pci.ta-d@PCIFN/PCIFNHZ; 780 781/* 782 * Request with address parity error must be detected by parent device 783 * and can optionally result in a target or master abort. 784 * It may also be detected by sibling devices on a bus 785 */ 786prop error.io.pci.ape-u@PCIFN/PCIFN (3)-> 787 ereport.io.pci.sec-dpe@PCIFN, 788 ereport.io.pci.sec-rserr@PCIFN, 789 error.io.pci.serr-u@PCIFN; 790 791prop error.io.pci.ape-u@PCIFN (0)-> 792 error.io.pci.nr-drw-d@PCIFN, 793 error.io.pci.ta-drw-d@PCIFN, 794 error.io.pci.nr-pw-d@PCIFN, 795 error.io.pci.ta-pw-d@PCIFN; 796 797prop error.io.pci.ape-u@PCIFN (0)-> 798 ereport.io.pci.mdpe@PCIFN; 799 800prop error.io.pci.ape-u@pcibus/pcidev[fromdev]/pcifn (0)-> 801 ereport.io.pci.dpe@pcibus/pcidev<todev>/pcifn<> {fromdev != todev}, 802 ereport.io.pci.sserr@pcibus/pcidev<todev>/pcifn<> {fromdev != todev}; 803 804prop error.io.pci.ape-u@PCIFN (1)-> 805 error.io.pci.source-ape-u@PCIFN; 806 807/* 808 * If the bridge sees an upstream split completion error (pci-x only) it could 809 * result in a number of things 810 * - for various faults in the split completion (eg address parity error) 811 * we will respond with a target abort (which the child device will treat 812 * as a split completion ta) 813 * - for other faults we can't tell who send the split completion and so 814 * just drop the request (which the child device sees as a split 815 * completion ma) 816 */ 817prop error.io.pcix.scpe-u@PCIFN/PCIFN (0)-> 818 ereport.io.pci.sec-sta@PCIFN, 819 ereport.io.pci.sec-dpe@PCIFN, 820 ereport.io.pci.sec-rserr@PCIFN, 821 error.io.pci.serr-u@PCIFN; 822 823prop error.io.pcix.scpe-u@PCIFN (1)-> 824 error.io.pcix.spl-comp-ma-d@PCIFN, 825 error.io.pcix.spl-comp-ta-d@PCIFN; 826 827prop error.io.pcix.spl-comp-ma-d@PCIFN (1)-> 828 error.io.pci.serr-u@PCIFN; 829 830prop error.io.pcix.spl-comp-ma-d@PCIFN { IS_LEAF } (0)-> 831 ereport.io.pci.sserr@PCIFN, 832 ereport.io.pcix.spl-dis@PCIFN; 833 834prop error.io.pcix.spl-comp-ma-d@PCIFN { IS_BDG } (2)-> 835 ereport.io.pcix.spl-dis@PCIFN, 836 ereport.io.pci.ma@PCIFN; 837 838prop error.io.pcix.spl-comp-ta-d@PCIFN (1)-> 839 error.io.pci.serr-u@PCIFN; 840 841prop error.io.pcix.spl-comp-ta-d@PCIFN { IS_LEAF } (0)-> 842 ereport.io.pci.sserr@PCIFN, 843 ereport.io.pcix.spl-dis@PCIFN; 844 845prop error.io.pcix.spl-comp-ta-d@PCIFN { IS_BDG } (2)-> 846 ereport.io.pcix.spl-dis@PCIFN, 847 ereport.io.pci.rta@PCIFN; 848 849prop error.io.pcix.scpe-u@PCIFN (1)-> 850 error.io.pcix.source-scpe-u@PCIFN; 851 852/* 853 * request with address parity error must be detected by child device 854 * and can optionally result in a target or master abort. 855 */ 856prop error.io.pci.ape-d@PCIFN (1)-> 857 error.io.pci.serr-u@PCIFN; 858 859prop error.io.pci.ape-d@PCIFN { IS_LEAF } (0)-> 860 error.io.pci.leaf-ape-d@PCIFN; 861 862prop error.io.pci.leaf-ape-d@PCIFN { IS_LEAF } (2)-> 863 ereport.io.pci.sserr@PCIFN, 864 ereport.io.pci.dpe@PCIFN; 865 866prop error.io.pci.ape-d@PCIFN { IS_BDG } (1)-> 867 ereport.io.pci.dpe@PCIFN; 868 869prop error.io.pci.ape-d@PCIFN (0)-> 870 error.io.pci.ta-pw-u@PCIFN, 871 error.io.pci.ta-drw-u@PCIFN, 872 error.io.pci.nr-pw-u@PCIFN, 873 error.io.pci.nr-drw-u@PCIFN; 874 875/* 876 * If the device sees a downstream split completion error (pci-x only) it could 877 * result in a number of things 878 * - for various faults in the split completion (eg address parity error) 879 * we will respond with a target abort (which the parent bridge will treat 880 * as a split completion ta) 881 * - for other faults we can't tell who send the split completion and so 882 * just drop the request (which the parent bridge sees as a split 883 * completion ma) 884 */ 885prop error.io.pcix.scpe-d@PCIFN (0)-> 886 ereport.io.pci.sta@PCIFN, 887 ereport.io.pci.dpe@PCIFN, 888 ereport.io.pci.sserr@PCIFN, 889 error.io.pci.serr-u@PCIFN; 890 891prop error.io.pcix.scpe-d@PCIFN (1)-> 892 error.io.pcix.spl-comp-ma-u@PCIFN, 893 error.io.pcix.spl-comp-ta-u@PCIFN; 894 895prop error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN (2)-> 896 ereport.io.pcix.sec-spl-dis@PCIFN, 897 error.io.pci.serr-u@PCIFN; 898 899prop error.io.pcix.spl-comp-ma-u@PCIFN/PCIFN (0)-> 900 ereport.io.pci.sec-ma@PCIFN; 901 902prop error.io.pcix.spl-comp-ta-u@PCIFN/PCIFN (3)-> 903 ereport.io.pcix.sec-spl-dis@PCIFN, 904 error.io.pci.serr-u@PCIFN, 905 ereport.io.pci.sec-rta@PCIFN; 906 907/* 908 * request with data parity error can propagate upstream 909 * 910 * for PCI/X (but not PCI) the split write can optionally be forwarded across 911 * the bridge, maintaining bad parity/ecc 912 * 913 * if there is a dpe on a retry on a delayed write, we don't send another 914 * retry, and eventually the dto timer will expire 915 */ 916prop error.io.pci.dpdata-pw-u@PCIFN { IS_LEAF } (0)-> 917 ereport.io.pci.mdpe@PCIFN; 918 919prop error.io.pci.dpdata-pw-u@PCIFN/PCIFN (3)-> 920 ereport.io.pci.mdpe@PCIFN, 921 ereport.io.pci.sec-dpe@PCIFN, 922 error.io.pci.dpdata-pw-u@PCIFN; 923 924prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (1)-> 925 ereport.io.pci.sec-dpe@PCIFN; 926 927prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (0)-> 928 ereport.io.pci.mdpe@PCIFN, 929 error.io.pci.dpdata-dw-u@PCIFN; 930 931prop error.io.pci.dpdata-dw-u@PCIFN/PCIFN (0)-> 932 error.io.pci.retry-to-u@PCIFN/PCIFN; 933 934prop error.io.pci.dpdata-dr-u@PCIFN/PCIFN (3)-> 935 ereport.io.pci.sec-dpe@PCIFN, 936 ereport.io.pci.sec-mdpe@PCIFN, 937 error.io.pci.dpdata-dr-u@PCIFN; 938 939/* 940 * Request with data parity error can propagate downstream. A hardened 941 * leaf driver should handle the error, but may or may not be able to 942 * avoid service impact. We handle to two cases separately. If there is 943 * service impact we will fail immediately, if not we will feed into a SERD 944 * engine. 945 * 946 * for PCI/X (but not PCI) the split write can optionally be forwarded across 947 * the bridge, maintaining bad parity/ecc 948 * 949 * if there is a dpe on a retry on a delayed write, we don't send another 950 * retry, and eventually the dto timer will expire 951 */ 952prop error.io.pci.f-dpe-d@PCIFN (1)-> 953 error.io.pci.dpdata-pw-d@PCIFN, 954 error.io.pci.dpdata-dw-d@PCIFN, 955 error.io.pci.dpdata-dr-d@PCIFN; 956 957prop error.io.pci.f-dpe-d@PCIFN (1)-> 958 error.io.pci.f-source-dpdata-u@PCIFN; 959 960prop error.io.pci.deg-dpe-d@PCIFN (1)-> 961 error.io.pci.dpdata-pw-d@PCIFN, 962 error.io.pci.dpdata-dw-d@PCIFN, 963 error.io.pci.dpdata-dr-d@PCIFN; 964 965prop error.io.pci.deg-dpe-d@PCIFN (1)-> 966 error.io.pci.deg-source-dpdata-u@PCIFN; 967 968prop error.io.pci.nf-dpe-d@PCIFN (1)-> 969 error.io.pci.dpdata-pw-d@PCIFN, 970 error.io.pci.dpdata-dw-d@PCIFN, 971 error.io.pci.dpdata-dr-d@PCIFN; 972 973prop error.io.pci.nf-dpe-d@PCIFN (1)-> 974 error.io.pci.nf-source-dpdata-u@PCIFN; 975 976prop error.io.pci.dpdata-pw-d@PCIFN (2)-> 977 error.io.pci.perr-pw-u@PCIFN, 978 error.io.pci.dpdata-pw-fwd-d@PCIFN; 979 980prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_LEAF } (1)-> 981 error.io.pci.source-perr-u@PCIFN; 982 983prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_LEAF } (0)-> 984 ereport.io.pci.dpe@PCIFN; 985 986prop error.io.pci.dpdata-pw-fwd-d@PCIFN { IS_BDG } (2)-> 987 ereport.io.pci.dpe@PCIFN, 988 ereport.io.pci.sec-mdpe@PCIFN; 989 990prop error.io.pci.dpdata-pw-fwd-d@PCIFN (1)-> 991 error.io.pci.dpdata-pw-fwd-d@PCIFN/PCIFNHZ; 992 993prop error.io.pci.dpdata-dw-d@PCIFN (3)-> 994 error.io.pci.perr-dw-u@PCIFN, 995 error.io.pci.target-mdpe-d@PCIFN, 996 error.io.pci.dpdata-dw-fwd-d@PCIFN; 997 998prop error.io.pci.dpdata-dw-d@PCIFN { IS_BDG } (1)-> 999 ereport.io.pci.dpe@PCIFN; 1000 1001prop error.io.pci.dpdata-dw-d@PCIFN { IS_BDG } (0)-> 1002 error.io.pci.retry-to-d@PCIFN; 1003 1004prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_LEAF } (1)-> 1005 error.io.pci.source-perr-u@PCIFN; 1006 1007prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_LEAF } (0)-> 1008 ereport.io.pci.dpe@PCIFN; 1009 1010prop error.io.pci.dpdata-dw-fwd-d@PCIFN { IS_BDG } (0)-> 1011 ereport.io.pci.dpe@PCIFN, 1012 ereport.io.pci.sec-mdpe@PCIFN; 1013 1014prop error.io.pci.dpdata-dw-fwd-d@PCIFN (0)-> 1015 error.io.pci.dpdata-dw-fwd-d@PCIFN/PCIFNHZ; 1016 1017prop error.io.pci.dpdata-dr-d@PCIFN (2)-> 1018 error.io.pci.dpdata-dr-fwd-d@PCIFN, 1019 error.io.pci.perr-dr-u@PCIFN; 1020 1021prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_LEAF } (1)-> 1022 error.io.pci.source-perr-u@PCIFN; 1023 1024prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_LEAF } (0)-> 1025 ereport.io.pci.dpe@PCIFN, 1026 ereport.io.pci.mdpe@PCIFN; 1027 1028prop error.io.pci.dpdata-dr-fwd-d@PCIFN { IS_BDG } (2)-> 1029 ereport.io.pci.dpe@PCIFN, 1030 ereport.io.pci.mdpe@PCIFN; 1031 1032prop error.io.pci.dpdata-dr-fwd-d@PCIFN (1)-> 1033 error.io.pci.dpdata-dr-fwd-d@PCIFN/PCIFNHZ; 1034 1035/* 1036 * delayed read/write retry timeout can cause dto at a bridge 1037 */ 1038prop error.io.pci.retry-to-u@PCIFN/PCIFN (0)-> 1039 error.io.pci.retry-to-u@PCIFN; 1040 1041prop error.io.pci.retry-to-u@PCIFN/PCIFN (1)-> 1042 ereport.io.pci.dto@PCIFN; 1043 1044prop error.io.pci.retry-to-u@PCIFN/PCIFN (0)-> 1045 error.io.pci.serr-u@PCIFN; 1046 1047prop error.io.pci.retry-to-d@PCIFN (0)-> 1048 error.io.pci.retry-to-d@PCIFN/PCIFN; 1049 1050prop error.io.pci.retry-to-d@PCIFN { IS_BDG } (1)-> 1051 ereport.io.pci.dto@PCIFN; 1052 1053prop error.io.pci.retry-to-d@PCIFN { IS_BDG } (0)-> 1054 error.io.pci.serr-u@PCIFN; 1055 1056/* 1057 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1058 * source- propagations. 1059 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1060 */ 1061event error.io.pci.source-ape-u@PCIFN/PCIFN; 1062event error.io.pcix.source-scpe-u@PCIFN/PCIFN; 1063 1064prop error.io.pci.source-ape-u@PCIFN (1)-> 1065 error.io.pci.source-ape-u@PCIFN/PCIFNHZ; 1066 1067prop error.io.pcix.source-scpe-u@PCIFN (1)-> 1068 error.io.pcix.source-scpe-u@PCIFN/PCIFNHZ; 1069 1070/* 1071 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1072 * Handling of leaf driver detected internal errors. Use serd engine if 1073 * no service impact - otherwise fail immediately 1074 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1075 */ 1076event ereport.io.device.inval_state@PCIFN{within(5s)}; 1077event ereport.io.device.no_response@PCIFN{within(5s)}; 1078event ereport.io.device.stall@PCIFN{within(5s)}; 1079event ereport.io.device.badint_limit@PCIFN{within(5s)}; 1080event ereport.io.device.intern_corr@PCIFN{within(5s)}; 1081event ereport.io.device.intern_uncorr@PCIFN{within(5s)}; 1082 1083prop error.io.service.restored@PCIFN { IS_LEAF } (1)-> 1084 ereport.io.service.lost@PCIFN, 1085 ereport.io.service.degraded@PCIFN; 1086 1087prop error.io.service.restored@PCIFN { IS_LEAF } (1)-> 1088 ereport.io.service.restored@PCIFN; 1089 1090prop error.io.device.f-device@PCIFN { IS_LEAF } (1)-> 1091 ereport.io.device.inval_state@PCIFN, 1092 ereport.io.device.no_response@PCIFN, 1093 ereport.io.device.stall@PCIFN, 1094 ereport.io.device.badint_limit@PCIFN, 1095 ereport.io.device.intern_corr@PCIFN, 1096 ereport.io.device.intern_uncorr@PCIFN; 1097 1098prop error.io.device.f-device@PCIFN { IS_LEAF } (1)-> 1099 ereport.io.service.lost@PCIFN; 1100 1101prop error.io.device.deg-device@PCIFN { IS_LEAF } (1)-> 1102 ereport.io.device.inval_state@PCIFN, 1103 ereport.io.device.no_response@PCIFN, 1104 ereport.io.device.stall@PCIFN, 1105 ereport.io.device.badint_limit@PCIFN, 1106 ereport.io.device.intern_corr@PCIFN, 1107 ereport.io.device.intern_uncorr@PCIFN; 1108 1109prop error.io.device.deg-device@PCIFN { IS_LEAF } (1)-> 1110 ereport.io.service.degraded@PCIFN; 1111 1112prop error.io.device.nf-device@PCIFN { IS_LEAF } (1)-> 1113 ereport.io.device.inval_state@PCIFN, 1114 ereport.io.device.no_response@PCIFN, 1115 ereport.io.device.stall@PCIFN, 1116 ereport.io.device.badint_limit@PCIFN, 1117 ereport.io.device.intern_corr@PCIFN, 1118 ereport.io.device.intern_uncorr@PCIFN; 1119 1120prop error.io.device.nf-device@PCIFN { IS_LEAF } (1)-> 1121 ereport.io.service.unaffected@PCIFN, 1122 error.io.service.restored@PCIFN; 1123 1124/* 1125 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1126 * stub unused ereports 1127 * - ignore rx-spl as we can't tell what message it was (and we should have 1128 * diagnosed the problem anyway from standard pci ereports) 1129 * - ignore sec-spl-or/sec-spl-dly as these aren't really faults (tuning info) 1130 * - ignore unex-spl/sec-unex-spl 1131 * - ignore ecc.ue ereports (we get everything we need from dpe/mdpe) 1132 * - ignore ecc.ce ereports for now (could do serd on these) 1133 * - ignore nr ereport 1134 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1135 */ 1136 1137event ereport.io.pci.nr@PCIFN{within(5s)}; 1138event ereport.io.pcix.unex-spl@PCIFN{within(5s)}; 1139event ereport.io.pcix.rx-spl@PCIFN{within(5s)}; 1140event ereport.io.pcix.sec-unex-spl@PCIFN{within(5s)}; 1141event ereport.io.pcix.sec-spl-or@PCIFN{within(5s)}; 1142event ereport.io.pcix.sec-spl-dly@PCIFN{within(5s)}; 1143event ereport.io.pcix.ecc.ce-addr@PCIFN{within(5s)}; 1144event ereport.io.pcix.ecc.ce-attr@PCIFN{within(5s)}; 1145event ereport.io.pcix.ecc.ce-data@PCIFN{within(5s)}; 1146event ereport.io.pcix.ecc.ue-addr@PCIFN{within(5s)}; 1147event ereport.io.pcix.ecc.ue-attr@PCIFN{within(5s)}; 1148event ereport.io.pcix.ecc.ue-data@PCIFN{within(5s)}; 1149event ereport.io.pcix.s-ce@PCIFN{within(5s)}; 1150event ereport.io.pcix.s-ue@PCIFN{within(5s)}; 1151event ereport.io.pcix.sec-ecc.ce-addr@PCIFN{within(5s)}; 1152event ereport.io.pcix.sec-ecc.ce-attr@PCIFN{within(5s)}; 1153event ereport.io.pcix.sec-ecc.ce-data@PCIFN{within(5s)}; 1154event ereport.io.pcix.sec-ecc.ue-addr@PCIFN{within(5s)}; 1155event ereport.io.pcix.sec-ecc.ue-attr@PCIFN{within(5s)}; 1156event ereport.io.pcix.sec-ecc.ue-data@PCIFN{within(5s)}; 1157event ereport.io.pcix.sec-s-ce@PCIFN{within(5s)}; 1158event ereport.io.pcix.sec-s-ue@PCIFN{within(5s)}; 1159 1160event upset.io.pcix.discard@PCIFN; 1161 1162prop upset.io.pcix.discard@PCIFN (1)-> 1163 ereport.io.pci.nr@PCIFN, 1164 ereport.io.pcix.rx-spl@PCIFN, 1165 ereport.io.pcix.unex-spl@PCIFN, 1166 ereport.io.pcix.sec-unex-spl@PCIFN, 1167 ereport.io.pcix.sec-spl-or@PCIFN, 1168 ereport.io.pcix.sec-spl-dly@PCIFN, 1169 ereport.io.pcix.ecc.ce-addr@PCIFN, 1170 ereport.io.pcix.ecc.ce-attr@PCIFN, 1171 ereport.io.pcix.ecc.ce-data@PCIFN, 1172 ereport.io.pcix.ecc.ue-addr@PCIFN, 1173 ereport.io.pcix.ecc.ue-attr@PCIFN, 1174 ereport.io.pcix.ecc.ue-data@PCIFN, 1175 ereport.io.pcix.s-ce@PCIFN, 1176 ereport.io.pcix.s-ue@PCIFN, 1177 ereport.io.pcix.sec-ecc.ce-addr@PCIFN, 1178 ereport.io.pcix.sec-ecc.ce-attr@PCIFN, 1179 ereport.io.pcix.sec-ecc.ce-data@PCIFN, 1180 ereport.io.pcix.sec-ecc.ue-addr@PCIFN, 1181 ereport.io.pcix.sec-ecc.ue-attr@PCIFN, 1182 ereport.io.pcix.sec-ecc.ue-data@PCIFN, 1183 ereport.io.pcix.sec-s-ce@PCIFN, 1184 ereport.io.pcix.sec-s-ue@PCIFN; 1185