aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2009-11-12 09:33:16 -0500
committerBorislav Petkov <borislav.petkov@amd.com>2009-12-07 13:14:31 -0500
commit239642fe19adc19ba0a69e96f3b1904dfd6a3b9f (patch)
tree76ea52d36740bb726746e0a3f49c3f9ac4fd78e8 /drivers/edac
parentcec7924f568eddcccdbfd814b136554b1b8dc624 (diff)
edac: add memory types strings for debugging
Instead of using deeply-nested conditionals for dumping the DIMM type in debug mode, add a strings array of the supported DIMM types. This is useful in cases where an edac driver supports multiple DRAM types and is only defined in debug builds. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/amd64_edac.c5
-rw-r--r--drivers/edac/edac_core.h1
-rw-r--r--drivers/edac/edac_mc.c24
3 files changed, 26 insertions, 4 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index c403af2e0081..708d065efc95 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -1024,10 +1024,7 @@ static enum mem_type amd64_determine_memory_type(struct amd64_pvt *pvt)
1024 type = (pvt->dclr0 & BIT(18)) ? MEM_DDR : MEM_RDDR; 1024 type = (pvt->dclr0 & BIT(18)) ? MEM_DDR : MEM_RDDR;
1025 } 1025 }
1026 1026
1027 debugf1(" Memory type is: %s\n", 1027 debugf1(" Memory type is: %s\n", edac_mem_types[type]);
1028 (type == MEM_DDR2) ? "MEM_DDR2" :
1029 (type == MEM_RDDR2) ? "MEM_RDDR2" :
1030 (type == MEM_DDR) ? "MEM_DDR" : "MEM_RDDR");
1031 1028
1032 return type; 1029 return type;
1033} 1030}
diff --git a/drivers/edac/edac_core.h b/drivers/edac/edac_core.h
index 12f355cafdbe..001b2e797fb3 100644
--- a/drivers/edac/edac_core.h
+++ b/drivers/edac/edac_core.h
@@ -74,6 +74,7 @@
74 74
75#ifdef CONFIG_EDAC_DEBUG 75#ifdef CONFIG_EDAC_DEBUG
76extern int edac_debug_level; 76extern int edac_debug_level;
77extern const char *edac_mem_types[];
77 78
78#ifndef CONFIG_EDAC_DEBUG_VERBOSE 79#ifndef CONFIG_EDAC_DEBUG_VERBOSE
79#define edac_debug_printk(level, fmt, arg...) \ 80#define edac_debug_printk(level, fmt, arg...) \
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index b629c41756f0..3630308e7b81 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -76,6 +76,30 @@ static void edac_mc_dump_mci(struct mem_ctl_info *mci)
76 debugf3("\tpvt_info = %p\n\n", mci->pvt_info); 76 debugf3("\tpvt_info = %p\n\n", mci->pvt_info);
77} 77}
78 78
79/*
80 * keep those in sync with the enum mem_type
81 */
82const char *edac_mem_types[] = {
83 "Empty csrow",
84 "Reserved csrow type",
85 "Unknown csrow type",
86 "Fast page mode RAM",
87 "Extended data out RAM",
88 "Burst Extended data out RAM",
89 "Single data rate SDRAM",
90 "Registered single data rate SDRAM",
91 "Double data rate SDRAM",
92 "Registered Double data rate SDRAM",
93 "Rambus DRAM",
94 "Unbuffered DDR2 RAM",
95 "Fully buffered DDR2",
96 "Registered DDR2 RAM",
97 "Rambus XDR",
98 "Unbuffered DDR3 RAM",
99 "Registered DDR3 RAM",
100};
101EXPORT_SYMBOL_GPL(edac_mem_types);
102
79#endif /* CONFIG_EDAC_DEBUG */ 103#endif /* CONFIG_EDAC_DEBUG */
80 104
81/* 'ptr' points to a possibly unaligned item X such that sizeof(X) is 'size'. 105/* 'ptr' points to a possibly unaligned item X such that sizeof(X) is 'size'.