* ========== Copyright Header Begin ==========================================
* Hypervisor Software File: error_tables.c
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* - Do no alter or remove copyright notices
* - Redistribution and use of this software in source and binary forms, with
* or without modification, are permitted provided that the following
* - Redistribution of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistribution 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 Sun Microsystems, Inc. or the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* This software is provided "AS IS," without a warranty of any kind.
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
* MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
* OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
* FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* You acknowledge that this software is not designed, licensed or
* intended for use in the design, construction, operation or maintenance of
* ========== Copyright Header End ============================================
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
#pragma ident "@(#)error_tables.c 1.13 07/09/11 SMI"
* statically allocate buffers FERG/SUN4V reporting
err_sun4v_rprt_t err_sun4v_rprt
[MAX_ERROR_REPORT_BUFS
];
err_diag_rprt_t err_diag_rprt
[MAX_ERROR_REPORT_BUFS
];
extern void clear_soc(void);
extern void clear_ssi(void);
* Diagnosis Engine report functions
* These are used to populate the ereport sent to the SP for the
extern void dump_store_buffer(void);
extern void itlb_dump(void);
extern void dtlb_dump(void);
extern void dump_scratchpad(void);
extern void dump_trapstack(void);
extern void dump_dbu_data(void);
extern void dump_mra(void);
extern void dump_mamu(void);
extern void dump_soc(void);
extern void dump_soc_fbr(void);
extern void dump_tick_compare(void);
extern void dump_icache(void);
extern void dump_dcache(void);
extern void dump_l2_cache(void);
extern void dump_reg_ecc(void);
extern void dump_ssi(void);
extern void dump_no_error(void);
extern void dump_hvabort(void);
extern void itlb_demap_all(void);
extern void itlb_demap_page(void);
extern void dtlb_demap_all(void);
extern void correct_trapstack(void);
extern void correct_tick_compare(void);
extern void correct_tick_tccp(void);
extern void correct_tick_tccd(void);
extern void correct_l2_ildau(void);
extern void correct_l2_dldau(void);
extern void correct_l2_dldac(void);
extern void correct_stb(void);
extern void correct_frfc(void);
extern void correct_frfu(void);
extern void correct_irfc(void);
extern void correct_irfu(void);
extern void correct_imra(void);
extern void correct_dmra(void);
extern void correct_scac(void);
extern void correct_scau(void);
extern void clear_tick_compare(void);
extern void reset_soc_fbr(void);
* sun4v guest report functions
* populate the sun4v guest ereport packet with error-specific data
extern void stb_sun4v_report(void);
extern void sca_sun4v_report(void);
extern void tick_sun4v_report(void);
extern void tsa_sun4v_report(void);
extern void l2_sun4v_report(void);
extern void irf_sun4v_report(void);
extern void frf_sun4v_report(void);
extern void soc_sun4v_report(void);
extern void l2_ce_storm(void);
extern void tick_cmp_storm(void);
extern void soc_storm(void);
extern void icache_storm(void);
extern void dcache_storm(void);
extern void dram_storm(void);
* error-specific print functions
extern void itlb_print(void);
extern void dtlb_print(void);
extern void mra_print(void);
extern void l2_cache_print(void);
extern void print_soc(void);
* Errata: Filter out Addr parity err synd reported by N2 MCU on scrub (DSU)
extern void verify_dsu_error(void);
* S/W error table for use with hvabort
error_table_entry_t sw_abort_errors
[] = {
{ "HVABORT (asm)", dump_hvabort
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_ABORT
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_ABORT_DATA
+ ERR_ABORT_DATA_SIZE
},
{ "HVABORT (C)", dump_hvabort
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_ABORT_C
|ERR_LAST_IN_TABLE
,
(SER_TYPE_ABORT
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_ABORT_DATA
+ ERR_ABORT_DATA_SIZE
},
* Note: The addresses stored in the tables must be relocated
error_table_entry_t instruction_access_MMU_errors
[] = {
{ "IAMU UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "ITTM", itlb_dump
, null_fcn
, itlb_demap_all
, null_fcn
,
itlb_print
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_ITLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "ITTP", itlb_dump
, null_fcn
, itlb_demap_all
, null_fcn
,
itlb_print
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_ITLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "ITDP", itlb_dump
, null_fcn
, itlb_demap_all
, null_fcn
,
itlb_print
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_ITLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "ITMU", dump_mra
, null_fcn
, correct_imra
, null_fcn
,
mra_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_ITLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_MMU_ERR_REGS_SIZE
},
{ "ITL2U", dump_l2_cache
, l2_sun4v_report
, correct_l2_ildau
, null_fcn
,
l2_cache_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_NON_RESUMABLE
|ERR_STRANDS_PARKED
|
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "ITL2ND", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
l2_cache_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_NON_RESUMABLE
|
ERR_STRANDS_PARKED
|ERR_LAST_IN_TABLE
|ERR_NO_DRAM_DUMP
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
}
error_table_entry_t data_access_MMU_errors
[] = {
{ "DAMU UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "DTTM", dtlb_dump
, null_fcn
, dtlb_demap_all
, null_fcn
,
dtlb_print
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_DTLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "DTTP", dtlb_dump
, null_fcn
, dtlb_demap_all
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_DTLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "DTDP", dtlb_dump
, null_fcn
, dtlb_demap_all
, null_fcn
,
dtlb_print
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_DTLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TLB_SIZE
},
{ "DTMU", dump_mra
, null_fcn
, correct_dmra
, null_fcn
,
mra_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_DTLB
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_MMU_ERR_REGS_SIZE
},
{ "DTL2U", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
l2_cache_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_NON_RESUMABLE
|
ERR_STRANDS_PARKED
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DTL2ND", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
l2_cache_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_NON_RESUMABLE
|
ERR_STRANDS_PARKED
|ERR_LAST_IN_TABLE
|ERR_NO_DRAM_DUMP
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
}
error_table_entry_t internal_processor_errors
[] = {
{ "IPE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "IRFU", dump_reg_ecc
, irf_sun4v_report
, correct_irfu
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_REG_SIZE
},
{ "IRFC", dump_reg_ecc
, null_fcn
, correct_irfc
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_REG_SIZE
},
{ "FRFU", dump_reg_ecc
, frf_sun4v_report
, correct_frfu
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_REG_SIZE
},
{ "FRFC", dump_reg_ecc
, null_fcn
, correct_frfc
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_REG_SIZE
},
{ "SBDLC", dump_store_buffer
, null_fcn
, correct_stb
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "SBDLU", dump_store_buffer
, stb_sun4v_report
, correct_stb
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "MRAU", dump_mra
, null_fcn
, correct_dmra
, null_fcn
,
mra_print
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_MMU_ERR_REGS_SIZE
},
{ "TSAC", dump_trapstack
, null_fcn
, correct_trapstack
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TSA_SIZE
},
{ "TSAU", dump_trapstack
, tsa_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_TSA_SIZE
},
{ "SCAC", dump_scratchpad
, null_fcn
, correct_scac
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SCRATCHPAD_SIZE
},
{ "SCAU", dump_scratchpad
, sca_sun4v_report
, correct_scau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_SCRATCHPAD_SIZE
},
{ "TCCP", dump_tick_compare
, null_fcn
, correct_tick_tccp
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TCA_SIZE
},
{ "TCUP", dump_tick_compare
, tick_sun4v_report
,
clear_tick_compare
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_NON_RESUMABLE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_TCA_SIZE
}
error_table_entry_t hw_corrected_errors
[] = {
{ "HCE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "ICVP", dump_icache
, null_fcn
, null_fcn
, icache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_ICACHE_SIZE
},
{ "ICTP", dump_icache
, null_fcn
, null_fcn
, icache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_ICACHE_SIZE
},
{ "ICTM", dump_icache
, null_fcn
, null_fcn
, icache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_ICACHE_SIZE
},
{ "ICDP", dump_icache
, null_fcn
, null_fcn
, icache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_ICACHE_SIZE
},
{ "DCVP", dump_dcache
, null_fcn
, null_fcn
, dcache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_ICACHE_SIZE
},
{ "DCTP", dump_dcache
, null_fcn
, null_fcn
, dcache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ 0},
{ "DCTM", dump_dcache
, null_fcn
, null_fcn
, dcache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_DCACHE_SIZE
},
{ "DCDP", dump_dcache
, null_fcn
, null_fcn
, dcache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L1C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_DCACHE_SIZE
},
{ "L2C (HCE)", null_fcn
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_USE_L2_CACHE_TABLE
|ERR_USE_DRAM_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "SBDPC", dump_store_buffer
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "SOCC", dump_soc
, null_fcn
, reset_soc_fbr
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_USE_SOC_TABLE
|ERR_LAST_IN_TABLE
|ERR_CLEAR_SOC
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
}
error_table_entry_t store_errors
[] = {
{ "SE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "SBDIOU", dump_store_buffer
, stb_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_NON_RESUMABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_DEFERRED_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "SBAPP", dump_store_buffer
, stb_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_NON_RESUMABLE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_DEFERRED_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
}
error_table_entry_t data_access_errors
[] = {
{ "DAE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "DCL2U", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_CHECK_LINE_STATE
|ERR_IO_PROT
|ERR_NON_RESUMABLE
|
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DCL2ND", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_NON_RESUMABLE
|ERR_NO_DRAM_DUMP
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
},
{ "DAE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "NCU PIO", dump_soc
, soc_sun4v_report
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_IO_PROT
|ERR_UE
|ERR_GL_STORED
|
ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
error_table_entry_t sw_recoverable_errors
[] = {
{ "SRE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "ITL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "ICL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, icache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DTL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DCL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, dcache_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "SRE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "SBDPU", dump_store_buffer
, null_fcn
, correct_stb
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_STB_SIZE
},
{ "MAMU", dump_mamu
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_MAMU_SIZE
},
{ "MAL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "MAL2U", dump_l2_cache
, null_fcn
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_DAU_TYPE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "MAL2ND", dump_l2_cache
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
},
{ "CWQL2C", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "CWQL2U", dump_l2_cache
, null_fcn
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_DAU_TYPE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "CWQL2ND", dump_l2_cache
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
},
{ "TCCD", dump_tick_compare
, null_fcn
, correct_tick_tccd
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_TCA_SIZE
},
{ "TCUD", dump_tick_compare
, tick_sun4v_report
,
clear_tick_compare
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_CMP
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_TCA_SIZE
},
{ "L2U", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_USE_L2_CACHE_TABLE
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "L2ND", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
},
{ "SRE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "SOCU SRE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "L2C (SRE)", null_fcn
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_USE_L2_CACHE_TABLE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
error_table_entry_t instruction_access_errors
[] = {
{ "IAE UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "ICL2U", dump_l2_cache
, l2_sun4v_report
, correct_l2_ildau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_CHECK_LINE_STATE
|ERR_NON_RESUMABLE
|
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "ICL2ND", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_LAST_IN_TABLE
|ERR_NON_RESUMABLE
|ERR_NO_DRAM_DUMP
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
- ERR_DRAM_CONTENTS_SIZE
}
* We could just ignore these as per previous platforms but that
* seems gratuitously lazy, even for us, so we will just report
error_table_entry_t ssi_errors
[] = {
{ "TOUT", dump_ssi
, null_fcn
, clear_ssi
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_SSI
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SSI_SIZE
},
{ "PARITY", dump_ssi
, null_fcn
, clear_ssi
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_SSI
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SSI_SIZE
}
* We use the following sub-table to distinquish between the various
* L2 errors. This table is based on the L2 ESR
error_table_entry_t l2c_errors
[] = {
* Note: L2 ESR entries start at bit[34]
{ "LVC", dump_l2_cache
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "L2C UNKNOWN (1)", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "L2C UNKNOWN (2)", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "DSU", dump_l2_cache
, l2_sun4v_report
, verify_dsu_error
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_USE_DRAM_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DSC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_USE_DRAM_TABLE
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DRU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DRC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DAU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_USE_DRAM_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DAC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_CHECK_LINE_STATE
|ERR_USE_DRAM_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LVF", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
|ERR_NON_RESUMABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LRF", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_NON_RESUMABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LTC", dump_l2_cache
, l2_sun4v_report
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDSU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDSC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDRU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDRC", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDWU", dump_l2_cache
, l2_sun4v_report
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDWC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDAU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "LDAC", dump_l2_cache
, null_fcn
, correct_l2_dldac
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
}
* We use the following sub-table to distinquish between the various
* DRAM errors. This table is based on the DRAM ESR
error_table_entry_t dram_errors
[] = {
* Note: DRAM ESR entries start at bit[54]
{ "FBR", dump_soc_fbr
, null_fcn
, reset_soc_fbr
, dram_storm
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_CLEAR_AMB_ERRORS
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "FBU", dump_l2_cache
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_NON_RESUMABLE
|ERR_CLEAR_AMB_ERRORS
|ERR_FORCE_SIR
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "MEB", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "DBU", dump_dbu_data
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ (ERR_TRAP_REGS_SIZE
* MAXTL
)},
{ "DSU", dump_l2_cache
, l2_sun4v_report
, verify_dsu_error
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DSC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DAU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
{ "DAC", dump_l2_cache
, null_fcn
, null_fcn
, l2_ce_storm
,
null_fcn
, /* DEBUG print function */
ERR_CE
|ERR_CHECK_LINE_STATE
|ERR_LAST_IN_TABLE
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
},
error_table_entry_t precise_dau_errors
[] = {
{ "DAU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_CHECK_LINE_STATE
|ERR_IO_PROT
|ERR_LAST_IN_TABLE
,
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UE_RESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
}
error_table_entry_t precise_ldau_errors
[] = {
{ "LDAU", dump_l2_cache
, l2_sun4v_report
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|ERR_NON_RESUMABLE
|
ERR_CHECK_LINE_STATE
|ERR_IO_PROT
|ERR_LAST_IN_TABLE
,
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_PRECISE_NONRESUMABLE
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
}
* These are for CWQ/MAU errors which cause sw-recoverable_error trap.
* These traps will always occur in HPRIV mode as the hypervisor
* must access the CWQ/MAU hardware on behalf of the guest. However
* we do not want to terminate when we encounter one of these errors
* so these do not have the ERR_NON_RESUMABLE flag set.
error_table_entry_t disrupting_dau_errors
[] = {
{ "DAU", dump_l2_cache
, null_fcn
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
|
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
}
error_table_entry_t disrupting_ldau_errors
[] = {
{ "LDAU", dump_l2_cache
, null_fcn
, correct_l2_dldau
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_UE
|ERR_CHECK_LINE_STATE
|
(SER_TYPE_L2C
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_L2_SIZE
}
* We use the following sub-table to distinquish between the various
* SOC errors. This table is based on the SOC ESR
error_table_entry_t soc_errors
[] = {
{ "SIINIUCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIIDMUCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIINIUCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIIDMUCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIINIUAPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIIDMUDPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIINIUDPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIIDMUAPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUINTERNAL", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUNCUCREDIT", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUSIICREDIT", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "DMUDATAPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUDATAPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUMONDOTABLE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUMONDOFIFO", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUINTTABLE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUPCXDATA", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUPCXUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUCPXUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUDMUUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SOC UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "SIOCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SIOCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NIUCTAGCE", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NIUCTAGUE", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NIUDATAPARITY", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SOC UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "MCU0FBR", dump_soc_fbr
, null_fcn
, reset_soc_fbr
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_CE
|ERR_CLEAR_AMB_ERRORS
|ERR_CLEAR_SOC
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "MCU0ECC", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SOC UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "MCU1FBR", dump_soc_fbr
, null_fcn
, reset_soc_fbr
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_CE
|ERR_CLEAR_AMB_ERRORS
|ERR_CLEAR_SOC
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "MCU1ECC", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SOC UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "MCU2FBR", dump_soc_fbr
, null_fcn
, reset_soc_fbr
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_CE
|ERR_CLEAR_AMB_ERRORS
|ERR_CLEAR_SOC
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "MCU2ECC", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "SOC UNKNOWN", dump_no_error
, null_fcn
, null_fcn
, null_fcn
,
print_soc
, /* DEBUG print function */
(SER_TYPE_UNDEF
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
{ "MCU3FBR", dump_soc_fbr
, null_fcn
, reset_soc_fbr
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_CE
|ERR_CLEAR_AMB_ERRORS
|ERR_CLEAR_SOC
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "MCU3ECC", dump_soc
, null_fcn
, clear_soc
, soc_storm
,
print_soc
, /* DEBUG print function */
SUN4V_NO_REPORT
, EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
},
{ "NCUDMUCREDIT", dump_soc
, null_fcn
, clear_soc
, null_fcn
,
print_soc
, /* DEBUG print function */
ERR_FATAL
|ERR_LAST_IN_TABLE
,
(SER_TYPE_SOC
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ ERR_SOC_SIZE
}
error_table_entry_t dbu_errors
[] = {
{ "DBU", dump_dbu_data
, null_fcn
, null_fcn
, null_fcn
,
null_fcn
, /* DEBUG print function */
ERR_FATAL
|ERR_GL_STORED
|ERR_STRANDS_PARKED
|
ERR_IO_PROT
|ERR_NON_RESUMABLE
|
(SER_TYPE_DRAM
<< SER_TYPE_SHIFT
) | EDESC_UNDEF
,
ERR_DIAG_DATA_OFFSET
+ (ERR_TRAP_REGS_SIZE
* MAXTL
)}
* ECC syndrome table for register file errors
ecc_syndrome_table_entry irf_ecc_syndrome_table
[] = {
ECC_ne
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_C7
, ECC_C0
, ECC_C1
, 0, ECC_C2
, 1, 2, 3,
ECC_C3
, 4, 5, 6, 7, 8, 9, 10,
ECC_C4
, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
ECC_C5
, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
ECC_C6
, 57, 58, 59, 60, 61, 62, 63, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
* Syndrome table for L2 Data, FRF and Store Buffer errors
ecc_syndrome_table_entry l2_ecc_syndrome_table
[] = {
ECC_ne
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_C6
, ECC_C0
, ECC_C1
, 0, ECC_C2
, 1, 2, 3, ECC_C3
,
ECC_C4
, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
ECC_C5
, 26, 27, 28, 29, 30, 31, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_N_M
* Syndrome Table for TSA, TCA, and SCA Data ECC Code
ecc_syndrome_table_entry core_array_ecc_syndrome_table
[] = {
ECC_ne
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
, ECC_U
,
ECC_M
, ECC_C0
, ECC_C1
, 0, ECC_C2
, 1, 2, 3, ECC_C3
, 4, 5, 6, 7, 8, 9, 10,
ECC_C4
, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
ECC_C5
, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
ECC_C6
, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
,
ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
, ECC_M
* Masks used in the calculation of check bits {6:0} for
* floating point (FRF) errors.
ecc_mask_table_entry frfc_ecc_mask_table
[] = {
* From L2 Tag ECC Table E-8, N2 PRM rev. 1.3
ecc_syndrome_table_entry l2_tag_ecc_table
[] = {
/*00*/ 0x007, 0x00B, 0x00D, 0x00E, 0x013, 0x015, 0x016, 0x019,
/*08*/ 0x01A, 0x01C, 0x01F, 0x023, 0x025, 0x026, 0x029, 0x02A,
/*10*/ 0x02C, 0x02F, 0x031, 0x032, 0x034, 0x037,
/* Now we have the check bits */
0x001, 0x002, 0x004, 0x008, 0x010, 0x020,
#endif /* CONFIG_CLEANSER */