mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Borislav Petkov <borislav.petkov@amd.com>
To: <linux-kernel@vger.kernel.org>
Cc: <x86@kernel.org>, <norsk5@yahoo.com>
Subject: [PATCH 09/21] amd64_edac: dump DIMM sizes on K8 too
Date: Mon, 16 Nov 2009 15:16:36 +0100	[thread overview]
Message-ID: <1258381008-18783-10-git-send-email-borislav.petkov@amd.com> (raw)
In-Reply-To: <1258381008-18783-1-git-send-email-borislav.petkov@amd.com>

Extend f10_debug_display_dimm_sizes to dump the logical DIMMs
configuration on K8 revF too. Remove the ganged arg since we print the
DCT operating mode (ganged vs unganged) earlier.

Also, DCT csrow configuration is relevant therefore dump it as
KERN_DEBUG instead of only on debug builds. Remove misleading DIMM
output since there's no reliable way of mapping of chip selects to
actual physical DIMMs.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
---
 drivers/edac/amd64_edac.c |   42 ++++++++++++++++++++++--------------------
 1 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index c65ad2d..c6d1aed 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -822,8 +822,7 @@ static enum edac_type amd64_determine_edac_cap(struct amd64_pvt *pvt)
 }
 
 
-static void f10_debug_display_dimm_sizes(int ctrl, struct amd64_pvt *pvt,
-					 int ganged);
+static void amd64_debug_display_dimm_sizes(int ctrl, struct amd64_pvt *pvt);
 
 static void amd64_dump_dramcfg_low(u32 dclr, int chan)
 {
@@ -875,8 +874,10 @@ static void amd64_dump_misc_regs(struct amd64_pvt *pvt)
 		(pvt->dhar & DHAR_VALID) ? "yes" : "no");
 
 	/* everything below this point is Fam10h and above */
-	if (boot_cpu_data.x86 == 0xf)
+	if (boot_cpu_data.x86 == 0xf) {
+		amd64_debug_display_dimm_sizes(0, pvt);
 		return;
+	}
 
 	/* Only if NOT ganged does dclr1 have valid info */
 	if (!dct_ganging_enabled(pvt))
@@ -888,10 +889,10 @@ static void amd64_dump_misc_regs(struct amd64_pvt *pvt)
 	 */
 	ganged = dct_ganging_enabled(pvt);
 
-	f10_debug_display_dimm_sizes(0, pvt, ganged);
+	amd64_debug_display_dimm_sizes(0, pvt);
 
 	if (!ganged)
-		f10_debug_display_dimm_sizes(1, pvt, ganged);
+		amd64_debug_display_dimm_sizes(1, pvt);
 }
 
 /* Read in both of DBAM registers */
@@ -1726,23 +1727,31 @@ static int map_dbam_to_csrow_size(int index)
 }
 
 /*
- * debug routine to display the memory sizes of a DIMM (ganged or not) and it
+ * debug routine to display the memory sizes of all logical DIMMs and its
  * CSROWs as well
  */
