tegrakernel/kernel/nvidia/include/linux/platform/tegra/carmel_ras.h

195 lines
6.9 KiB
C

/*
* Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/arm64_ras.h>
/* Error Records Per Core */
/* ERR_CTLR bits for IFU */
#define ERR_CTL_IFU_IMQDP_ERR RAS_BIT(41)
#define ERR_CTL_IFU_L2UC_ERR RAS_BIT(40)
#define ERR_CTL_IFU_ICTPSNP_ERR RAS_BIT(38)
#define ERR_CTL_IFU_ICMHSNP_ERR RAS_BIT(37)
#define ERR_CTL_IFU_ITLBP_ERR RAS_BIT(36)
#define ERR_CTL_IFU_THERR_ERR RAS_BIT(35)
#define ERR_CTL_IFU_ICDP_ERR RAS_BIT(34)
#define ERR_CTL_IFU_ICTP_ERR RAS_BIT(33)
#define ERR_CTL_IFU_ICMH_ERR RAS_BIT(32)
/* ERR_CTLR bits for RET_JSR */
#define ERR_CTL_RET_JSR_FRFP_ERR RAS_BIT(35)
#define ERR_CTL_RET_JSR_IRFP_ERR RAS_BIT(34)
#define ERR_CTL_RET_JSR_GB_ERR RAS_BIT(33)
#define ERR_CTL_RET_JSR_TO_ERR RAS_BIT(32)
/* ERR_CTLR bits for MTS_JSR */
#define ERR_CTL_MTS_JSR_MMIO_ERR RAS_BIT(37)
#define ERR_CTL_MTS_JSR_CRAB_ERR RAS_BIT(36)
#define ERR_CTL_MTS_JSR_CARVE_ERR RAS_BIT(35)
#define ERR_CTL_MTS_JSR_NAFLL_ERR RAS_BIT(34)
#define ERR_CTL_MTS_JSR_ERRC_ERR RAS_BIT(33)
#define ERR_CTL_MTS_JSR_ERRUC_ERR RAS_BIT(32)
/* ERR_CTLR bits for LSD_1/LSD_STQ */
#define ERR_CTL_LSD1_CCDSMLECC_ERR RAS_BIT(41)
#define ERR_CTL_LSD1_CCDSECC_D_ERR RAS_BIT(40)
#define ERR_CTL_LSD1_CCDSECC_S_ERR RAS_BIT(39)
#define ERR_CTL_LSD1_CCDLECC_D_ERR RAS_BIT(38)
#define ERR_CTL_LSD1_CCDLECC_S_ERR RAS_BIT(37)
#define ERR_CTL_LSD1_CCMH_ERR RAS_BIT(35)
#define ERR_CTL_LSD1_CCTSP_ERR RAS_BIT(33)
#define ERR_CTL_LSD1_CCTLP_ERR RAS_BIT(32)
/* ERR_CTLR bits for LSD_2/LSD_DCC */
#define ERR_CTL_LSD2_BTMCMH_ERR RAS_BIT(41)
#define ERR_CTL_LSD2_CCDEECC_D_ERR RAS_BIT(39)
#define ERR_CTL_LSD2_CCDEECC_S_ERR RAS_BIT(38)
#define ERR_CTL_LSD2_VRCBP_ERR RAS_BIT(37)
#define ERR_CTL_LSD2_VRCDECC_D_ERR RAS_BIT(36)
#define ERR_CTL_LSD2_VRCDECC_S_ERR RAS_BIT(35)
#define ERR_CTL_LSD2_BTCCPPP_ERR RAS_BIT(33)
#define ERR_CTL_LSD2_BTCCVPP_ERR RAS_BIT(32)
/* ERR_CTLR bits for LSD_3/LSD_L1HPF */
#define ERR_CTL_LSD3_L2TLBP_ERR RAS_BIT(32)
/* Error records per CCPLEX */
/* ERR_CTLR bits for CMU:CCPMU or DPMU*/
#define ERR_CTL_DPMU_DMCE_UCODE_ERR RAS_BIT(36)
#define ERR_CTL_DPMU_DMCE_IL1_PAR_ERR RAS_BIT(35)
#define ERR_CTL_DPMU_DMCE_TIMEOUT_ERR RAS_BIT(34)
#define ERR_CTL_DPMU_CRAB_ACC_ERR RAS_BIT(33)
#define ERR_CTL_DPMU_DMCE_CRAB_ACC_ERR RAS_BIT(32)
/* ERR_CTLR bits for SCF:IOB*/
#define ERR_CTL_SCFIOB_REQ_PAR_ERR RAS_BIT(41)
#define ERR_CTL_SCFIOB_PUT_PAR_ERR RAS_BIT(40)
#define ERR_CTL_SCFIOB_PUT_UECC_ERR RAS_BIT(39)
#define ERR_CTL_SCFIOB_CBB_ERR RAS_BIT(38)
#define ERR_CTL_SCFIOB_MMCRAB_ERR RAS_BIT(37)
#define ERR_CTL_SCFIOB_IHI_ERR RAS_BIT(36)
#define ERR_CTL_SCFIOB_CRI_ERR RAS_BIT(35)
#define ERR_CTL_SCFIOB_TBX_ERR RAS_BIT(34)
#define ERR_CTL_SCFIOB_EVP_ERR RAS_BIT(33)
#define ERR_CTL_SCFIOB_PUT_CECC_ERR RAS_BIT(32)
#define ERRX_SCFIOB 1025
/* ERR_CTLR bits for SCF:SNOC*/
#define ERR_CTL_SCFSNOC_MISC_RSP_ERR RAS_BIT(42)
#define ERR_CTL_SCFSNOC_MISC_PAR_ERR RAS_BIT(41)
#define ERR_CTL_SCFSNOC_MISC_UECC_ERR RAS_BIT(40)
#define ERR_CTL_SCFSNOC_DVMU_PAR_ERR RAS_BIT(39)
#define ERR_CTL_SCFSNOC_DVMU_TO_ERR RAS_BIT(38)
#define ERR_CTL_SCFSNOC_CPE_REQ_ERR RAS_BIT(37)
#define ERR_CTL_SCFSNOC_CPE_RSP_ERR RAS_BIT(36)
#define ERR_CTL_SCFSNOC_CPE_TO_ERR RAS_BIT(35)
#define ERR_CTL_SCFSNOC_CARVEOUT_ERR RAS_BIT(34)
#define ERR_CTL_SCFSNOC_MISC_CECC_ERR RAS_BIT(33)
#define ERR_CTL_SCFSNOC_CARVEOUT_CECC_ERR RAS_BIT(32)
/* ERR_CTLR bits for SCF:CTU*/
#define ERR_CTL_CMUCTU_TRCDMA_REQ_ERR RAS_BIT(39)
#define ERR_CTL_CMUCTU_CTU_SNP_ERR RAS_BIT(38)
#define ERR_CTL_CMUCTU_TAG_PAR_ERR RAS_BIT(37)
#define ERR_CTL_CMUCTU_CTU_DATA_PAR_ERR RAS_BIT(36)
#define ERR_CTL_CMUCTU_RSP_PAR_ERR RAS_BIT(35)
#define ERR_CTL_CMUCTU_TRL_PAR_ERR RAS_BIT(34)
#define ERR_CTL_CMUCTU_MCF_PAR_ERR RAS_BIT(33)
#define ERR_CTL_CMUCTU_TRCDMA_PAR_ERR RAS_BIT(32)
/* ERR_CTLR bits for SCF:L3_* */
#define ERR_CTL_SCFL3_CECC_ERR RAS_BIT(44)
#define ERR_CTL_SCFL3_SNOC_INTFC_ERR RAS_BIT(43)
#define ERR_CTL_SCFL3_MCF_INTFC_ERR RAS_BIT(42)
#define ERR_CTL_SCFL3_TAG_ERR RAS_BIT(41)
#define ERR_CTL_SCFL3_L2DIR_ERR RAS_BIT(41)
#define ERR_CTL_SCFL3_UECC_ERR RAS_BIT(39)
#define ERR_CTL_SCFL3_MH_CAM_ERR RAS_BIT(37)
#define ERR_CTL_SCFL3_MH_TAG_ERR RAS_BIT(36)
#define ERR_CTL_SCFL3_UNSUPP_REQ_ERR RAS_BIT(35)
#define ERR_CTL_SCFL3_PROT_ERR RAS_BIT(34)
#define ERRX_SCFL3 768
/* ERR_CTLR bits for SCFCMU_CLOCKS */
#define ERR_CTL_SCFCMU_FREQ3_MON_ERR RAS_BIT(39)
#define ERR_CTL_SCFCMU_FREQ2_MON_ERR RAS_BIT(38)
#define ERR_CTL_SCFCMU_FREQ1_MON_ERR RAS_BIT(37)
#define ERR_CTL_SCFCMU_FREQ0_MON_ERR RAS_BIT(36)
#define ERR_CTL_SCFCMU_ADC1_MON_ERR RAS_BIT(35)
#define ERR_CTL_SCFCMU_ADC0_MON_ERR RAS_BIT(34)
#define ERR_CTL_SCFCMU_LUT1_PAR_ERR RAS_BIT(33)
#define ERR_CTL_SCFCMU_LUT0_PAR_ERR RAS_BIT(32)
/* Error records per Core Cluster */
/* ERR_CTLR bits for L2 */
#define ERR_CTL_L2_MLD_ECCC_ERR RAS_BIT(32)
#define ERR_CTL_L2_URD_ECCC_ERR RAS_BIT(33)
#define ERR_CTL_L2_MLD_ECCUD_ERR RAS_BIT(34)
#define ERR_CTL_L2_URD_ECCU_ERR RAS_BIT(35)
#define ERR_CTL_L2_MLD_ECCUC_ERR RAS_BIT(36)
#define ERR_CTL_L2_NTDP_ERR RAS_BIT(38)
#define ERR_CTL_L2_URDP RAS_BIT(39)
#define ERR_CTL_L2_MLTP_ERR RAS_BIT(40)
#define ERR_CTL_L2_NTTP_ERR RAS_BIT(41)
#define ERR_CTL_L2_URTP_ERR RAS_BIT(42)
#define ERR_CTL_L2_L2MH_ERR RAS_BIT(43)
#define ERR_CTL_L2_CORE02L2CP_ERR RAS_BIT(44)
#define ERR_CTL_L2_CORE12L2CP_ERR RAS_BIT(45)
#define ERR_CTL_L2_SCF2L2C_ECCC_ERR RAS_BIT(46)
#define ERR_CTL_L2_SCF2L2C_ECCU_ERR RAS_BIT(47)
#define ERR_CTL_L2_SCF2L2C_FILLDATAP_ERR RAS_BIT(48)
#define ERR_CTL_L2_SCF2L2C_ADVNOTP_ERR RAS_BIT(49)
#define ERR_CTL_L2_SCF2L2C_REQRSPP_ERR RAS_BIT(50)
#define ERR_CTL_L2_SCF2L2C_DECWTERR_ERR RAS_BIT(51)
#define ERR_CTL_L2_SCF2L2C_DECRDERR_ERR RAS_BIT(52)
#define ERR_CTL_L2_SCF2L2C_SLVWTERR_ERR RAS_BIT(53)
#define ERR_CTL_L2_SCF2L2C_SLVRDERR_ERR RAS_BIT(54)
#define ERR_CTL_L2_L2PCL_ERR RAS_BIT(55)
#define ERR_CTL_L2_URTTO_ERR RAS_BIT(56)
/* ERR_CTLR bits for MMU */
#define ERR_CTL_MMU_WCPERR_ERR RAS_BIT(33)
#define ERR_CTL_MMU_ACPERR_ERR RAS_BIT(32)
/* ERR_CTLR bits for CLUSTER_CLOCKS */
#define ERR_CTL_CC_FREQ_MON_ERR RAS_BIT(32)
/* Constants used by ras_trip */
#define ERRi_MISC0_CONST 0x2222222222222222UL
#define ERRi_MISC1_CONST 0x3333333333333333UL
#define ERRi_ADDR_CONST 0x4444444444444444UL
enum {
IFU, /* 0 */
JSR_RET, /* 1 */
JSR_MTS, /* 2 */
LSD_STQ, /* 3 */
LSD_DCC, /* 4 */
LSD_L1HPF, /* 5 */
L2, /* 6 */
Cluster_Clocks, /* 7 */
MMU, /* 8 */
L3, /* 9 */
CCPMU, /* A */
SCF_IOB, /* B */
SCF_SNOC, /* C */
SCF_CTU, /* D */
CMU_Clocks, /* E */
};
struct tegra_ras_impl_err_bit {
u64 uncorr_bit;
u64 corr_bit;
};