Mauro Carvalho Chehab
deb09ddaff
sb_edac: Avoid overflow errors at memory size calculation
...
Sandy bridge EDAC is calculating the memory size with overflow.
Basically, the size field and the integer calculation is using 32 bits.
More bits are needed, when the DIMM memories have high density.
The net result is that memories are improperly reported there, when
high-density DIMMs are used:
EDAC DEBUG: in drivers/edac/sb_edac.c, line at 591: mc#0: channel 0, dimm 0, -16384 Mb (-4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
EDAC DEBUG: in drivers/edac/sb_edac.c, line at 591: mc#0: channel 1, dimm 0, -16384 Mb (-4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
As the number of pages value is handled at the EDAC core as unsigned
ints, the driver shows the 16 GB memories at sysfs interface as 16760832
MB! The fix is simple: calculate the number of pages as unsigned 64-bits
integer.
After the patch, the memory size (16 GB) is properly detected:
EDAC DEBUG: in drivers/edac/sb_edac.c, line at 592: mc#0: channel 0, dimm 0, 16384 Mb (4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
EDAC DEBUG: in drivers/edac/sb_edac.c, line at 592: mc#0: channel 1, dimm 0, 16384 Mb (4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
Cc: stable@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2012-09-25 07:38:20 -03:00
..
amd64_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
amd64_edac.h
amd64_edac: convert sysfs logic to use struct device
2012-06-11 13:23:40 -03:00
amd64_edac_dbg.c
amd64_edac: convert sysfs logic to use struct device
2012-06-11 13:23:40 -03:00
amd64_edac_inj.c
edac: Convert debugfX to edac_dbg(X,
2012-06-11 13:23:49 -03:00
amd76x_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
amd8111_edac.c
amd8111_edac.h
amd8131_edac.c
amd8131_edac.h
cell_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
cpc925_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
e7xxx_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
e752x_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
edac_core.h
Merge branch 'devel'
2012-07-29 21:11:05 -03:00
edac_device.c
Merge branch 'devel'
2012-07-29 21:11:05 -03:00
edac_device_sysfs.c
edac: Convert debugfX to edac_dbg(X,
2012-06-11 13:23:49 -03:00
edac_mc.c
edac_mc: edac_mc_free() cannot assume mem_ctl_info is registered in sysfs.
2012-09-23 14:46:40 -07:00
edac_mc_sysfs.c
edac: allow specifying the error count with fake_inject
2012-06-27 09:01:30 -03:00
edac_module.c
edac: create top-level debugfs directory
2012-06-12 12:15:49 -03:00
edac_module.h
edac: create top-level debugfs directory
2012-06-12 12:15:49 -03:00
edac_pci.c
edac: Convert debugfX to edac_dbg(X,
2012-06-11 13:23:49 -03:00
edac_pci_sysfs.c
edac: Convert debugfX to edac_dbg(X,
2012-06-11 13:23:49 -03:00
edac_stub.c
device.h: cleanup users outside of linux/include (C files)
2012-03-11 14:27:37 -04:00
highbank_l2_edac.c
edac: add support for Calxeda highbank L2 cache ecc
2012-06-27 09:01:29 -03:00
highbank_mc_edac.c
edac: add support for Calxeda highbank memory controller
2012-06-27 09:00:57 -03:00
i7core_edac.c
Merge branch 'devel'
2012-07-29 21:11:05 -03:00
i3000_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i3200_edac.c
i3200_edac: Fix memory rank size
2012-09-25 07:32:33 -03:00
i5000_edac.c
i5000: Fix the memory size calculation with 2R memories
2012-09-25 07:38:19 -03:00
i5100_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i5400_edac.c
edac i5000, i5400: fix pointer math in i5000_get_mc_regs()
2012-06-27 09:08:40 -03:00
i7300_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i82443bxgx_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i82860_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i82875p_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
i82975x_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
Kconfig
edac: add support for Calxeda highbank L2 cache ecc
2012-06-27 09:01:29 -03:00
Makefile
edac: add support for Calxeda highbank L2 cache ecc
2012-06-27 09:01:29 -03:00
mce_amd.c
MCE, AMD: Drop too granulary family model checks
2012-04-04 15:50:11 +02:00
mce_amd.h
x86/bitops: Move BIT_64() for a wider use
2012-05-23 17:16:42 +02:00
mce_amd_inj.c
device.h: cleanup users outside of linux/include (C files)
2012-03-11 14:27:37 -04:00
mpc85xx_edac.c
Merge branch 'devel'
2012-07-29 21:11:05 -03:00
mpc85xx_edac.h
mv64x60_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
mv64x60_edac.h
pasemi_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
ppc4xx_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
ppc4xx_edac.h
r82600_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
sb_edac.c
sb_edac: Avoid overflow errors at memory size calculation
2012-09-25 07:38:20 -03:00
tile_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00
x38_edac.c
edac: edac_mc_handle_error(): add an error_count parameter
2012-06-12 12:15:47 -03:00