Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 200015
b: refs/heads/master
c: b7c7615
h: refs/heads/master
i:
  200013: b0dee55
  200011: 82559a0
  200007: 280b6c3
  199999: a3d9855
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed May 10, 2010
1 parent dada388 commit 2e0c718
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1c6fed808f1ccd0804786e87f6b2c907dcd730fa
refs/heads/master: b7c761512c5412eb30be567a0640060cccfc372f
32 changes: 21 additions & 11 deletions trunk/drivers/edac/i7core_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,10 @@ static int i7core_get_active_channels(int *channels)
}
}

if (!pdev)
if (!pdev) {
i7core_printk(KERN_ERR, "Couldn't find fn 3.0!!!\n");
return -ENODEV;
}

/* Device 3 function 0 reads */
pci_read_config_dword(pdev, MC_STATUS, &status);
Expand Down Expand Up @@ -1109,25 +1111,30 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
int num_channels = 0;
int num_csrows;
int dev_idx = id->driver_data;
int rc;

if (unlikely(dev_idx >= ARRAY_SIZE(i7core_devs)))
return -EINVAL;

/* get the pci devices we want to reserve for our use */
if (unlikely(i7core_get_devices() < 0))
return -ENODEV;
rc = i7core_get_devices();
if (unlikely(rc < 0))
return rc;

/* Check the number of active and not disabled channels */
if (unlikely (i7core_get_active_channels(&num_channels)) < 0)
rc = i7core_get_active_channels(&num_channels);
if (unlikely (rc < 0))
goto fail0;

/* FIXME: we currently don't know the number of csrows */
num_csrows = num_channels;

/* allocate a new MC control structure */
mci = edac_mc_alloc(sizeof(*pvt), num_csrows, num_channels, 0);
if (unlikely (!mci))
return -ENOMEM;
if (unlikely (!mci)) {
rc = -ENOMEM;
goto fail0;
}

debugf0("MC: " __FILE__ ": %s(): mci = %p\n", __func__, mci);

Expand All @@ -1150,19 +1157,22 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
mci->edac_check = i7core_check_error;

/* Store pci devices at mci for faster access */
if (unlikely (mci_bind_devs(mci)) < 0)
rc = mci_bind_devs(mci);
if (unlikely (rc < 0))
goto fail1;

/* Get dimm basic config */
get_dimm_config(mci);

/* add this new MC control structure to EDAC's list of MCs */
if (unlikely(edac_mc_add_mc(mci)) < 0) {
if (unlikely(edac_mc_add_mc(mci))) {
debugf0("MC: " __FILE__
": %s(): failed edac_mc_add_mc()\n", __func__);
/* FIXME: perhaps some code should go here that disables error
* reporting if we just enabled it
*/

rc = -EINVAL;
goto fail1;
}

Expand Down Expand Up @@ -1190,11 +1200,11 @@ static int __devinit i7core_probe(struct pci_dev *pdev,
return 0;

fail1:
i7core_put_devices();
edac_mc_free(mci);

fail0:
edac_mc_free(mci);
return -ENODEV;
i7core_put_devices();
return rc;
}

/*
Expand Down

0 comments on commit 2e0c718

Please sign in to comment.