diff options
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/edac_mc.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index ad812a4f8c99..f67a4d6f8974 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c | |||
@@ -1199,7 +1199,6 @@ static void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) | |||
1199 | 1199 | ||
1200 | #ifdef CONFIG_EDAC_DEBUG | 1200 | #ifdef CONFIG_EDAC_DEBUG |
1201 | 1201 | ||
1202 | EXPORT_SYMBOL(edac_mc_dump_channel); | ||
1203 | 1202 | ||
1204 | void edac_mc_dump_channel(struct channel_info *chan) | 1203 | void edac_mc_dump_channel(struct channel_info *chan) |
1205 | { | 1204 | { |
@@ -1209,10 +1208,9 @@ void edac_mc_dump_channel(struct channel_info *chan) | |||
1209 | debugf4("\tchannel->label = '%s'\n", chan->label); | 1208 | debugf4("\tchannel->label = '%s'\n", chan->label); |
1210 | debugf4("\tchannel->csrow = %p\n\n", chan->csrow); | 1209 | debugf4("\tchannel->csrow = %p\n\n", chan->csrow); |
1211 | } | 1210 | } |
1211 | EXPORT_SYMBOL(edac_mc_dump_channel); | ||
1212 | 1212 | ||
1213 | 1213 | ||
1214 | EXPORT_SYMBOL(edac_mc_dump_csrow); | ||
1215 | |||
1216 | void edac_mc_dump_csrow(struct csrow_info *csrow) | 1214 | void edac_mc_dump_csrow(struct csrow_info *csrow) |
1217 | { | 1215 | { |
1218 | debugf4("\tcsrow = %p\n", csrow); | 1216 | debugf4("\tcsrow = %p\n", csrow); |
@@ -1227,10 +1225,9 @@ void edac_mc_dump_csrow(struct csrow_info *csrow) | |||
1227 | debugf4("\tcsrow->channels = %p\n", csrow->channels); | 1225 | debugf4("\tcsrow->channels = %p\n", csrow->channels); |
1228 | debugf4("\tcsrow->mci = %p\n\n", csrow->mci); | 1226 | debugf4("\tcsrow->mci = %p\n\n", csrow->mci); |
1229 | } | 1227 | } |
1228 | EXPORT_SYMBOL(edac_mc_dump_csrow); | ||
1230 | 1229 | ||
1231 | 1230 | ||
1232 | EXPORT_SYMBOL(edac_mc_dump_mci); | ||
1233 | |||
1234 | void edac_mc_dump_mci(struct mem_ctl_info *mci) | 1231 | void edac_mc_dump_mci(struct mem_ctl_info *mci) |
1235 | { | 1232 | { |
1236 | debugf3("\tmci = %p\n", mci); | 1233 | debugf3("\tmci = %p\n", mci); |
@@ -1245,6 +1242,7 @@ void edac_mc_dump_mci(struct mem_ctl_info *mci) | |||
1245 | mci->mod_name, mci->ctl_name); | 1242 | mci->mod_name, mci->ctl_name); |
1246 | debugf3("\tpvt_info = %p\n\n", mci->pvt_info); | 1243 | debugf3("\tpvt_info = %p\n\n", mci->pvt_info); |
1247 | } | 1244 | } |
1245 | EXPORT_SYMBOL(edac_mc_dump_mci); | ||
1248 | 1246 | ||
1249 | 1247 | ||
1250 | #endif /* CONFIG_EDAC_DEBUG */ | 1248 | #endif /* CONFIG_EDAC_DEBUG */ |
@@ -1284,8 +1282,6 @@ static inline char * align_ptr (void *ptr, unsigned size) | |||
1284 | } | 1282 | } |
1285 | 1283 | ||
1286 | 1284 | ||
1287 | EXPORT_SYMBOL(edac_mc_alloc); | ||
1288 | |||
1289 | /** | 1285 | /** |
1290 | * edac_mc_alloc: Allocate a struct mem_ctl_info structure | 1286 | * edac_mc_alloc: Allocate a struct mem_ctl_info structure |
1291 | * @size_pvt: size of private storage needed | 1287 | * @size_pvt: size of private storage needed |
@@ -1357,10 +1353,9 @@ struct mem_ctl_info *edac_mc_alloc(unsigned sz_pvt, unsigned nr_csrows, | |||
1357 | 1353 | ||
1358 | return mci; | 1354 | return mci; |
1359 | } | 1355 | } |
1356 | EXPORT_SYMBOL(edac_mc_alloc); | ||
1360 | 1357 | ||
1361 | 1358 | ||
1362 | EXPORT_SYMBOL(edac_mc_free); | ||
1363 | |||
1364 | /** | 1359 | /** |
1365 | * edac_mc_free: Free a previously allocated 'mci' structure | 1360 | * edac_mc_free: Free a previously allocated 'mci' structure |
1366 | * @mci: pointer to a struct mem_ctl_info structure | 1361 | * @mci: pointer to a struct mem_ctl_info structure |
@@ -1369,6 +1364,7 @@ void edac_mc_free(struct mem_ctl_info *mci) | |||
1369 | { | 1364 | { |
1370 | kfree(mci); | 1365 | kfree(mci); |
1371 | } | 1366 | } |
1367 | EXPORT_SYMBOL(edac_mc_free); | ||
1372 | 1368 | ||
1373 | static struct mem_ctl_info *find_mci_by_pdev(struct pci_dev *pdev) | 1369 | static struct mem_ctl_info *find_mci_by_pdev(struct pci_dev *pdev) |
1374 | { | 1370 | { |
@@ -1450,8 +1446,6 @@ static void del_mc_from_global_list (struct mem_ctl_info *mci) | |||
1450 | } | 1446 | } |
1451 | 1447 | ||
1452 | 1448 | ||
1453 | EXPORT_SYMBOL(edac_mc_add_mc); | ||
1454 | |||
1455 | /** | 1449 | /** |
1456 | * edac_mc_add_mc: Insert the 'mci' structure into the mci global list and | 1450 | * edac_mc_add_mc: Insert the 'mci' structure into the mci global list and |
1457 | * create sysfs entries associated with mci structure | 1451 | * create sysfs entries associated with mci structure |
@@ -1509,10 +1503,9 @@ fail0: | |||
1509 | up(&mem_ctls_mutex); | 1503 | up(&mem_ctls_mutex); |
1510 | return 1; | 1504 | return 1; |
1511 | } | 1505 | } |
1506 | EXPORT_SYMBOL(edac_mc_add_mc); | ||
1512 | 1507 | ||
1513 | 1508 | ||
1514 | EXPORT_SYMBOL(edac_mc_del_mc); | ||
1515 | |||
1516 | /** | 1509 | /** |
1517 | * edac_mc_del_mc: Remove sysfs entries for specified mci structure and | 1510 | * edac_mc_del_mc: Remove sysfs entries for specified mci structure and |
1518 | * remove mci structure from global list | 1511 | * remove mci structure from global list |
@@ -1540,10 +1533,9 @@ struct mem_ctl_info * edac_mc_del_mc(struct pci_dev *pdev) | |||
1540 | mci->mod_name, mci->ctl_name, pci_name(mci->pdev)); | 1533 | mci->mod_name, mci->ctl_name, pci_name(mci->pdev)); |
1541 | return mci; | 1534 | return mci; |
1542 | } | 1535 | } |
1536 | EXPORT_SYMBOL(edac_mc_del_mc); | ||
1543 | 1537 | ||
1544 | 1538 | ||
1545 | EXPORT_SYMBOL(edac_mc_scrub_block); | ||
1546 | |||
1547 | void edac_mc_scrub_block(unsigned long page, unsigned long offset, | 1539 | void edac_mc_scrub_block(unsigned long page, unsigned long offset, |
1548 | u32 size) | 1540 | u32 size) |
1549 | { | 1541 | { |
@@ -1574,11 +1566,10 @@ void edac_mc_scrub_block(unsigned long page, unsigned long offset, | |||
1574 | if (PageHighMem(pg)) | 1566 | if (PageHighMem(pg)) |
1575 | local_irq_restore(flags); | 1567 | local_irq_restore(flags); |
1576 | } | 1568 | } |
1569 | EXPORT_SYMBOL(edac_mc_scrub_block); | ||
1577 | 1570 | ||
1578 | 1571 | ||
1579 | /* FIXME - should return -1 */ | 1572 | /* FIXME - should return -1 */ |
1580 | EXPORT_SYMBOL(edac_mc_find_csrow_by_page); | ||
1581 | |||
1582 | int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, | 1573 | int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, |
1583 | unsigned long page) | 1574 | unsigned long page) |
1584 | { | 1575 | { |
@@ -1615,10 +1606,9 @@ int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, | |||
1615 | 1606 | ||
1616 | return row; | 1607 | return row; |
1617 | } | 1608 | } |
1609 | EXPORT_SYMBOL(edac_mc_find_csrow_by_page); | ||
1618 | 1610 | ||
1619 | 1611 | ||
1620 | EXPORT_SYMBOL(edac_mc_handle_ce); | ||
1621 | |||
1622 | /* FIXME - setable log (warning/emerg) levels */ | 1612 | /* FIXME - setable log (warning/emerg) levels */ |
1623 | /* FIXME - integrate with evlog: http://evlog.sourceforge.net/ */ | 1613 | /* FIXME - integrate with evlog: http://evlog.sourceforge.net/ */ |
1624 | void edac_mc_handle_ce(struct mem_ctl_info *mci, | 1614 | void edac_mc_handle_ce(struct mem_ctl_info *mci, |
@@ -1681,10 +1671,9 @@ void edac_mc_handle_ce(struct mem_ctl_info *mci, | |||
1681 | mci->csrows[row].grain); | 1671 | mci->csrows[row].grain); |
1682 | } | 1672 | } |
1683 | } | 1673 | } |
1674 | EXPORT_SYMBOL(edac_mc_handle_ce); | ||
1684 | 1675 | ||
1685 | 1676 | ||
1686 | EXPORT_SYMBOL(edac_mc_handle_ce_no_info); | ||
1687 | |||
1688 | void edac_mc_handle_ce_no_info(struct mem_ctl_info *mci, | 1677 | void edac_mc_handle_ce_no_info(struct mem_ctl_info *mci, |
1689 | const char *msg) | 1678 | const char *msg) |
1690 | { | 1679 | { |
@@ -1694,10 +1683,9 @@ void edac_mc_handle_ce_no_info(struct mem_ctl_info *mci, | |||
1694 | mci->ce_noinfo_count++; | 1683 | mci->ce_noinfo_count++; |
1695 | mci->ce_count++; | 1684 | mci->ce_count++; |
1696 | } | 1685 | } |
1686 | EXPORT_SYMBOL(edac_mc_handle_ce_no_info); | ||
1697 | 1687 | ||
1698 | 1688 | ||
1699 | EXPORT_SYMBOL(edac_mc_handle_ue); | ||
1700 | |||
1701 | void edac_mc_handle_ue(struct mem_ctl_info *mci, | 1689 | void edac_mc_handle_ue(struct mem_ctl_info *mci, |
1702 | unsigned long page_frame_number, | 1690 | unsigned long page_frame_number, |
1703 | unsigned long offset_in_page, int row, | 1691 | unsigned long offset_in_page, int row, |
@@ -1750,10 +1738,9 @@ void edac_mc_handle_ue(struct mem_ctl_info *mci, | |||
1750 | mci->ue_count++; | 1738 | mci->ue_count++; |
1751 | mci->csrows[row].ue_count++; | 1739 | mci->csrows[row].ue_count++; |
1752 | } | 1740 | } |
1741 | EXPORT_SYMBOL(edac_mc_handle_ue); | ||
1753 | 1742 | ||
1754 | 1743 | ||
1755 | EXPORT_SYMBOL(edac_mc_handle_ue_no_info); | ||
1756 | |||
1757 | void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci, | 1744 | void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci, |
1758 | const char *msg) | 1745 | const char *msg) |
1759 | { | 1746 | { |
@@ -1766,6 +1753,7 @@ void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci, | |||
1766 | mci->ue_noinfo_count++; | 1753 | mci->ue_noinfo_count++; |
1767 | mci->ue_count++; | 1754 | mci->ue_count++; |
1768 | } | 1755 | } |
1756 | EXPORT_SYMBOL(edac_mc_handle_ue_no_info); | ||
1769 | 1757 | ||
1770 | 1758 | ||
1771 | #ifdef CONFIG_PCI | 1759 | #ifdef CONFIG_PCI |