• Gavin Shan's avatar
    powerpc/eeh: Fix invalid cached PE primary bus · a3aa256b
    Gavin Shan authored
    The PE primary bus cannot be got from its child devices when having
    full hotplug in error recovery. The PE primary bus is cached, which
    is done in commit <05ba75f8> ("powerpc/eeh: Fix stale cached primary
    bus"). In eeh_reset_device(), the flag (EEH_PE_PRI_BUS) is cleared
    before the PCI hot remove. eeh_pe_bus_get() then returns NULL as the
    PE primary bus in pnv_eeh_reset() and it crashes the kernel eventually.
    
    This fixes the issue by clearing the flag (EEH_PE_PRI_BUS) before the
    PCI hot add. With it, the PowerNV EEH reset backend (pnv_eeh_reset())
    can get valid PE primary bus through eeh_pe_bus_get().
    
    Fixes: 67086e32 ("powerpc/eeh: powerpc/eeh: Support error recovery for VF PE")
    Reported-by: default avatarPridhiviraj Paidipeddi <ppaiddipe@in.ibm.com>
    Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    a3aa256b
eeh_driver.c 27.2 KB