mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: unlisted-recipients:; (no To-header on input)
Cc: Mauro Carvalho Chehab <mchehab@redhat.com>,
	Linux Edac Mailing List <linux-edac@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH RFCv2 04/16] drivers/edac: rename channel_info to csrow_channel_info
Date: Sat, 28 Jan 2012 13:32:39 -0200	[thread overview]
Message-ID: <1327764771-28649-5-git-send-email-mchehab@redhat.com> (raw)
In-Reply-To: <1327764771-28649-1-git-send-email-mchehab@redhat.com>

Newer memory architectures use the term "channel" with a different
meaning.

On a traditional architecture, the memory controller directly
access the memory chips, via csrows and channels.

On some modern architectures like FBDIMM, there's a microcontroller
chip, called Advanced Memory Buffer (AMB) that serves as the interface
between the memory controller and the memory chips.

It is up to the AMB to talk with the csrows of the DRAM chips.

The bus that exchanges information between the memory controller and
the CPU is also called "channel", but it is not associated with
the csrow channel. The entire csrow concept is not even visible to the
memory controller, as using csrows is a task for the AMB.

The drivers that support such memories currently need to fake
information and to abuse on EDAC structures, as the subsystem
was conceived with the idea that the csrow would always be visible
by the CPU.

To make things a  little worse, they don't do it on a consistent
way, as the concepts are not clear enough.

In order to fix it, let's correct the concept of a channel inside
a csrow. Then, we can work to provide a way to represent the
memory on a way that would be more architecture-independent.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/edac/edac_mc.c |    6 +++---
 include/linux/edac.h   |    6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 5038239..8776f30 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -43,7 +43,7 @@ static LIST_HEAD(mc_devices);
 
 #ifdef CONFIG_EDAC_DEBUG
 
-static void edac_mc_dump_channel(struct channel_info *chan)
+static void edac_mc_dump_channel(struct csrow_channel_info *chan)
 {
 	debugf4("\tchannel = %p\n", chan);
 	debugf4("\tchannel->chan_idx = %d\n", chan->chan_idx);
@@ -160,7 +160,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned sz_pvt, unsigned nr_csrows,
 {
 	struct mem_ctl_info *mci;
 	struct csrow_info *csi, *csrow;
-	struct channel_info *chi, *chp, *chan;
+	struct csrow_channel_info *chi, *chp, *chan;
 	void *pvt;
 	unsigned size;
 	int row, chn;
@@ -185,7 +185,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned sz_pvt, unsigned nr_csrows,
 	 * rather than an imaginary chunk of memory located at address 0.
 	 */
 	csi = (struct csrow_info *)(((char *)mci) + ((unsigned long)csi));
-	chi = (struct channel_info *)(((char *)mci) + ((unsigned long)chi));
+	chi = (struct csrow_channel_info *)(((char *)mci) + ((unsigned long)chi));
 	pvt = sz_pvt ? (((char *)mci) + ((unsigned long)pvt)) : NULL;
 
 	/* setup index and various internal pointers */
diff --git a/include/linux/edac.h b/include/linux/edac.h
index 3ba99d7..6e3ab94 100644
--- a/include/linux/edac.h
+++ b/include/linux/edac.h
@@ -191,7 +191,7 @@ enum scrub_type {
  * Socket:		A physical connector on the motherboard that accepts
  *			a single memory stick.
  *
- * Channel:		Set of memory devices on a memory stick that must be
+ * Csrow-channel:	Set of memory devices on a memory stick that must be
  *			grouped in parallel with one or more additional
  *			channels from other memory sticks.  This parallel
  *			grouping of the output from multiple channels are
@@ -249,7 +249,7 @@ enum scrub_type {
  * PS - I enjoyed writing all that about as much as you enjoyed reading it.
  */
 
-struct channel_info {
+struct csrow_channel_info {
 	int chan_idx;		/* channel index */
 	u32 ce_count;		/* Correctable Errors for this CHANNEL */
 	char label[EDAC_MC_LABEL_LEN + 1];	/* DIMM label on motherboard */
@@ -276,7 +276,7 @@ struct csrow_info {
 
 	/* channel information for this csrow */
 	u32 nr_channels;
-	struct channel_info *channels;
+	struct csrow_channel_info *channels;
 };
 
 struct mcidev_sysfs_group {
-- 
1.7.8


  parent reply	other threads:[~2012-01-28 15:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-28 15:32 [PATCH RFCv2 00/16] This is the version 2 of the HERM patches Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 01/16] events/hw_event: Create a Hardware Events Report Mecanism (HERM) Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 02/16] events/hw_event: use __string() trace macros for events Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 03/16] hw_event: Consolidate uncorrected/corrected error msgs into one Mauro Carvalho Chehab
2012-01-28 15:32 ` Mauro Carvalho Chehab [this message]
2012-01-28 15:32 ` [PATCH RFCv2 05/16] edac: Create a dimm struct and move the labels into it Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 06/16] edac_mc_sysfs: Fix error handling Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 07/16] edac: Add per dimm's sysfs nodes Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 08/16] edac: Prepare to push down to drivers the filling of the dimm_info Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 09/16] i5400_edac: Convert it to report memory with the new location Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 10/16] i7300_edac: " Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 11/16] edac: move dimm properties to struct dimm_info Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 12/16] edac: Don't initialize csrow's first_page & friends when not needed Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 13/16] edac: move nr_pages to dimm struct Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 14/16] edac: Add per-dimm sysfs show nodes Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 15/16] edac: DIMM location cleanup Mauro Carvalho Chehab
2012-01-28 15:32 ` [PATCH RFCv2 16/16] edac: Add an error scope logic Mauro Carvalho Chehab

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=1327764771-28649-5-git-send-email-mchehab@redhat.com \
    --to=mchehab@redhat.com \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.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®