Commit fbce44d0 authored by Gavin Shan's avatar Gavin Shan Committed by Michael Ellerman

powerpc/powernv: Call opal_pci_poll() if needed

When issuing PHB reset, OPAL API opal_pci_poll() is called to drive
the state machine in OPAL forward. However, we needn't always call
the function under some circumstances like reset deassert.

This avoids calling opal_pci_poll() when OPAL_SUCCESS is returned
from opal_pci_reset(). Except the overhead introduced by additional
one unnecessary OPAL call, I didn't run into real issue because of
this.
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>
parent c762c69e
...@@ -763,7 +763,8 @@ int pnv_eeh_phb_reset(struct pci_controller *hose, int option) ...@@ -763,7 +763,8 @@ int pnv_eeh_phb_reset(struct pci_controller *hose, int option)
* reset followed by hot reset on root bus. So we also * reset followed by hot reset on root bus. So we also
* need the PCI bus settlement delay. * need the PCI bus settlement delay.
*/ */
rc = pnv_eeh_poll(phb->opal_id); if (rc > 0)
rc = pnv_eeh_poll(phb->opal_id);
if (option == EEH_RESET_DEACTIVATE) { if (option == EEH_RESET_DEACTIVATE) {
if (system_state < SYSTEM_RUNNING) if (system_state < SYSTEM_RUNNING)
udelay(1000 * EEH_PE_RST_SETTLE_TIME); udelay(1000 * EEH_PE_RST_SETTLE_TIME);
...@@ -806,7 +807,8 @@ static int pnv_eeh_root_reset(struct pci_controller *hose, int option) ...@@ -806,7 +807,8 @@ static int pnv_eeh_root_reset(struct pci_controller *hose, int option)
goto out; goto out;
/* Poll state of the PHB until the request is done */ /* Poll state of the PHB until the request is done */
rc = pnv_eeh_poll(phb->opal_id); if (rc > 0)
rc = pnv_eeh_poll(phb->opal_id);
if (option == EEH_RESET_DEACTIVATE) if (option == EEH_RESET_DEACTIVATE)
msleep(EEH_PE_RST_SETTLE_TIME); msleep(EEH_PE_RST_SETTLE_TIME);
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment