aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2010-02-10 13:56:36 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2010-02-11 13:59:42 -0800
commitcff9279e4e8d6ff80a640dd6977c8f76aa01e1f8 (patch)
tree237d536dd0daf7b3359fe955c8fd037bccc81c7a /drivers/edac
parentc286d03cce118e9fb8dda8da43f9131c169c5a75 (diff)
downloadkernel_samsung_smdk4412-cff9279e4e8d6ff80a640dd6977c8f76aa01e1f8.zip
kernel_samsung_smdk4412-cff9279e4e8d6ff80a640dd6977c8f76aa01e1f8.tar.gz
kernel_samsung_smdk4412-cff9279e4e8d6ff80a640dd6977c8f76aa01e1f8.tar.bz2
edac: mpc85xx fix bad page calculation
Commit b4846251727a38a7f248e41308c060995371dd05 ("edac: mpc85xx add mpc83xx support") accidentally broke how a chip select's first and last page addresses are calculated. The page addresses are being shifted too far right by PAGE_SHIFT. This results in errors such as: EDAC MPC85xx MC1: Err addr: 0x003075c0 EDAC MPC85xx MC1: PFN: 0x00000307 EDAC MPC85xx MC1: PFN out of range! EDAC MC1: INTERNAL ERROR: row out of range (4 >= 4) EDAC MC1: CE - no information available: INTERNAL ERROR The vaule of PAGE_SHIFT is already being taken into consideration during the calculation of the 'start' and 'end' variables, thus it is not necessary to account for it again when setting a chip select's first and last page address. Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Signed-off-by: Doug Thompson <dougthompson@xmission.com> Cc: Ira W. Snyder <iws@ovro.caltech.edu> Cc: Kumar Gala <galak@gate.crashing.org> 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/mpc85xx_edac.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index cf27402..e24a87f 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -804,8 +804,8 @@ static void __devinit mpc85xx_init_csrows(struct mem_ctl_info *mci)
end <<= (24 - PAGE_SHIFT);
end |= (1 << (24 - PAGE_SHIFT)) - 1;
- csrow->first_page = start >> PAGE_SHIFT;
- csrow->last_page = end >> PAGE_SHIFT;
+ csrow->first_page = start;
+ csrow->last_page = end;
csrow->nr_pages = end + 1 - start;
csrow->grain = 8;
csrow->mtype = mtype;