Browse Source

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>
Borislav Petkov 15 years ago
parent
commit
239642fe19
3 changed files with 26 additions and 4 deletions
  1. 1 4
      drivers/edac/amd64_edac.c
  2. 1 0
      drivers/edac/edac_core.h
  3. 24 0
      drivers/edac/edac_mc.c

+ 1 - 4
drivers/edac/amd64_edac.c

@@ -1024,10 +1024,7 @@ static enum mem_type amd64_determine_memory_type(struct amd64_pvt *pvt)
 		type = (pvt->dclr0 & BIT(18)) ? MEM_DDR : MEM_RDDR;
 		type = (pvt->dclr0 & BIT(18)) ? MEM_DDR : MEM_RDDR;
 	}
 	}
 
 
-	debugf1("  Memory type is: %s\n",
-		(type == MEM_DDR2) ? "MEM_DDR2" :
-		(type == MEM_RDDR2) ? "MEM_RDDR2" :
-		(type == MEM_DDR) ? "MEM_DDR" : "MEM_RDDR");
+	debugf1("  Memory type is: %s\n", edac_mem_types[type]);
 
 
 	return type;
 	return type;
 }
 }

+ 1 - 0
drivers/edac/edac_core.h

@@ -74,6 +74,7 @@
 
 
 #ifdef CONFIG_EDAC_DEBUG
 #ifdef CONFIG_EDAC_DEBUG
 extern int edac_debug_level;
 extern int edac_debug_level;
+extern const char *edac_mem_types[];
 
 
 #ifndef CONFIG_EDAC_DEBUG_VERBOSE
 #ifndef CONFIG_EDAC_DEBUG_VERBOSE
 #define edac_debug_printk(level, fmt, arg...)                           \
 #define edac_debug_printk(level, fmt, arg...)                           \

+ 24 - 0
drivers/edac/edac_mc.c

@@ -76,6 +76,30 @@ static void edac_mc_dump_mci(struct mem_ctl_info *mci)
 	debugf3("\tpvt_info = %p\n\n", mci->pvt_info);
 	debugf3("\tpvt_info = %p\n\n", mci->pvt_info);
 }
 }
 
 
+/*
+ * keep those in sync with the enum mem_type
+ */
+const char *edac_mem_types[] = {
+	"Empty csrow",
+	"Reserved csrow type",
+	"Unknown csrow type",
+	"Fast page mode RAM",
+	"Extended data out RAM",
+	"Burst Extended data out RAM",
+	"Single data rate SDRAM",
+	"Registered single data rate SDRAM",
+	"Double data rate SDRAM",
+	"Registered Double data rate SDRAM",
+	"Rambus DRAM",
+	"Unbuffered DDR2 RAM",
+	"Fully buffered DDR2",
+	"Registered DDR2 RAM",
+	"Rambus XDR",
+	"Unbuffered DDR3 RAM",
+	"Registered DDR3 RAM",
+};
+EXPORT_SYMBOL_GPL(edac_mem_types);
+
 #endif				/* CONFIG_EDAC_DEBUG */
 #endif				/* CONFIG_EDAC_DEBUG */
 
 
 /* 'ptr' points to a possibly unaligned item X such that sizeof(X) is 'size'.
 /* 'ptr' points to a possibly unaligned item X such that sizeof(X) is 'size'.