summaryrefslogtreecommitdiffstats
path: root/sys/contrib/octeon-sdk/cvmx-l2t-defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/octeon-sdk/cvmx-l2t-defs.h')
-rw-r--r--sys/contrib/octeon-sdk/cvmx-l2t-defs.h649
1 files changed, 649 insertions, 0 deletions
diff --git a/sys/contrib/octeon-sdk/cvmx-l2t-defs.h b/sys/contrib/octeon-sdk/cvmx-l2t-defs.h
new file mode 100644
index 0000000..b16becf
--- /dev/null
+++ b/sys/contrib/octeon-sdk/cvmx-l2t-defs.h
@@ -0,0 +1,649 @@
+/***********************license start***************
+ * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
+ * reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+
+ * * Neither the name of Cavium Inc. nor the names of
+ * its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+
+ * This Software, including technical data, may be subject to U.S. export control
+ * laws, including the U.S. Export Administration Act and its associated
+ * regulations, and may be subject to export or import regulations in other
+ * countries.
+
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+ * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
+ * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
+ * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
+ * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
+ * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
+ * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
+ * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+ * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
+ * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
+ ***********************license end**************************************/
+
+
+/**
+ * cvmx-l2t-defs.h
+ *
+ * Configuration and status register (CSR) type definitions for
+ * Octeon l2t.
+ *
+ * This file is auto generated. Do not edit.
+ *
+ * <hr>$Revision$<hr>
+ *
+ */
+#ifndef __CVMX_L2T_DEFS_H__
+#define __CVMX_L2T_DEFS_H__
+
+#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
+#define CVMX_L2T_ERR CVMX_L2T_ERR_FUNC()
+static inline uint64_t CVMX_L2T_ERR_FUNC(void)
+{
+ if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX)))
+ cvmx_warn("CVMX_L2T_ERR not supported on this chip\n");
+ return CVMX_ADD_IO_SEG(0x0001180080000008ull);
+}
+#else
+#define CVMX_L2T_ERR (CVMX_ADD_IO_SEG(0x0001180080000008ull))
+#endif
+
+/**
+ * cvmx_l2t_err
+ *
+ * L2T_ERR = L2 Tag Errors
+ *
+ * Description: L2 Tag ECC SEC/DED Errors and Interrupt Enable
+ */
+union cvmx_l2t_err {
+ uint64_t u64;
+ struct cvmx_l2t_err_s {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_29_63 : 35;
+ uint64_t fadru : 1; /**< Failing L2 Tag Upper Address Bit (Index[10])
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADRU contains the upper(MSB bit) cacheline index
+ into the L2 Tag Store. */
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is completed
+ successfully, however the address is NOT locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t fset : 3; /**< Failing L2 Tag Hit Set# (1-of-8)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t fadr : 10; /**< Failing L2 Tag Address (10-bit Index)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the lower 10bit cacheline index
+ into the L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 19-bit
+ L2 Tag Arrays [V,D,L,TAG[33:18]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 10;
+ uint64_t fset : 3;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t fadru : 1;
+ uint64_t reserved_29_63 : 35;
+#endif
+ } s;
+ struct cvmx_l2t_err_cn30xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_28_63 : 36;
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is
+ completed successfully, however the address is NOT
+ locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t reserved_23_23 : 1;
+ uint64_t fset : 2; /**< Failing L2 Tag Hit Set# (1-of-4)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t reserved_19_20 : 2;
+ uint64_t fadr : 8; /**< Failing L2 Tag Store Index (8-bit)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the 8bit cacheline index into the
+ L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 22-bit
+ L2 Tag Arrays [V,D,L,TAG[33:15]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 8;
+ uint64_t reserved_19_20 : 2;
+ uint64_t fset : 2;
+ uint64_t reserved_23_23 : 1;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t reserved_28_63 : 36;
+#endif
+ } cn30xx;
+ struct cvmx_l2t_err_cn31xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_28_63 : 36;
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is completed
+ successfully, however the address is NOT locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t reserved_23_23 : 1;
+ uint64_t fset : 2; /**< Failing L2 Tag Hit Set# (1-of-4)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t reserved_20_20 : 1;
+ uint64_t fadr : 9; /**< Failing L2 Tag Address (9-bit Index)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the 9-bit cacheline index into the
+ L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 21-bit
+ L2 Tag Arrays [V,D,L,TAG[33:16]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 9;
+ uint64_t reserved_20_20 : 1;
+ uint64_t fset : 2;
+ uint64_t reserved_23_23 : 1;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t reserved_28_63 : 36;
+#endif
+ } cn31xx;
+ struct cvmx_l2t_err_cn38xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_28_63 : 36;
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is completed
+ successfully, however the address is NOT locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t fset : 3; /**< Failing L2 Tag Hit Set# (1-of-8)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t fadr : 10; /**< Failing L2 Tag Address (10-bit Index)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the 10bit cacheline index into the
+ L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 20-bit
+ L2 Tag Arrays [V,D,L,TAG[33:17]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 10;
+ uint64_t fset : 3;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t reserved_28_63 : 36;
+#endif
+ } cn38xx;
+ struct cvmx_l2t_err_cn38xx cn38xxp2;
+ struct cvmx_l2t_err_cn50xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_28_63 : 36;
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is completed
+ successfully, however the address is NOT locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t fset : 3; /**< Failing L2 Tag Hit Set# (1-of-8)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t reserved_18_20 : 3;
+ uint64_t fadr : 7; /**< Failing L2 Tag Address (7-bit Index)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the lower 7bit cacheline index
+ into the L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 23-bit
+ L2 Tag Arrays [V,D,L,TAG[33:14]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 7;
+ uint64_t reserved_18_20 : 3;
+ uint64_t fset : 3;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t reserved_28_63 : 36;
+#endif
+ } cn50xx;
+ struct cvmx_l2t_err_cn52xx {
+#ifdef __BIG_ENDIAN_BITFIELD
+ uint64_t reserved_28_63 : 36;
+ uint64_t lck_intena2 : 1; /**< L2 Tag Lock Error2 Interrupt Enable bit */
+ uint64_t lckerr2 : 1; /**< HW detected a case where a Rd/Wr Miss from PP#n
+ could not find an available/unlocked set (for
+ replacement).
+ Most likely, this is a result of SW mixing SET
+ PARTITIONING with ADDRESS LOCKING. If SW allows
+ another PP to LOCKDOWN all SETs available to PP#n,
+ then a Rd/Wr Miss from PP#n will be unable
+ to determine a 'valid' replacement set (since LOCKED
+ addresses should NEVER be replaced).
+ If such an event occurs, the HW will select the smallest
+ available SET(specified by UMSK'x)' as the replacement
+ set, and the address is unlocked. */
+ uint64_t lck_intena : 1; /**< L2 Tag Lock Error Interrupt Enable bit */
+ uint64_t lckerr : 1; /**< SW attempted to LOCK DOWN the last available set of
+ the INDEX (which is ignored by HW - but reported to SW).
+ The LDD(L1 load-miss) for the LOCK operation is completed
+ successfully, however the address is NOT locked.
+ NOTE: 'Available' sets takes the L2C_SPAR*[UMSK*]
+ into account. For example, if diagnostic PPx has
+ UMSKx defined to only use SETs [1:0], and SET1 had
+ been previously LOCKED, then an attempt to LOCK the
+ last available SET0 would result in a LCKERR. (This
+ is to ensure that at least 1 SET at each INDEX is
+ not LOCKED for general use by other PPs). */
+ uint64_t fset : 3; /**< Failing L2 Tag Hit Set# (1-of-8)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set and
+ (FSYN != 0), the FSET specifies the failing hit-set.
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit-set
+ is specified by the L2C_DBG[SET]. */
+ uint64_t reserved_20_20 : 1;
+ uint64_t fadr : 9; /**< Failing L2 Tag Address (9-bit Index)
+ When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the FADR contains the lower 9bit cacheline index
+ into the L2 Tag Store. */
+ uint64_t fsyn : 6; /**< When L2T_ERR[SEC_ERR] or L2T_ERR[DED_ERR] are set,
+ the contents of this register contain the 6-bit
+ syndrome for the hit set only.
+ If (FSYN = 0), the SBE or DBE reported was for one of
+ the "non-hit" sets at the failing index(FADR).
+ NOTE: During a force-hit (L2T/L2D/L2T=1), the hit set
+ is specified by the L2C_DBG[SET].
+ If (FSYN != 0), the SBE or DBE reported was for the
+ hit set at the failing index(FADR) and failing
+ set(FSET).
+ SW NOTE: To determine which "non-hit" set was in error,
+ SW can use the L2C_DBG[L2T] debug feature to explicitly
+ read the other sets at the failing index(FADR). When
+ (FSYN !=0), then the FSET contains the failing hit-set.
+ NOTE: A DED Error will always overwrite a SEC Error
+ SYNDROME and FADR). */
+ uint64_t ded_err : 1; /**< L2T Double Bit Error detected (DED)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for double bit errors(DBEs).
+ This bit is set if ANY of the 8 sets contains a DBE.
+ DBEs also generated an interrupt(if enabled). */
+ uint64_t sec_err : 1; /**< L2T Single Bit Error corrected (SEC)
+ During every L2 Tag Probe, all 8 sets Tag's (at a
+ given index) are checked for single bit errors(SBEs).
+ This bit is set if ANY of the 8 sets contains an SBE.
+ SBEs are auto corrected in HW and generate an
+ interrupt(if enabled). */
+ uint64_t ded_intena : 1; /**< L2 Tag ECC Double Error Detect(DED) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on double bit (uncorrectable) errors from
+ the L2 Tag Arrays. */
+ uint64_t sec_intena : 1; /**< L2 Tag ECC Single Error Correct(SEC) Interrupt
+ Enable bit. When set, allows interrupts to be
+ reported on single bit (correctable) errors from
+ the L2 Tag Arrays. */
+ uint64_t ecc_ena : 1; /**< L2 Tag ECC Enable
+ When set, enables 6-bit SEC/DED codeword for 21-bit
+ L2 Tag Arrays [V,D,L,TAG[33:16]] */
+#else
+ uint64_t ecc_ena : 1;
+ uint64_t sec_intena : 1;
+ uint64_t ded_intena : 1;
+ uint64_t sec_err : 1;
+ uint64_t ded_err : 1;
+ uint64_t fsyn : 6;
+ uint64_t fadr : 9;
+ uint64_t reserved_20_20 : 1;
+ uint64_t fset : 3;
+ uint64_t lckerr : 1;
+ uint64_t lck_intena : 1;
+ uint64_t lckerr2 : 1;
+ uint64_t lck_intena2 : 1;
+ uint64_t reserved_28_63 : 36;
+#endif
+ } cn52xx;
+ struct cvmx_l2t_err_cn52xx cn52xxp1;
+ struct cvmx_l2t_err_s cn56xx;
+ struct cvmx_l2t_err_s cn56xxp1;
+ struct cvmx_l2t_err_s cn58xx;
+ struct cvmx_l2t_err_s cn58xxp1;
+};
+typedef union cvmx_l2t_err cvmx_l2t_err_t;
+
+#endif
OpenPOWER on IntegriCloud