Message ID | 20160912041724.16646-2-ruscur@russell.cc (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 12/09/16 14:17, Russell Currey wrote: > 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. > > Cc: stable #3.10+ > Signed-off-by: Russell Currey <ruscur@russell.cc> Looks good to me. Personally I'd put all 3 of these patches into one, not that I care too much. Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c index cb08e6a..68f1a85 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))
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. Cc: stable #3.10+ Signed-off-by: Russell Currey <ruscur@russell.cc> --- arch/powerpc/platforms/powernv/eeh-powernv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)