aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/mce_amd.h
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2010-08-18 09:11:35 -0400
committerBorislav Petkov <bp@amd64.org>2010-10-21 08:48:00 -0400
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 2712a906afdf..85985c225442 100644
--- a/drivers/edac/mce_amd.h
+++ b/drivers/edac/mce_amd.h
@@ -44,6 +44,39 @@
44#define K8_NBSH_UECC BIT(13) 44#define K8_NBSH_UECC BIT(13)
45#define K8_NBSH_ERR_SCRUBER BIT(8) 45#define K8_NBSH_ERR_SCRUBER BIT(8)
46 46
47enum tt_ids {
48 TT_INSTR = 0,
49 TT_DATA,
50 TT_GEN,
51 TT_RESV,
52};
53
54enum ll_ids {
55 LL_RESV = 0,
56 LL_L1,
57 LL_L2,
58 LL_LG,
59};
60
61enum ii_ids {
62 II_MEM = 0,
63 II_RESV,
64 II_IO,
65 II_GEN,
66};
67
68enum rrrr_ids {
69 R4_GEN = 0,
70 R4_RD,
71 R4_WR,
72 R4_DRD,
73 R4_DWR,
74 R4_IRD,
75 R4_PREF,
76 R4_EVICT,
77 R4_SNOOP,
78};
79
47extern const char *tt_msgs[]; 80extern const char *tt_msgs[];
48extern const char *ll_msgs[]; 81extern const char *ll_msgs[];
49extern const char *rrrr_msgs[]; 82extern const char *rrrr_msgs[];
@@ -63,6 +96,13 @@ struct err_regs {
63 u32 nbeal; 96 u32 nbeal;
64}; 97};
65 98
99/*
100 * per-family decoder ops
101 */
102struct amd_decoder_ops {
103 bool (*dc_mce)(u16);
104};
105
66void amd_report_gart_errors(bool); 106void amd_report_gart_errors(bool);
67void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32)); 107void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32));
68void amd_unregister_ecc_decoder(void (*f)(int, struct mce *, u32)); 108void amd_unregister_ecc_decoder(void (*f)(int, struct mce *, u32));