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

Commit 4eb0799f authored by Gavin Shan's avatar Gavin Shan Committed by Michael Ellerman
Browse files

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: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent ee3b93eb
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -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;

	/* The primary bus might be cached during probe time */
	if (pe->state & EEH_PE_PRI_BUS)
		return pe->bus;

		edev = list_first_entry(&pe->edevs, struct eeh_dev, list);
	/* 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)
			bus = pdev->bus;
	}
		return pdev->bus;

out:
	return bus;
	return NULL;
}