diff options
author | Jeff Roberson <jroberson@jroberson.net> | 2009-10-26 16:50:09 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-29 07:39:30 -0700 |
commit | 156edd4aaa819ec5867ced83c7b8dba9193789ea (patch) | |
tree | 58066a63e881f3dc359d8d439f04ffece0a34e6a /drivers/edac/mpc85xx_edac.c | |
parent | 8c85dd8730bfb696e691145335f884c7baef8277 (diff) | |
download | blackbird-op-linux-156edd4aaa819ec5867ced83c7b8dba9193789ea.tar.gz blackbird-op-linux-156edd4aaa819ec5867ced83c7b8dba9193789ea.zip |
edac: i5400 fix csrow mapping
The i5400 EDAC driver has several bugs with chip-select row computation
which most likely lead to bugs in detailed error reporting. Attempts to
contact the authors have gone mostly unanswered so I am presenting my diff
here. I do not subscribe to lkml and would appreciate being kept in the
cc.
The most egregious problem was miscalculating the addresses of MTR
registers after register 0 by assuming they are 32bit rather than 16.
This caused the driver to miss half of the memories. Most motherboards
tend to have only 8 dimm slots and not 16, so this may not have been
noticed before.
Further, the row calculations multiplied the number of dimms several
times, ultimately ending up with a maximum row of 32. The chipset only
supports 4 dimms in each of 4 channels, so csrow could not be higher than
4 unless you use a row per-rank with dual-rank dimms. I opted to
eliminate this behavior as it is confusing to the user and the error
reporting works by slot and not rank. This gives a much clearer view of
memory by slot and channel in /sys.
Signed-off-by: Jeff Roberson <jroberson@jroberson.net>
Signed-off-by: Doug Thompson <dougthompson@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/edac/mpc85xx_edac.c')
0 files changed, 0 insertions, 0 deletions