diff options
author | Mike Chan <mikechan@google.com> | 2007-02-12 03:53:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-12 12:48:32 -0500 |
commit | 84db003f249ddbcde1666376b4e3bbe9ee2c7c0c (patch) | |
tree | f2f44a1a33afbcd1d1cf8cbb4a9dcb598d736361 /drivers/edac | |
parent | 9962fd017becf944d671da498ccaaea570452206 (diff) |
[PATCH] EDAC: Fix in e752x mc driver
This fix/change returns the offset into the page for the ce/ue error, instead
of just 0. The e752x dram controller reads 34:6 of the linear address with
the error.
Signed-off-by: Mike Chan <mikechan@google.com>
Signed-off-by: doug thompson <norsk5@xmission.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/e752x_edac.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/edac/e752x_edac.c b/drivers/edac/e752x_edac.c index 9abfc0dc3bae..8bcc887692ab 100644 --- a/drivers/edac/e752x_edac.c +++ b/drivers/edac/e752x_edac.c | |||
@@ -285,8 +285,9 @@ static void do_process_ce(struct mem_ctl_info *mci, u16 error_one, | |||
285 | if (!pvt->map_type) | 285 | if (!pvt->map_type) |
286 | row = 7 - row; | 286 | row = 7 - row; |
287 | 287 | ||
288 | edac_mc_handle_ce(mci, page, 0, sec1_syndrome, row, channel, | 288 | /* e752x mc reads 34:6 of the DRAM linear address */ |
289 | "e752x CE"); | 289 | edac_mc_handle_ce(mci, page, offset_in_page(sec1_add << 4), |
290 | sec1_syndrome, row, channel, "e752x CE"); | ||
290 | } | 291 | } |
291 | 292 | ||
292 | static inline void process_ce(struct mem_ctl_info *mci, u16 error_one, | 293 | static inline void process_ce(struct mem_ctl_info *mci, u16 error_one, |
@@ -319,8 +320,10 @@ static void do_process_ue(struct mem_ctl_info *mci, u16 error_one, | |||
319 | ((block_page >> 1) & 3) : | 320 | ((block_page >> 1) & 3) : |
320 | edac_mc_find_csrow_by_page(mci, block_page); | 321 | edac_mc_find_csrow_by_page(mci, block_page); |
321 | 322 | ||
322 | edac_mc_handle_ue(mci, block_page, 0, row, | 323 | /* e752x mc reads 34:6 of the DRAM linear address */ |
323 | "e752x UE from Read"); | 324 | edac_mc_handle_ue(mci, block_page, |
325 | offset_in_page(error_2b << 4), | ||
326 | row, "e752x UE from Read"); | ||
324 | } | 327 | } |
325 | if (error_one & 0x0404) { | 328 | if (error_one & 0x0404) { |
326 | error_2b = scrb_add; | 329 | error_2b = scrb_add; |
@@ -333,8 +336,10 @@ static void do_process_ue(struct mem_ctl_info *mci, u16 error_one, | |||
333 | ((block_page >> 1) & 3) : | 336 | ((block_page >> 1) & 3) : |
334 | edac_mc_find_csrow_by_page(mci, block_page); | 337 | edac_mc_find_csrow_by_page(mci, block_page); |
335 | 338 | ||
336 | edac_mc_handle_ue(mci, block_page, 0, row, | 339 | /* e752x mc reads 34:6 of the DRAM linear address */ |
337 | "e752x UE from Scruber"); | 340 | edac_mc_handle_ue(mci, block_page, |
341 | offset_in_page(error_2b << 4), | ||
342 | row, "e752x UE from Scruber"); | ||
338 | } | 343 | } |
339 | } | 344 | } |
340 | 345 | ||