1f8d2de6bSjchu /* 2f8d2de6bSjchu * CDDL HEADER START 3f8d2de6bSjchu * 4f8d2de6bSjchu * The contents of this file are subject to the terms of the 5bf8fc234Set142600 * Common Development and Distribution License (the "License"). 6bf8fc234Set142600 * You may not use this file except in compliance with the License. 7f8d2de6bSjchu * 8f8d2de6bSjchu * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9f8d2de6bSjchu * or http://www.opensolaris.org/os/licensing. 10f8d2de6bSjchu * See the License for the specific language governing permissions 11f8d2de6bSjchu * and limitations under the License. 12f8d2de6bSjchu * 13f8d2de6bSjchu * When distributing Covered Code, include this CDDL HEADER in each 14f8d2de6bSjchu * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15f8d2de6bSjchu * If applicable, add the following below this CDDL HEADER, with the 16f8d2de6bSjchu * fields enclosed by brackets "[]" replaced with your own identifying 17f8d2de6bSjchu * information: Portions Copyright [yyyy] [name of copyright owner] 18f8d2de6bSjchu * 19f8d2de6bSjchu * CDDL HEADER END 20f8d2de6bSjchu */ 21f8d2de6bSjchu /* 22*4df55fdeSJanie Lu * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23f8d2de6bSjchu * Use is subject to license terms. 24f8d2de6bSjchu */ 25f8d2de6bSjchu 26f8d2de6bSjchu #ifndef _SYS_PX_ERR_H 27f8d2de6bSjchu #define _SYS_PX_ERR_H 28f8d2de6bSjchu 29f8d2de6bSjchu #ifdef __cplusplus 30f8d2de6bSjchu extern "C" { 31f8d2de6bSjchu #endif 32f8d2de6bSjchu 33f8d2de6bSjchu /* error packet definitions */ 34f8d2de6bSjchu 35f8d2de6bSjchu /* Block Definitions */ 36f8d2de6bSjchu #define BLOCK_RSVD 0x0 37f8d2de6bSjchu #define BLOCK_HOSTBUS 0x1 38f8d2de6bSjchu #define BLOCK_MMU 0x2 39f8d2de6bSjchu #define BLOCK_INTR 0x3 40f8d2de6bSjchu #define BLOCK_PCIE 0x4 41*4df55fdeSJanie Lu #define BLOCK_PORT 0x5 42f8d2de6bSjchu #define BLOCK_UNKNOWN 0xe 43f8d2de6bSjchu 44f8d2de6bSjchu /* Op definitions for HOSTBUS */ 45f8d2de6bSjchu #define OP_RESERVED 0x0 46f8d2de6bSjchu #define OP_PIO 0x1 47f8d2de6bSjchu #define OP_DMA 0x2 48f8d2de6bSjchu #define OP_UNKNOWN 0xe 49f8d2de6bSjchu 50f8d2de6bSjchu /* Op definitions for MMU */ 51f8d2de6bSjchu #define OP_RESERVED 0x0 52f8d2de6bSjchu #define OP_XLAT 0x1 53f8d2de6bSjchu #define OP_BYPASS 0x2 54f8d2de6bSjchu #define OP_TBW 0x3 55f8d2de6bSjchu #define OP_UNKNOWN 0xe 56f8d2de6bSjchu 57f8d2de6bSjchu /* Op definitions for INTR */ 58f8d2de6bSjchu #define OP_RESERVED 0x0 59f8d2de6bSjchu #define OP_MSI32 0x1 60f8d2de6bSjchu #define OP_MSI64 0x2 61f8d2de6bSjchu #define OP_MSIQ 0x3 62f8d2de6bSjchu #define OP_PCIEMSG 0x4 63*4df55fdeSJanie Lu #define OP_FIXED 0x5 64*4df55fdeSJanie Lu #define OP_UNKNOWN 0xe 65*4df55fdeSJanie Lu 66*4df55fdeSJanie Lu /* Op definitions for PORT */ 67*4df55fdeSJanie Lu #define OP_RESERVED 0x0 68*4df55fdeSJanie Lu #define OP_PIO 0x1 69*4df55fdeSJanie Lu #define OP_DMA 0x2 70*4df55fdeSJanie Lu #define OP_LINK 0x3 71f8d2de6bSjchu #define OP_UNKNOWN 0xe 72f8d2de6bSjchu 73f8d2de6bSjchu /* Phase definitons */ 74f8d2de6bSjchu #define PH_RESERVED 0x0 75f8d2de6bSjchu #define PH_ADDR 0x1 76f8d2de6bSjchu #define PH_DATA 0x2 77f8d2de6bSjchu #define PH_UNKNOWN 0xe 78f8d2de6bSjchu #define PH_IRR 0xf 79f8d2de6bSjchu 80*4df55fdeSJanie Lu /* Phase definitions for PORT/Link */ 81*4df55fdeSJanie Lu #define PH_FC 0x1 82*4df55fdeSJanie Lu 83*4df55fdeSJanie Lu 84*4df55fdeSJanie Lu /* Condition definitions for any major Block/Op/Phase */ 85f8d2de6bSjchu #define CND_RESERVED 0x0 86f8d2de6bSjchu #define CND_ILL 0x1 87f8d2de6bSjchu #define CND_UNMAP 0x2 88f8d2de6bSjchu #define CND_INT 0x3 89f8d2de6bSjchu #define CND_UE 0x4 90*4df55fdeSJanie Lu #define CND_INV 0x6 91f8d2de6bSjchu #define CND_UNKNOWN 0xe 92f8d2de6bSjchu #define CND_IRR 0xf 93f8d2de6bSjchu 94*4df55fdeSJanie Lu /* Additional condition definitions for INTR Block MSIQ phase */ 95f8d2de6bSjchu #define CND_OV 0x5 96f8d2de6bSjchu 97*4df55fdeSJanie Lu /* Additional condition definitions for MMU|INTR Block ADDR phase */ 98*4df55fdeSJanie Lu #define CND_PROT 0x5 99*4df55fdeSJanie Lu 100*4df55fdeSJanie Lu /* Additional condition definitions for DATA phase */ 101f8d2de6bSjchu #define CND_TO 0x5 102*4df55fdeSJanie Lu 103*4df55fdeSJanie Lu /* Additional condition definitions for Port Link phase */ 104*4df55fdeSJanie Lu #define CND_RCA 0x7 105*4df55fdeSJanie Lu #define CND_RUR 0x8 106*4df55fdeSJanie Lu #define CND_UC 0x9 107f8d2de6bSjchu 108f8d2de6bSjchu /* Dir definitions for HOSTBUS & MMU */ 109f8d2de6bSjchu #define DIR_RESERVED 0x0 110f8d2de6bSjchu #define DIR_READ 0x1 111f8d2de6bSjchu #define DIR_WRITE 0x2 112f8d2de6bSjchu #define DIR_RDWR 0x3 113f8d2de6bSjchu #define DIR_INGRESS 0x4 114f8d2de6bSjchu #define DIR_EGRESS 0x5 115f8d2de6bSjchu #define DIR_LINK 0x6 116f8d2de6bSjchu #define DIR_UNKNOWN 0xe 117f8d2de6bSjchu #define DIR_IRR 0xf 118f8d2de6bSjchu 119bf8fc234Set142600 #define PX_FM_RC_UNRECOG "fire.epkt" 120bf8fc234Set142600 #define EPKT_SYSINO "sysino" 121bf8fc234Set142600 #define EPKT_EHDL "ehdl" 122bf8fc234Set142600 #define EPKT_STICK "stick" 123*4df55fdeSJanie Lu #define EPKT_DW0 "dw0" 124*4df55fdeSJanie Lu #define EPKT_DW1 "dw1" 125*4df55fdeSJanie Lu #define EPKT_DW2 "dw2" 126*4df55fdeSJanie Lu #define EPKT_DW3 "dw3" 127*4df55fdeSJanie Lu #define EPKT_DW4 "dw4" 128bf8fc234Set142600 #define EPKT_RC_DESCR "rc_descr" 129bf8fc234Set142600 #define EPKT_PEC_DESCR "pec_descr" 130bf8fc234Set142600 131*4df55fdeSJanie Lu #ifndef _ESC 132f8d2de6bSjchu typedef struct root_complex { 133f8d2de6bSjchu uint64_t sysino; 134f8d2de6bSjchu uint64_t ehdl; 135f8d2de6bSjchu uint64_t stick; 136f8d2de6bSjchu struct { 137*4df55fdeSJanie Lu #if defined(_BIT_FIELDS_LTOH) 138*4df55fdeSJanie Lu uint32_t S : 1, /* Also the "Q" flag */ 139*4df55fdeSJanie Lu M : 1, 140*4df55fdeSJanie Lu D : 1, 141*4df55fdeSJanie Lu R : 1, 142*4df55fdeSJanie Lu H : 1, 143*4df55fdeSJanie Lu C : 1, 144*4df55fdeSJanie Lu I : 1, 145*4df55fdeSJanie Lu B : 1, 146*4df55fdeSJanie Lu : 3, 147*4df55fdeSJanie Lu STOP : 1, 148*4df55fdeSJanie Lu dir : 4, 149*4df55fdeSJanie Lu cond : 4, 150*4df55fdeSJanie Lu phase : 4, 151*4df55fdeSJanie Lu op : 4, 152*4df55fdeSJanie Lu block : 4; 153*4df55fdeSJanie Lu #elif defined(_BIT_FIELDS_HTOL) 154f8d2de6bSjchu uint32_t block : 4, 155f8d2de6bSjchu op : 4, 156f8d2de6bSjchu phase : 4, 157f8d2de6bSjchu cond : 4, 158f8d2de6bSjchu dir : 4, 159bf8fc234Set142600 STOP : 1, 160*4df55fdeSJanie Lu : 3, 161*4df55fdeSJanie Lu B : 1, 162*4df55fdeSJanie Lu I : 1, 163*4df55fdeSJanie Lu C : 1, 164f8d2de6bSjchu H : 1, 165f8d2de6bSjchu R : 1, 166f8d2de6bSjchu D : 1, 167f8d2de6bSjchu M : 1, 168*4df55fdeSJanie Lu S : 1; /* Also the "Q" flag */ 169*4df55fdeSJanie Lu #else 170*4df55fdeSJanie Lu #error "bit field not defined" 171*4df55fdeSJanie Lu #endif 172f8d2de6bSjchu } rc_descr; 173*4df55fdeSJanie Lu uint32_t size; /* Also the EQ Num */ 174f8d2de6bSjchu uint64_t addr; 175f8d2de6bSjchu uint64_t hdr[2]; 176*4df55fdeSJanie Lu uint64_t reserved; /* Contains Port */ 177f8d2de6bSjchu } px_rc_err_t; 178f8d2de6bSjchu 179f8d2de6bSjchu typedef struct pec_block_err { 180f8d2de6bSjchu uint64_t sysino; 181f8d2de6bSjchu uint64_t ehdl; 182f8d2de6bSjchu uint64_t stick; 183f8d2de6bSjchu struct { 184f8d2de6bSjchu uint32_t block : 4, 185f8d2de6bSjchu rsvd1 : 12, 186f8d2de6bSjchu dir : 4, 187f8d2de6bSjchu : 3, 188f8d2de6bSjchu Z : 1, 189f8d2de6bSjchu S : 1, 190f8d2de6bSjchu R : 1, 191f8d2de6bSjchu I : 1, 192f8d2de6bSjchu H : 1, 193f8d2de6bSjchu C : 1, 194f8d2de6bSjchu U : 1, 195f8d2de6bSjchu E : 1, 196f8d2de6bSjchu P : 1; 197f8d2de6bSjchu } pec_descr; 198f8d2de6bSjchu uint16_t pci_err_status; 199f8d2de6bSjchu uint16_t pcie_err_status; 200f8d2de6bSjchu uint32_t ce_reg_status; 201f8d2de6bSjchu uint32_t ue_reg_status; 202f8d2de6bSjchu uint64_t hdr[2]; 203f8d2de6bSjchu uint32_t err_src_reg; 204f8d2de6bSjchu uint32_t root_err_status; 205f8d2de6bSjchu } px_pec_err_t; 206*4df55fdeSJanie Lu #endif /* _ESC */ 207f8d2de6bSjchu 208f8d2de6bSjchu #ifdef __cplusplus 209f8d2de6bSjchu } 210f8d2de6bSjchu #endif 211f8d2de6bSjchu 212f8d2de6bSjchu #endif /* _SYS_PX_ERR_H */ 213