forked from luck/tmp_suning_uos_patched
amd64_edac: Cleanup the CPU PCI device reservation
Shorten code and clarify comments, return proper -E* values on error. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
This commit is contained in:
parent
0092b20d4c
commit
bbd0c1f675
@ -2035,42 +2035,27 @@ void amd64_decode_bus_error(int node_id, struct mce *m, u32 nbcfg)
|
||||
}
|
||||
|
||||
/*
|
||||
* Input:
|
||||
* 1) struct amd64_pvt which contains pvt->dram_f2_ctl pointer
|
||||
* 2) AMD Family index value
|
||||
*
|
||||
* Ouput:
|
||||
* Upon return of 0, the following filled in:
|
||||
*
|
||||
* struct pvt->addr_f1_ctl
|
||||
* struct pvt->misc_f3_ctl
|
||||
*
|
||||
* Filled in with related device funcitions of 'dram_f2_ctl'
|
||||
* These devices are "reserved" via the pci_get_device()
|
||||
*
|
||||
* Upon return of 1 (error status):
|
||||
*
|
||||
* Nothing reserved
|
||||
* Use pvt->dram_f2_ctl which contains the F2 CPU PCI device to get the related
|
||||
* F1 (AddrMap) and F3 (Misc) devices. Return negative value on error.
|
||||
*/
|
||||
static int amd64_reserve_mc_sibling_devices(struct amd64_pvt *pvt, int mc_idx)
|
||||
static int amd64_reserve_mc_sibling_devices(struct amd64_pvt *pvt, u16 f1_id,
|
||||
u16 f3_id)
|
||||
{
|
||||
const struct amd64_family_type *amd64_dev = &amd64_family_types[mc_idx];
|
||||
|
||||
/* Reserve the ADDRESS MAP Device */
|
||||
pvt->addr_f1_ctl = pci_get_related_function(pvt->dram_f2_ctl->vendor,
|
||||
amd64_dev->addr_f1_ctl,
|
||||
f1_id,
|
||||
pvt->dram_f2_ctl);
|
||||
|
||||
if (!pvt->addr_f1_ctl) {
|
||||
amd64_printk(KERN_ERR, "error address map device not found: "
|
||||
"vendor %x device 0x%x (broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_AMD, amd64_dev->addr_f1_ctl);
|
||||
return 1;
|
||||
PCI_VENDOR_ID_AMD, f1_id);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Reserve the MISC Device */
|
||||
pvt->misc_f3_ctl = pci_get_related_function(pvt->dram_f2_ctl->vendor,
|
||||
amd64_dev->misc_f3_ctl,
|
||||
f3_id,
|
||||
pvt->dram_f2_ctl);
|
||||
|
||||
if (!pvt->misc_f3_ctl) {
|
||||
@ -2079,8 +2064,8 @@ static int amd64_reserve_mc_sibling_devices(struct amd64_pvt *pvt, int mc_idx)
|
||||
|
||||
amd64_printk(KERN_ERR, "error miscellaneous device not found: "
|
||||
"vendor %x device 0x%x (broken BIOS?)\n",
|
||||
PCI_VENDOR_ID_AMD, amd64_dev->misc_f3_ctl);
|
||||
return 1;
|
||||
PCI_VENDOR_ID_AMD, f3_id);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
debugf1(" Addr Map device PCI Bus ID:\t%s\n",
|
||||
@ -2646,12 +2631,9 @@ static int amd64_probe_one_instance(struct pci_dev *dram_f2_ctl,
|
||||
if (!fam_type)
|
||||
goto err_free;
|
||||
|
||||
/*
|
||||
* We have the dram_f2_ctl device as an argument, now go reserve its
|
||||
* sibling devices from the PCI system.
|
||||
*/
|
||||
ret = -ENODEV;
|
||||
err = amd64_reserve_mc_sibling_devices(pvt, mc_type_index);
|
||||
err = amd64_reserve_mc_sibling_devices(pvt, fam_type->addr_f1_ctl,
|
||||
fam_type->misc_f3_ctl);
|
||||
if (err)
|
||||
goto err_free;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user