aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/i5400_edac.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2012-06-27 05:07:58 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-06-27 08:08:40 -0400
commitf58d0dee07fe6328f775669eb6aa3a123efad6c2 (patch)
tree1d330e6db0495cbe033d761feb3686a7de790dea /drivers/edac/i5400_edac.c
parent38ced28b21efff18fd5e5c98a92830e8f0031cee (diff)
edac i5000, i5400: fix pointer math in i5000_get_mc_regs()
"pvt->ambase" is a u64 datatype. The intent here is to fill the first half in the first call to pci_read_config_dword() and the other half in the second. Unfortunately the pointer math is wrong so we set the wrong data. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac/i5400_edac.c')
-rw-r--r--drivers/edac/i5400_edac.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c
index 50069c62c8d4..277246998b80 100644
--- a/drivers/edac/i5400_edac.c
+++ b/drivers/edac/i5400_edac.c
@@ -327,7 +327,13 @@ struct i5400_pvt {
327 struct pci_dev *branch_1; /* 22.0 */ 327 struct pci_dev *branch_1; /* 22.0 */
328 328
329 u16 tolm; /* top of low memory */ 329 u16 tolm; /* top of low memory */
330 u64 ambase; /* AMB BAR */ 330 union {
331 u64 ambase; /* AMB BAR */
332 struct {
333 u32 ambase_bottom;
334 u32 ambase_top;
335 } u __packed;
336 };
331 337
332 u16 mir0, mir1; 338 u16 mir0, mir1;
333 339
@@ -1055,9 +1061,9 @@ static void i5400_get_mc_regs(struct mem_ctl_info *mci)
1055 pvt = mci->pvt_info; 1061 pvt = mci->pvt_info;
1056 1062
1057 pci_read_config_dword(pvt->system_address, AMBASE, 1063 pci_read_config_dword(pvt->system_address, AMBASE,
1058 (u32 *) &pvt->ambase); 1064 &pvt->u.ambase_bottom);
1059 pci_read_config_dword(pvt->system_address, AMBASE + sizeof(u32), 1065 pci_read_config_dword(pvt->system_address, AMBASE + sizeof(u32),
1060 ((u32 *) &pvt->ambase) + sizeof(u32)); 1066 &pvt->u.ambase_top);
1061 1067
1062 maxdimmperch = pvt->maxdimmperch; 1068 maxdimmperch = pvt->maxdimmperch;
1063 maxch = pvt->maxch; 1069 maxch = pvt->maxch;