4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * CDDL HEADER START
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu *
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * The contents of this file are subject to the terms of the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Common Development and Distribution License (the "License").
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * You may not use this file except in compliance with the License.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu *
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * or http://www.opensolaris.org/os/licensing.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * See the License for the specific language governing permissions
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * and limitations under the License.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu *
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * When distributing Covered Code, include this CDDL HEADER in each
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * If applicable, add the following below this CDDL HEADER, with the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * fields enclosed by brackets "[]" replaced with your own identifying
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * information: Portions Copyright [yyyy] [name of copyright owner]
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu *
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * CDDL HEADER END
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/*
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#pragma dictionary "PCIEX"
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#include <px_err.h>
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * generic root complex/root port diagnosis rules
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define PCIEXFN pciexbus/pciexdev/pciexfn
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define PCIEXFNHZ pciexbus<>/pciexdev<>/pciexfn<>
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define RC_N 5
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define RC_T 72h
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define SW_FIT 5000
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define FW_FIT 5000
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define HB_FIT 400
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define EPKT_DESC (payloadprop("desc") >> 12)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define EPKT_B_BIT (payloadprop("desc") & (1 << 7))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define EPKT_C_BIT (payloadprop("desc") & (1 << 5))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define EPKT_H_BIT (payloadprop("desc") & (1 << 4))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define MATCHES_DESC(b, o, p, c, d) \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu (EPKT_DESC == (b << 16 | o << 12 | p << 8 | c << 4 | d))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define IS_CE (EPKT_C_BIT != 0 && setserdsuffix(EPKT_DESC))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define IS_UE (EPKT_C_BIT == 0)
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye/*
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye * BLOCK bit set means the error may cause a pipe stall and thus a CTO
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye * in the fabric
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define IS_BLOCKED (EPKT_B_BIT != 0)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define EPKT(b, o, p, c, d) \
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge { MATCHES_DESC(b, o, p, c, d) }
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye/* Errors that will be diagnosed by the fabric DE (pciex.esc) */
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye#define DIAG_BY_FAB \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye (MATCHES_DESC(BLOCK_INTR,OP_MSI32,PH_DATA,CND_ILL,DIR_IRR) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_LINK,PH_FC,CND_TO,DIR_IRR) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_INV,DIR_RDWR) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_RCA,DIR_WRITE) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_RUR,DIR_WRITE) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_TO,DIR_READ) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_TO,DIR_WRITE) || \
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_IRR,CND_UC,DIR_IRR))
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Ereport Events */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent ereport.io.pciex.rc.epkt@hostbridge {within(5s)};
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Internal Events */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.rc.stall@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.rc.poiscomp@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.nr-d@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.badreq-u@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.poiscomp-d@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.noimpact-d@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.lost-d@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.degraded-d@hostbridge/pciexrc/PCIEXFN;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Upset event */
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Yeevent upset.io.pciex.rc.stall@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent upset.io.pciex.rc.discard@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Fault Events
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Do no retire and FRUs for SW/FW faults
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.pciex.rc.generic-ue@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu FITrate=HB_FIT, retire=0, response=0;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.pciex.rc.generic-sw@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu FITrate=SW_FIT, retire=0, response=0;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.pciex.rc.generic-fw@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu FITrate=FW_FIT, retire=0, response=0;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Serd engine for CE errors */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luengine serd.io.pciex.rc.generic-ce@hostbridge, N=RC_N, T=RC_T;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.pciex.rc.generic-ce@hostbridge, FITrate=HB_FIT,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu engine=serd.io.pciex.rc.generic-ce@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Fire faults */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.fire.pciex.device@PCIEXFN, FITrate=1000;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent fault.io.fire.pci.device@pcibus/pcidev/pcifn, FITrate=1000;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Generic Root Complex Software faults */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.pciex.rc.generic-sw@hostbridge ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_INTR,OP_FIXED,PH_UNKNOWN,CND_ILL,DIR_INGRESS) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_INTR,OP_MSI32,PH_UNKNOWN,CND_ILL,DIR_IRR) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_INTR,OP_PCIEMSG,PH_UNKNOWN,CND_ILL,DIR_INGRESS)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Generic Root Complex Firmware faults */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.pciex.rc.generic-fw@hostbridge ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_PIO,PH_ADDR,CND_UNMAP,DIR_WRITE)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Generic Root Complex CE faults */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.pciex.rc.generic-ce@hostbridge { IS_CE } ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Generic Root Complex UE faults from propagations */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.rc.generic-ue1@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luevent error.io.pciex.rc.generic-ue2@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.pciex.rc.generic-ue@hostbridge ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.rc.generic-ue1@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.rc.generic-ue2@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.rc.stall@hostbridge,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.rc.poiscomp@hostbridge;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Generic Root Complex UE propagations */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.generic-ue1@hostbridge { IS_UE && !IS_BLOCKED } ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_INT,DIR_READ) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_INT,DIR_WRITE) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_TO,DIR_READ) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_TO,DIR_WRITE) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_PIO,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_UNKNOWN,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_UNKNOWN,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_INTR,OP_MSI32,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_INTR,OP_MSIQ,PH_DATA,CND_INT,DIR_UNKNOWN)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.generic-ue2@hostbridge { IS_UE && !IS_BLOCKED } ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_TBW,PH_ADDR,CND_UNKNOWN,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_TBW,PH_ADDR,CND_UNMAP,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_TBW,PH_DATA,CND_INT,DIR_IRR) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_TBW,PH_UNKNOWN,CND_UNKNOWN,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_XLAT,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_PORT,OP_DMA,PH_DATA,CND_INT,DIR_READ) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_DATA,CND_INT,DIR_READ) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_PORT,OP_PIO,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_PORT,OP_UNKNOWN,PH_DATA,CND_INT,DIR_UNKNOWN) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_PORT,OP_UNKNOWN,PH_DATA,CND_INT,DIR_UNKNOWN)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Errors that will cause a pipe stall and thus a CTO in the fabric */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.stall@hostbridge (0) ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.nr-d@hostbridge/pciexrc<>/PCIEXFNHZ;
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.stall@hostbridge { IS_UE && IS_BLOCKED } ->
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye ereport.io.pciex.rc.epkt@hostbridge { !DIAG_BY_FAB };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Errors that will send a poisoned data to the fabric
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Also the poiscomp-d could represent a fault that a hardened driver
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * handled and reported a service impact.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.poiscomp@hostbridge (0) ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.poiscomp-d@hostbridge/pciexrc<>/PCIEXFNHZ,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.noimpact-d@hostbridge/pciexrc<>/PCIEXFNHZ,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.lost-d@hostbridge/pciexrc<>/PCIEXFNHZ,
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu error.io.pciex.degraded-d@hostbridge/pciexrc<>/PCIEXFNHZ;
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.rc.poiscomp@hostbridge { IS_UE && !IS_BLOCKED } ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_HOSTBUS,OP_DMA,PH_DATA,CND_INT,DIR_READ)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop error.io.pciex.badreq-u@hostbridge/pciexrc/PCIEXFN { IS_UE && !IS_BLOCKED } (0) ->
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu ereport.io.pciex.rc.epkt@hostbridge {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_XLAT,PH_ADDR,CND_UNMAP,DIR_RDWR) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_XLAT,PH_DATA,CND_INV,DIR_RDWR) ||
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu MATCHES_DESC(BLOCK_MMU,OP_XLAT,PH_DATA,CND_PROT,DIR_RDWR)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye/*
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye * The errors will be diagnosed by pciex.esc but may also cause a CTO
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye * in the fabric.
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye */
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Yeprop upset.io.pciex.rc.stall@hostbridge ->
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye ereport.io.pciex.rc.epkt@hostbridge { IS_BLOCKED && DIAG_BY_FAB };
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Yeprop upset.io.pciex.rc.stall@hostbridge (0) ->
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye error.io.pciex.nr-d@hostbridge/pciexrc<>/PCIEXFNHZ;
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye/* The errors will be discarded here and diagnosed by pciex.esc. */
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Yeprop upset.io.pciex.rc.discard@hostbridge ->
4f764f916501bcb9d3233dc547db1928fc2f22acCheng Sean Ye ereport.io.pciex.rc.epkt@hostbridge { !IS_BLOCKED && DIAG_BY_FAB };
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu/* Event queue overflow */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define PROP_PLAT_FRU "FRU"
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define GET_HB_FRU (confprop(asru(hostbridge), PROP_PLAT_FRU))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define GET_PCIE_FRU (confprop(asru(pciexbus[b]/pciexdev[d]/pciexfn[0]), PROP_PLAT_FRU))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu#define GET_PCI_FRU (confprop(asru(pcibus[b]/pcidev[d]/pcifn[0]), PROP_PLAT_FRU))
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.fire.pciex.device@pciexbus[b]/pciexdev[d]/pciexfn[0]
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu /*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Indict PCI-E FRU(s) under this root complex excluding the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * one that the Fire ASIC resides on.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu is_under(hostbridge, pciexbus[b]/pciexdev[d]/pciexfn[0]) &&
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu (GET_HB_FRU != GET_PCIE_FRU)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu } (0) -> EPKT(BLOCK_INTR,OP_MSIQ,PH_UNKNOWN,CND_OV,DIR_IRR);
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu
4df55fde49134f9735f84011f23a767c75e393c7Janie Luprop fault.io.fire.pci.device@pcibus[b]/pcidev[d]/pcifn[0]
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu {
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu /*
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * Indict PCI FRU(s) under this root complex excluding the
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu * one that the Fire ASIC resides on.
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu */
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu is_under(hostbridge, pcibus[b]/pcidev[d]/pcifn[0]) &&
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu (GET_HB_FRU != GET_PCI_FRU)
4df55fde49134f9735f84011f23a767c75e393c7Janie Lu } (0) -> EPKT(BLOCK_INTR,OP_MSIQ,PH_UNKNOWN,CND_OV,DIR_IRR);