aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms
diff options
context:
space:
mode:
authorRussell Currey <ruscur@russell.cc>2016-09-12 14:17:23 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2016-09-23 07:54:21 +1000
commite98ddb77166a4d7ba6235b20a1328ecb137debb2 (patch)
treed97ef35c5de61ebf86994b2b091ddd7904dc7c80 /arch/powerpc/platforms
parentpowerpc/eeh: Null check uses of eeh_pe_bus_get (diff)
downloadlinux-dev-e98ddb77166a4d7ba6235b20a1328ecb137debb2.tar.xz
linux-dev-e98ddb77166a4d7ba6235b20a1328ecb137debb2.zip
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 <ruscur@russell.cc> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r--arch/powerpc/platforms/powernv/eeh-powernv.c5
1 files 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))