diff options
author | Maxim Shchetynin <maxim@de.ibm.com> | 2008-07-15 15:51:40 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-07-21 20:39:36 -0400 |
commit | c134fd868fb5137984ce1b7a58f3f6dd4171615e (patch) | |
tree | 87baf94ed76c5e9716887c62764b4c4fc209b45f | |
parent | 1ed6af73440c5ec920884bb800685a8cab4ce847 (diff) |
powerpc/cell/edac: Log a syndrome code in case of correctable error
If correctable error occurs the syndrome code was logged as 0. This patch
lets EDAC to log a correct syndrome code to make problem investigation
easier.
Signed-off-by: Maxim Shchetynin <maxim@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Doug Thompson <dougthompson@xmission.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | drivers/edac/cell_edac.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/edac/cell_edac.c b/drivers/edac/cell_edac.c index b54112ffd282..0e024fe2d8c4 100644 --- a/drivers/edac/cell_edac.c +++ b/drivers/edac/cell_edac.c | |||
@@ -33,7 +33,7 @@ static void cell_edac_count_ce(struct mem_ctl_info *mci, int chan, u64 ar) | |||
33 | { | 33 | { |
34 | struct cell_edac_priv *priv = mci->pvt_info; | 34 | struct cell_edac_priv *priv = mci->pvt_info; |
35 | struct csrow_info *csrow = &mci->csrows[0]; | 35 | struct csrow_info *csrow = &mci->csrows[0]; |
36 | unsigned long address, pfn, offset; | 36 | unsigned long address, pfn, offset, syndrome; |
37 | 37 | ||
38 | dev_dbg(mci->dev, "ECC CE err on node %d, channel %d, ar = 0x%016lx\n", | 38 | dev_dbg(mci->dev, "ECC CE err on node %d, channel %d, ar = 0x%016lx\n", |
39 | priv->node, chan, ar); | 39 | priv->node, chan, ar); |
@@ -44,10 +44,11 @@ static void cell_edac_count_ce(struct mem_ctl_info *mci, int chan, u64 ar) | |||
44 | address = (address << 1) | chan; | 44 | address = (address << 1) | chan; |
45 | pfn = address >> PAGE_SHIFT; | 45 | pfn = address >> PAGE_SHIFT; |
46 | offset = address & ~PAGE_MASK; | 46 | offset = address & ~PAGE_MASK; |
47 | syndrome = (ar & 0x000000001fe00000ul) >> 21; | ||
47 | 48 | ||
48 | /* TODO: Decoding of the error addresss */ | 49 | /* TODO: Decoding of the error addresss */ |
49 | edac_mc_handle_ce(mci, csrow->first_page + pfn, offset, | 50 | edac_mc_handle_ce(mci, csrow->first_page + pfn, offset, |
50 | 0, 0, chan, ""); | 51 | syndrome, 0, chan, ""); |
51 | } | 52 | } |
52 | 53 | ||
53 | static void cell_edac_count_ue(struct mem_ctl_info *mci, int chan, u64 ar) | 54 | static void cell_edac_count_ue(struct mem_ctl_info *mci, int chan, u64 ar) |