diff options
| -rw-r--r-- | drivers/edac/edac_mc.c | 2 | ||||
| -rw-r--r-- | drivers/edac/i7core_edac.c | 15 | ||||
| -rw-r--r-- | drivers/edac/mpc85xx_edac.c | 3 | ||||
| -rw-r--r-- | drivers/edac/sb_edac.c | 10 |
4 files changed, 12 insertions, 18 deletions
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 10f375032e96..de5ba86e8b89 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c | |||
| @@ -164,7 +164,7 @@ void *edac_align_ptr(void **p, unsigned size, int n_elems) | |||
| 164 | else | 164 | else |
| 165 | return (char *)ptr; | 165 | return (char *)ptr; |
| 166 | 166 | ||
| 167 | r = size % align; | 167 | r = (unsigned long)p % align; |
| 168 | 168 | ||
| 169 | if (r == 0) | 169 | if (r == 0) |
| 170 | return (char *)ptr; | 170 | return (char *)ptr; |
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index d27778f65a5d..a499c7ed820a 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c | |||
| @@ -1814,12 +1814,6 @@ static int i7core_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
| 1814 | if (mce->bank != 8) | 1814 | if (mce->bank != 8) |
| 1815 | return NOTIFY_DONE; | 1815 | return NOTIFY_DONE; |
| 1816 | 1816 | ||
| 1817 | #ifdef CONFIG_SMP | ||
| 1818 | /* Only handle if it is the right mc controller */ | ||
| 1819 | if (mce->socketid != pvt->i7core_dev->socket) | ||
| 1820 | return NOTIFY_DONE; | ||
| 1821 | #endif | ||
| 1822 | |||
| 1823 | smp_rmb(); | 1817 | smp_rmb(); |
| 1824 | if ((pvt->mce_out + 1) % MCE_LOG_LEN == pvt->mce_in) { | 1818 | if ((pvt->mce_out + 1) % MCE_LOG_LEN == pvt->mce_in) { |
| 1825 | smp_wmb(); | 1819 | smp_wmb(); |
| @@ -2116,8 +2110,6 @@ static void i7core_unregister_mci(struct i7core_dev *i7core_dev) | |||
| 2116 | if (pvt->enable_scrub) | 2110 | if (pvt->enable_scrub) |
| 2117 | disable_sdram_scrub_setting(mci); | 2111 | disable_sdram_scrub_setting(mci); |
| 2118 | 2112 | ||
| 2119 | mce_unregister_decode_chain(&i7_mce_dec); | ||
| 2120 | |||
| 2121 | /* Disable EDAC polling */ | 2113 | /* Disable EDAC polling */ |
| 2122 | i7core_pci_ctl_release(pvt); | 2114 | i7core_pci_ctl_release(pvt); |
| 2123 | 2115 | ||
| @@ -2222,8 +2214,6 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev) | |||
| 2222 | /* DCLK for scrub rate setting */ | 2214 | /* DCLK for scrub rate setting */ |
| 2223 | pvt->dclk_freq = get_dclk_freq(); | 2215 | pvt->dclk_freq = get_dclk_freq(); |
| 2224 | 2216 | ||
| 2225 | mce_register_decode_chain(&i7_mce_dec); | ||
| 2226 | |||
| 2227 | return 0; | 2217 | return 0; |
| 2228 | 2218 | ||
| 2229 | fail0: | 2219 | fail0: |
| @@ -2367,8 +2357,10 @@ static int __init i7core_init(void) | |||
| 2367 | 2357 | ||
| 2368 | pci_rc = pci_register_driver(&i7core_driver); | 2358 | pci_rc = pci_register_driver(&i7core_driver); |
| 2369 | 2359 | ||
| 2370 | if (pci_rc >= 0) | 2360 | if (pci_rc >= 0) { |
| 2361 | mce_register_decode_chain(&i7_mce_dec); | ||
| 2371 | return 0; | 2362 | return 0; |
| 2363 | } | ||
| 2372 | 2364 | ||
| 2373 | i7core_printk(KERN_ERR, "Failed to register device with error %d.\n", | 2365 | i7core_printk(KERN_ERR, "Failed to register device with error %d.\n", |
| 2374 | pci_rc); | 2366 | pci_rc); |
| @@ -2384,6 +2376,7 @@ static void __exit i7core_exit(void) | |||
| 2384 | { | 2376 | { |
| 2385 | debugf2("MC: " __FILE__ ": %s()\n", __func__); | 2377 | debugf2("MC: " __FILE__ ": %s()\n", __func__); |
| 2386 | pci_unregister_driver(&i7core_driver); | 2378 | pci_unregister_driver(&i7core_driver); |
| 2379 | mce_unregister_decode_chain(&i7_mce_dec); | ||
| 2387 | } | 2380 | } |
| 2388 | 2381 | ||
| 2389 | module_init(i7core_init); | 2382 | module_init(i7core_init); |
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c index 4c402353ba98..0e374625f6f8 100644 --- a/drivers/edac/mpc85xx_edac.c +++ b/drivers/edac/mpc85xx_edac.c | |||
| @@ -980,7 +980,8 @@ static int __devinit mpc85xx_mc_err_probe(struct platform_device *op) | |||
| 980 | layers[1].type = EDAC_MC_LAYER_CHANNEL; | 980 | layers[1].type = EDAC_MC_LAYER_CHANNEL; |
| 981 | layers[1].size = 1; | 981 | layers[1].size = 1; |
| 982 | layers[1].is_virt_csrow = false; | 982 | layers[1].is_virt_csrow = false; |
| 983 | mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), sizeof(*pdata)); | 983 | mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers, |
| 984 | sizeof(*pdata)); | ||
| 984 | if (!mci) { | 985 | if (!mci) { |
| 985 | devres_release_group(&op->dev, mpc85xx_mc_err_probe); | 986 | devres_release_group(&op->dev, mpc85xx_mc_err_probe); |
| 986 | return -ENOMEM; | 987 | return -ENOMEM; |
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index 4adaf4b7da99..36ad17e79d61 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c | |||
| @@ -555,7 +555,7 @@ static int get_dimm_config(struct mem_ctl_info *mci) | |||
| 555 | pvt->is_close_pg = false; | 555 | pvt->is_close_pg = false; |
| 556 | } | 556 | } |
| 557 | 557 | ||
| 558 | pci_read_config_dword(pvt->pci_ta, RANK_CFG_A, ®); | 558 | pci_read_config_dword(pvt->pci_ddrio, RANK_CFG_A, ®); |
| 559 | if (IS_RDIMM_ENABLED(reg)) { | 559 | if (IS_RDIMM_ENABLED(reg)) { |
| 560 | /* FIXME: Can also be LRDIMM */ | 560 | /* FIXME: Can also be LRDIMM */ |
| 561 | debugf0("Memory is registered\n"); | 561 | debugf0("Memory is registered\n"); |
| @@ -1604,8 +1604,6 @@ static void sbridge_unregister_mci(struct sbridge_dev *sbridge_dev) | |||
| 1604 | debugf0("MC: " __FILE__ ": %s(): mci = %p, dev = %p\n", | 1604 | debugf0("MC: " __FILE__ ": %s(): mci = %p, dev = %p\n", |
| 1605 | __func__, mci, &sbridge_dev->pdev[0]->dev); | 1605 | __func__, mci, &sbridge_dev->pdev[0]->dev); |
| 1606 | 1606 | ||
| 1607 | mce_unregister_decode_chain(&sbridge_mce_dec); | ||
| 1608 | |||
| 1609 | /* Remove MC sysfs nodes */ | 1607 | /* Remove MC sysfs nodes */ |
| 1610 | edac_mc_del_mc(mci->dev); | 1608 | edac_mc_del_mc(mci->dev); |
| 1611 | 1609 | ||
| @@ -1682,7 +1680,6 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev) | |||
| 1682 | goto fail0; | 1680 | goto fail0; |
| 1683 | } | 1681 | } |
| 1684 | 1682 | ||
| 1685 | mce_register_decode_chain(&sbridge_mce_dec); | ||
| 1686 | return 0; | 1683 | return 0; |
| 1687 | 1684 | ||
| 1688 | fail0: | 1685 | fail0: |
| @@ -1811,8 +1808,10 @@ static int __init sbridge_init(void) | |||
| 1811 | 1808 | ||
| 1812 | pci_rc = pci_register_driver(&sbridge_driver); | 1809 | pci_rc = pci_register_driver(&sbridge_driver); |
| 1813 | 1810 | ||
| 1814 | if (pci_rc >= 0) | 1811 | if (pci_rc >= 0) { |
| 1812 | mce_register_decode_chain(&sbridge_mce_dec); | ||
| 1815 | return 0; | 1813 | return 0; |
| 1814 | } | ||
| 1816 | 1815 | ||
| 1817 | sbridge_printk(KERN_ERR, "Failed to register device with error %d.\n", | 1816 | sbridge_printk(KERN_ERR, "Failed to register device with error %d.\n", |
| 1818 | pci_rc); | 1817 | pci_rc); |
| @@ -1828,6 +1827,7 @@ static void __exit sbridge_exit(void) | |||
| 1828 | { | 1827 | { |
| 1829 | debugf2("MC: " __FILE__ ": %s()\n", __func__); | 1828 | debugf2("MC: " __FILE__ ": %s()\n", __func__); |
| 1830 | pci_unregister_driver(&sbridge_driver); | 1829 | pci_unregister_driver(&sbridge_driver); |
| 1830 | mce_unregister_decode_chain(&sbridge_mce_dec); | ||
| 1831 | } | 1831 | } |
| 1832 | 1832 | ||
| 1833 | module_init(sbridge_init); | 1833 | module_init(sbridge_init); |
