Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4c27795 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

i7core_edac: a few fixes for multiple mc's

parent 6c6aa3af
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -1270,10 +1270,9 @@ int i7core_get_onedevice(struct pci_dev **prev, int devno)
		return -ENODEV;
	}

	i7core_printk(KERN_INFO,
			"Registered socket %d "
			"dev %02x:%02x.%d PCI ID %04x:%04x\n",
			socket, bus, pci_dev_descr[devno].dev, pci_dev_descr[devno].func,
	debugf0("Detected socket %d dev %02x:%02x.%d PCI ID %04x:%04x\n",
		socket, bus, pci_dev_descr[devno].dev,
		pci_dev_descr[devno].func,
		PCI_VENDOR_ID_INTEL, pci_dev_descr[devno].dev_id);

	*prev = pdev;
@@ -1713,7 +1712,8 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev,
	int rc;

	/* 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))
		return -ENOMEM;

@@ -1724,7 +1724,6 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev,

	pvt = mci->pvt_info;
	memset(pvt, 0, sizeof(*pvt));
	mci->mc_idx = 0;

	/*
	 * 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,
	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))
		return -EINVAL;
@@ -1836,7 +1835,9 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
		if (unlikely(rc < 0))
			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");
@@ -1876,6 +1877,8 @@ static void __devexit i7core_remove(struct pci_dev *pdev)

	/* retrieve references to resources, and free those resources */
	mutex_lock(&i7core_edac_lock);

	/* FIXME: This should put the devices only for this mci!!! */
	i7core_put_devices();
	mutex_unlock(&i7core_edac_lock);