summaryrefslogtreecommitdiffstats
path: root/drivers/misc/ics932s401.c
diff options
context:
space:
mode:
authorJeff Roberson <jroberson@jroberson.net>2009-10-26 16:50:09 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-10-29 07:39:30 -0700
commit156edd4aaa819ec5867ced83c7b8dba9193789ea (patch)
tree58066a63e881f3dc359d8d439f04ffece0a34e6a /drivers/misc/ics932s401.c
parent8c85dd8730bfb696e691145335f884c7baef8277 (diff)
downloadblackbird-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/misc/ics932s401.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud