summaryrefslogtreecommitdiffstats
path: root/drivers/edac
diff options
context:
space:
mode:
authorHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>2010-08-20 04:28:14 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-24 11:20:39 -0200
commit64c10f6e0e6b4473b97c29c574e9517f93bedaec (patch)
treedf21f32984a8faca3241922775b453fb1ed764ce /drivers/edac
parenta3aa0a4ab56e825e2ec236974d478d1dcebf41a9 (diff)
downloadtalos-op-linux-64c10f6e0e6b4473b97c29c574e9517f93bedaec.tar.gz
talos-op-linux-64c10f6e0e6b4473b97c29c574e9517f93bedaec.zip
i7core_edac: Always do get/put for all devices
We already do 'get' for all sockets at once. So do 'put' in the same way. And let args of the 'get' function to void since it handles only the single, static and known size table pci_dev_table[]. Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/i7core_edac.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index a5cbea5abd62..19faeffac9dc 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -1255,7 +1255,7 @@ static const struct mcidev_sysfs_attribute i7core_sysfs_udimm_attrs[] = {
****************************************************************************/
/*
- * i7core_put_devices 'put' all the devices that we have
+ * i7core_put_all_devices 'put' all the devices that we have
* reserved via 'get'
*/
static void i7core_put_devices(struct i7core_dev *i7core_dev)
@@ -1323,7 +1323,7 @@ static unsigned i7core_pci_lastbus(void)
}
/*
- * i7core_get_devices Find and perform 'get' operation on the MCH's
+ * i7core_get_all_devices Find and perform 'get' operation on the MCH's
* device/functions we want to reference for this driver
*
* Need to 'get' device 16 func 1 and func 2
@@ -1432,14 +1432,16 @@ static int i7core_get_onedevice(struct pci_dev **prev,
return 0;
}
-static int i7core_get_devices(const struct pci_id_table *table)
+static int i7core_get_all_devices(void)
{
- int i, rc, last_bus;
+ int i, j, rc, last_bus;
struct pci_dev *pdev = NULL;
+ const struct pci_id_table *table;
last_bus = i7core_pci_lastbus();
- while (table && table->descr) {
+ for (j = 0; j < ARRAY_SIZE(pci_dev_table); j++) {
+ table = &pci_dev_table[j];
for (i = 0; i < table->n_devs; i++) {
pdev = NULL;
do {
@@ -1455,7 +1457,6 @@ static int i7core_get_devices(const struct pci_id_table *table)
}
} while (pdev);
}
- table++;
}
return 0;
@@ -2033,7 +2034,7 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
}
probed++;
- rc = i7core_get_devices(pci_dev_table);
+ rc = i7core_get_all_devices();
if (unlikely(rc < 0))
goto fail0;
@@ -2071,7 +2072,7 @@ fail0:
static void __devexit i7core_remove(struct pci_dev *pdev)
{
struct mem_ctl_info *mci;
- struct i7core_dev *i7core_dev, *tmp;
+ struct i7core_dev *i7core_dev;
struct i7core_pvt *pvt;
debugf0(__FILE__ ": %s()\n", __func__);
@@ -2085,7 +2086,7 @@ static void __devexit i7core_remove(struct pci_dev *pdev)
*/
mutex_lock(&i7core_edac_lock);
- list_for_each_entry_safe(i7core_dev, tmp, &i7core_edac_list, list) {
+ list_for_each_entry(i7core_dev, &i7core_edac_list, list) {
mci = find_mci_by_dev(&i7core_dev->pdev[0]->dev);
if (unlikely(!mci || !mci->pvt_info)) {
debugf0("MC: " __FILE__ ": %s(): dev = %p\n",
@@ -2112,12 +2113,12 @@ static void __devexit i7core_remove(struct pci_dev *pdev)
debugf1("%s: free mci struct\n", mci->ctl_name);
kfree(mci->ctl_name);
edac_mc_free(mci);
-
- /* Release PCI resources */
- i7core_put_devices(i7core_dev);
- free_i7core_dev(i7core_dev);
}
}
+
+ /* Release PCI resources */
+ i7core_put_all_devices();
+
probed--;
mutex_unlock(&i7core_edac_lock);
OpenPOWER on IntegriCloud