提交 d4c27795 编写于 作者: M Mauro Carvalho Chehab

i7core_edac: a few fixes for multiple mc's

Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 6c6aa3af
...@@ -1270,11 +1270,10 @@ int i7core_get_onedevice(struct pci_dev **prev, int devno) ...@@ -1270,11 +1270,10 @@ int i7core_get_onedevice(struct pci_dev **prev, int devno)
return -ENODEV; return -ENODEV;
} }
i7core_printk(KERN_INFO, debugf0("Detected socket %d dev %02x:%02x.%d PCI ID %04x:%04x\n",
"Registered socket %d " socket, bus, pci_dev_descr[devno].dev,
"dev %02x:%02x.%d PCI ID %04x:%04x\n", pci_dev_descr[devno].func,
socket, bus, pci_dev_descr[devno].dev, pci_dev_descr[devno].func, PCI_VENDOR_ID_INTEL, pci_dev_descr[devno].dev_id);
PCI_VENDOR_ID_INTEL, pci_dev_descr[devno].dev_id);
*prev = pdev; *prev = pdev;
...@@ -1713,7 +1712,8 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev, ...@@ -1713,7 +1712,8 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev,
int rc; int rc;
/* allocate a new MC control structure */ /* allocate a new MC control structure */
mci = edac_mc_alloc(sizeof(*pvt), num_csrows, num_channels, 0); mci = edac_mc_alloc(sizeof(*pvt), num_csrows, num_channels,
i7core_dev->socket);
if (unlikely(!mci)) if (unlikely(!mci))
return -ENOMEM; return -ENOMEM;
...@@ -1724,7 +1724,6 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev, ...@@ -1724,7 +1724,6 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev,
pvt = mci->pvt_info; pvt = mci->pvt_info;
memset(pvt, 0, sizeof(*pvt)); memset(pvt, 0, sizeof(*pvt));
mci->mc_idx = 0;
/* /*
* FIXME: how to handle RDDR3 at MCI level? It is possible to have * FIXME: how to handle RDDR3 at MCI level? It is possible to have
...@@ -1815,7 +1814,7 @@ static int __devinit i7core_probe(struct pci_dev *pdev, ...@@ -1815,7 +1814,7 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
struct i7core_dev *i7core_dev; struct i7core_dev *i7core_dev;
/* /*
* FIXME: All memory controllers are allocated at the first pass. * All memory controllers are allocated at the first pass.
*/ */
if (unlikely(dev_idx >= 1)) if (unlikely(dev_idx >= 1))
return -EINVAL; return -EINVAL;
...@@ -1836,7 +1835,9 @@ static int __devinit i7core_probe(struct pci_dev *pdev, ...@@ -1836,7 +1835,9 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
if (unlikely(rc < 0)) if (unlikely(rc < 0))
goto fail1; goto fail1;
i7core_register_mci(i7core_dev, channels, csrows); rc = i7core_register_mci(i7core_dev, channels, csrows);
if (unlikely(rc < 0))
goto fail1;
} }
i7core_printk(KERN_INFO, "Driver loaded.\n"); i7core_printk(KERN_INFO, "Driver loaded.\n");
...@@ -1876,6 +1877,8 @@ static void __devexit i7core_remove(struct pci_dev *pdev) ...@@ -1876,6 +1877,8 @@ static void __devexit i7core_remove(struct pci_dev *pdev)
/* retrieve references to resources, and free those resources */ /* retrieve references to resources, and free those resources */
mutex_lock(&i7core_edac_lock); mutex_lock(&i7core_edac_lock);
/* FIXME: This should put the devices only for this mci!!! */
i7core_put_devices(); i7core_put_devices();
mutex_unlock(&i7core_edac_lock); mutex_unlock(&i7core_edac_lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册