aboutsummaryrefslogtreecommitdiff
path: root/drivers/edac/mce_amd.h
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2010-08-18 15:11:35 +0200
committerBorislav Petkov <bp@amd64.org>2010-10-21 14:48:00 +0200
commit888ab8e6eb2e41179cdc8edf5d0abd1cce0f0370 (patch)
tree4e7eb4f0ad3ebb10d75e7764355ebf3f4a316f72 /drivers/edac/mce_amd.h
parent47ca08a40b043815134d489e21870b53276f1a4a (diff)
EDAC, MCE: Adjust DC decoders to F14h
Add a per-family data cache decoders. Since there is a certain overlap between the different DC MCE signatures, reuse functionality between the families as far as possible. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac/mce_amd.h')
-rw-r--r--drivers/edac/mce_amd.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
index 2712a906afd..85985c22544 100644
--- a/drivers/edac/mce_amd.h
+++ b/drivers/edac/mce_amd.h
@@ -44,6 +44,39 @@
#define K8_NBSH_UECC BIT(13)
#define K8_NBSH_ERR_SCRUBER BIT(8)
+enum tt_ids {
+ TT_INSTR = 0,
+ TT_DATA,
+ TT_GEN,
+ TT_RESV,
+};
+
+enum ll_ids {
+ LL_RESV = 0,
+ LL_L1,
+ LL_L2,
+ LL_LG,
+};
+
+enum ii_ids {
+ II_MEM = 0,
+ II_RESV,
+ II_IO,
+ II_GEN,
+};
+
+enum rrrr_ids {
+ R4_GEN = 0,
+ R4_RD,
+ R4_WR,
+ R4_DRD,
+ R4_DWR,
+ R4_IRD,
+ R4_PREF,
+ R4_EVICT,
+ R4_SNOOP,
+};
+
extern const char *tt_msgs[];
extern const char *ll_msgs[];
extern const char *rrrr_msgs[];
@@ -63,6 +96,13 @@ struct err_regs {
u32 nbeal;
};
+/*
+ * per-family decoder ops
+ */
+struct amd_decoder_ops {
+ bool (*dc_mce)(u16);
+};
+
void amd_report_gart_errors(bool);
void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32));
void amd_unregister_ecc_decoder(void (*f)(int, struct mce *, u32));