From e98ddb77166a4d7ba6235b20a1328ecb137debb2 Mon Sep 17 00:00:00 2001 From: Russell Currey Date: Mon, 12 Sep 2016 14:17:23 +1000 Subject: [PATCH] powerpc/powernv/eeh: Skip finding bus for VF resets When the PE used in pnv_eeh_reset() is that of a VF, pnv_eeh_reset_vf_pe() is used. Unlike the other reset functions called in pnv_eeh_reset(), the VF reset doesn't require a bus, and if a bus was missing the function would error out before resetting the VF PE. To avoid this, reorder the VF reset function to occur before finding and checking the bus. Signed-off-by: Russell Currey Reviewed-by: Andrew Donnellan Signed-off-by: Michael Ellerman --- arch/powerpc/platforms/powernv/eeh-powernv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c index cb08e6aaf9bd..68f1a854f97d 100644 --- a/arch/powerpc/platforms/powernv/eeh-powernv.c +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c @@ -1090,14 +1090,15 @@ static int pnv_eeh_reset(struct eeh_pe *pe, int option) } } + if (pe->type & EEH_PE_VF) + return pnv_eeh_reset_vf_pe(pe, option); + bus = eeh_pe_bus_get(pe); if (!bus) { pr_err("%s: Cannot find PCI bus for PHB#%d-PE#%x\n", __func__, pe->phb->global_number, pe->addr); return -EIO; } - if (pe->type & EEH_PE_VF) - return pnv_eeh_reset_vf_pe(pe, option); if (pci_is_root_bus(bus) || pci_is_root_bus(bus->parent)) -- 2.20.1