Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac
Pull EDAC fixes from Mauro Carvalho Chehab: "A series of EDAC driver fixes. It also has one core fix at the documentation, and a rename patch, fixing the name of the struct that contains the rank information." * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac: edac: rename channel_info to rank_info i5400_edac: Avoid calling pci_put_device() twice edac: i5100 ack error detection register after each read edac: i5100 fix erroneous define for M1Err edac: sb_edac: Fix a wrong value setting for the previous value edac: sb_edac: Fix a INTERLEAVE_MODE() misuse edac: sb_edac: Let the driver depend on PCI_MMCONFIG edac: Improve the comments to better describe the memory concepts edac/ppc4xx_edac: Fix compilation Fix sb_edac compilation with 32 bits kernels
This commit is contained in:
@@ -735,7 +735,7 @@ static int i5400_get_devices(struct mem_ctl_info *mci, int dev_idx)
|
||||
|
||||
/* Attempt to 'get' the MCH register we want */
|
||||
pdev = NULL;
|
||||
while (!pvt->branchmap_werrors || !pvt->fsb_error_regs) {
|
||||
while (1) {
|
||||
pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_5400_ERR, pdev);
|
||||
if (!pdev) {
|
||||
@@ -743,23 +743,42 @@ static int i5400_get_devices(struct mem_ctl_info *mci, int dev_idx)
|
||||
i5400_printk(KERN_ERR,
|
||||
"'system address,Process Bus' "
|
||||
"device not found:"
|
||||
"vendor 0x%x device 0x%x ERR funcs "
|
||||
"vendor 0x%x device 0x%x ERR func 1 "
|
||||
"(broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_5400_ERR);
|
||||
goto error;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Store device 16 funcs 1 and 2 */
|
||||
switch (PCI_FUNC(pdev->devfn)) {
|
||||
case 1:
|
||||
pvt->branchmap_werrors = pdev;
|
||||
/* Store device 16 func 1 */
|
||||
if (PCI_FUNC(pdev->devfn) == 1)
|
||||
break;
|
||||
case 2:
|
||||
pvt->fsb_error_regs = pdev;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pvt->branchmap_werrors = pdev;
|
||||
|
||||
pdev = NULL;
|
||||
while (1) {
|
||||
pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_5400_ERR, pdev);
|
||||
if (!pdev) {
|
||||
/* End of list, leave */
|
||||
i5400_printk(KERN_ERR,
|
||||
"'system address,Process Bus' "
|
||||
"device not found:"
|
||||
"vendor 0x%x device 0x%x ERR func 2 "
|
||||
"(broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_5400_ERR);
|
||||
|
||||
pci_dev_put(pvt->branchmap_werrors);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Store device 16 func 2 */
|
||||
if (PCI_FUNC(pdev->devfn) == 2)
|
||||
break;
|
||||
}
|
||||
pvt->fsb_error_regs = pdev;
|
||||
|
||||
debugf1("System Address, processor bus- PCI Bus ID: %s %x:%x\n",
|
||||
pci_name(pvt->system_address),
|
||||
@@ -778,7 +797,10 @@ static int i5400_get_devices(struct mem_ctl_info *mci, int dev_idx)
|
||||
"MC: 'BRANCH 0' device not found:"
|
||||
"vendor 0x%x device 0x%x Func 0 (broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5400_FBD0);
|
||||
goto error;
|
||||
|
||||
pci_dev_put(pvt->fsb_error_regs);
|
||||
pci_dev_put(pvt->branchmap_werrors);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* If this device claims to have more than 2 channels then
|
||||
@@ -796,14 +818,14 @@ static int i5400_get_devices(struct mem_ctl_info *mci, int dev_idx)
|
||||
"(broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_5400_FBD1);
|
||||
goto error;
|
||||
|
||||
pci_dev_put(pvt->branch_0);
|
||||
pci_dev_put(pvt->fsb_error_regs);
|
||||
pci_dev_put(pvt->branchmap_werrors);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
i5400_put_devices(mci);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user