-static void f10_debug_display_dimm_sizes(int ctrl, struct amd64_pvt *pvt,
-					 int ganged)
+static void amd64_debug_display_dimm_sizes(int ctrl, struct amd64_pvt *pvt)
 {
 	int dimm, size0, size1;
 	u32 dbam;
 	u32 *dcsb;
 
-	debugf1("  dbam%d: 0x%8.08x  CSROW is %s\n", ctrl,
-			ctrl ? pvt->dbam1 : pvt->dbam0,
-			ganged ? "GANGED - dbam1 not used" : "NON-GANGED");
+	if (boot_cpu_data.x86 == 0xf) {
+		/* K8 families < revF not supported yet */
+	       if (pvt->ext_model < OPTERON_CPU_REV_F)
+			return;
+	       else
+		       WARN_ON(ctrl != 0);
+	}
+
+	debugf1("F2x%d80 (DRAM Bank Address Mapping): 0x%08x\n",
+		ctrl, ctrl ? pvt->dbam1 : pvt->dbam0);
 
 	dbam = ctrl ? pvt->dbam1 : pvt->dbam0;
 	dcsb = ctrl ? pvt->dcsb1 : pvt->dcsb0;
 
+	edac_printk(KERN_DEBUG, EDAC_MC, "DCT%d chip selects:\n", ctrl);
+
 	/* Dump memory sizes for DIMM and its CSROWs */
 	for (dimm = 0; dimm < 4; dimm++) {
 
@@ -1754,15 +1763,8 @@ static void f10_debug_display_dimm_sizes(int ctrl, struct amd64_pvt *pvt,
 		if (dcsb[dimm*2 + 1] & K8_DCSB_CS_ENABLE)
 			size1 = map_dbam_to_csrow_size(DBAM_DIMM(dimm, dbam));
 
-		debugf1("     CTRL-%d DIMM-%d=%5dMB   CSROW-%d=%5dMB "
-				"CSROW-%d=%5dMB\n",
-				ctrl,
-				dimm,
-				size0 + size1,
-				dimm * 2,
-				size0,
-				dimm * 2 + 1,
-				size1);
+		edac_printk(KERN_DEBUG, EDAC_MC, " %d: %5dMB %d: %5dMB\n",
+			    dimm * 2, size0, dimm * 2 + 1, size1);
 	}
 }
 
-- 
1.6.4.3



  parent reply	other threads:[~2009-11-16 14:19 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-16 14:16 [PATCH 00/21] amd64_edac queue for .33 Borislav Petkov
2009-11-16 14:16 ` [PATCH 01/21] amd64_edac: clarify DRAM CTL debug reporting Borislav Petkov
2009-11-16 14:16 ` [PATCH 02/21] amd64_edac: make DRAM regions output more human-readable Borislav Petkov
2009-11-16 14:16 ` [PATCH 03/21] x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus Borislav Petkov
2009-11-16 14:16 ` [PATCH 04/21] cpumask: use modern cpumask style in drivers/edac/amd64_edac.c Borislav Petkov
2009-11-16 14:16 ` [PATCH 05/21] amd64_edac: unify MCGCTL ECC switching Borislav Petkov
2009-11-16 14:16 ` [PATCH 06/21] amd64_edac: wrap-up pci config read error handling Borislav Petkov
2009-11-16 14:16 ` [PATCH 07/21] amd64_edac: cleanup DRAM cfg low debug output Borislav Petkov
2009-11-16 14:16 ` [PATCH 08/21] amd64_edac: cleanup rest of amd64_dump_misc_regs Borislav Petkov
2009-11-16 14:16 ` Borislav Petkov [this message]
2009-11-16 14:16 ` [PATCH 10/21] amd64_edac: cleanup f10_early_channel_count Borislav Petkov
2009-11-16 14:16 ` [PATCH 11/21] amd64_edac: enhance address to DRAM bank mapping Borislav Petkov
2009-11-16 14:16 ` [PATCH 12/21] amd64_edac: remove superfluous dbg printk Borislav Petkov
2009-11-16 14:16 ` [PATCH 13/21] amd64_edac: rename StinkyIdentifier Borislav Petkov
2009-11-16 14:16 ` [PATCH 14/21] amd64_edac: remove unneeded extract_error_address wrapper Borislav Petkov
2009-11-16 14:16 ` [PATCH 15/21] edac, mce: update AMD F10h revD check Borislav Petkov
2009-11-16 14:16 ` [PATCH 16/21] edac: add memory types strings for debugging Borislav Petkov
2009-11-16 14:16 ` [PATCH 17/21] amd64_edac: detect DDR3 memory type Borislav Petkov
2009-11-16 14:16 ` [PATCH 18/21] amd64_edac: remove early hw support check Borislav Petkov
2009-11-16 14:16 ` [PATCH 19/21] amd64_edac: add a leaner syndrome decoding algorithm Borislav Petkov
2009-11-16 14:16 ` [PATCH 20/21] amd64_edac: correct sys address to chip select mapping Borislav Petkov
2009-11-16 14:16 ` [PATCH 21/21] amd64_edac: bump driver version Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1258381008-18783-10-git-send-email-borislav.petkov@amd.com \
    --to=borislav.petkov@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=norsk5@yahoo.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®