powerpc/eeh: Reworked eeh_pe_bus_get()
The original implementation is ugly: unnecessary if statements and "out" tag. This reworks the function to avoid above weaknesses. No functional changes introduced. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
ee3b93ebfb
commit
4eb0799ff9
|
@ -920,25 +920,21 @@ const char *eeh_pe_loc_get(struct eeh_pe *pe)
|
|||
*/
|
||||
struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe)
|
||||
{
|
||||
struct pci_bus *bus = NULL;
|
||||
struct eeh_dev *edev;
|
||||
struct pci_dev *pdev;
|
||||
|
||||
if (pe->type & EEH_PE_PHB) {
|
||||
bus = pe->phb->bus;
|
||||
} else if (pe->type & EEH_PE_BUS ||
|
||||
pe->type & EEH_PE_DEVICE) {
|
||||
if (pe->state & EEH_PE_PRI_BUS) {
|
||||
bus = pe->bus;
|
||||
goto out;
|
||||
}
|
||||
if (pe->type & EEH_PE_PHB)
|
||||
return pe->phb->bus;
|
||||
|
||||
edev = list_first_entry(&pe->edevs, struct eeh_dev, list);
|
||||
pdev = eeh_dev_to_pci_dev(edev);
|
||||
if (pdev)
|
||||
bus = pdev->bus;
|
||||
}
|
||||
/* The primary bus might be cached during probe time */
|
||||
if (pe->state & EEH_PE_PRI_BUS)
|
||||
return pe->bus;
|
||||
|
||||
out:
|
||||
return bus;
|
||||
/* Retrieve the parent PCI bus of first (top) PCI device */
|
||||
edev = list_first_entry_or_null(&pe->edevs, struct eeh_dev, list);
|
||||
pdev = eeh_dev_to_pci_dev(edev);
|
||||
if (pdev)
|
||||
return pdev->bus;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue