diff options
author | Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> | 2010-08-20 04:25:18 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-24 11:20:39 -0200 |
commit | a3aa0a4ab56e825e2ec236974d478d1dcebf41a9 (patch) | |
tree | f97c1bcc76966890741c571247e17c94bc196f53 /drivers/edac | |
parent | 2aa9be448dab7433c685b634a4049289cb1913d3 (diff) | |
download | kernel_samsung_smdk4412-a3aa0a4ab56e825e2ec236974d478d1dcebf41a9.zip kernel_samsung_smdk4412-a3aa0a4ab56e825e2ec236974d478d1dcebf41a9.tar.gz kernel_samsung_smdk4412-a3aa0a4ab56e825e2ec236974d478d1dcebf41a9.tar.bz2 |
i7core_edac: Introduce i7core_pci_ctl_create/release
Have a couple of method.
while here sort out lines in the i7core_register_mci() a bit.
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.c | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index e1cbbba..a5cbea5 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c @@ -1895,6 +1895,26 @@ static int i7core_mce_check_error(void *priv, struct mce *mce) return 1; } +static void i7core_pci_ctl_create(struct i7core_pvt *pvt) +{ + pvt->i7core_pci = edac_pci_create_generic_ctl( + &pvt->i7core_dev->pdev[0]->dev, + EDAC_MOD_STR); + if (unlikely(!pvt->i7core_pci)) + pr_warn("Unable to setup PCI error report via EDAC\n"); +} + +static void i7core_pci_ctl_release(struct i7core_pvt *pvt) +{ + if (likely(pvt->i7core_pci)) + edac_pci_release_generic_ctl(pvt->i7core_pci); + else + i7core_printk(KERN_ERR, + "Couldn't find mem_ctl_info for socket %d\n", + pvt->i7core_dev->socket); + pvt->i7core_pci = NULL; +} + static int i7core_register_mci(struct i7core_dev *i7core_dev, const int num_channels, const int num_csrows) { @@ -1969,22 +1989,12 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev, pvt->inject.page = -1; pvt->inject.col = -1; + /* allocating generic PCI control info */ + i7core_pci_ctl_create(pvt); + /* Registers on edac_mce in order to receive memory errors */ pvt->edac_mce.priv = mci; pvt->edac_mce.check_error = i7core_mce_check_error; - - /* allocating generic PCI control info */ - pvt->i7core_pci = edac_pci_create_generic_ctl(&i7core_dev->pdev[0]->dev, - EDAC_MOD_STR); - if (unlikely(!pvt->i7core_pci)) { - printk(KERN_WARNING - "%s(): Unable to create PCI control\n", - __func__); - printk(KERN_WARNING - "%s(): PCI error report via EDAC not setup\n", - __func__); - } - rc = edac_mce_register(&pvt->edac_mce); if (unlikely(rc < 0)) { debugf0("MC: " __FILE__ @@ -2094,13 +2104,7 @@ static void __devexit i7core_remove(struct pci_dev *pdev) edac_mce_unregister(&pvt->edac_mce); /* Disable EDAC polling */ - if (likely(pvt->i7core_pci)) - edac_pci_release_generic_ctl(pvt->i7core_pci); - else - i7core_printk(KERN_ERR, - "Couldn't find mem_ctl_info for socket %d\n", - i7core_dev->socket); - pvt->i7core_pci = NULL; + i7core_pci_ctl_release(pvt); /* Remove MC sysfs nodes */ edac_mc_del_mc(&i7core_dev->pdev[0]->dev); |