Skip to content

Commit

Permalink
phb4: Use link if degraded
Browse files Browse the repository at this point in the history
In the recent change:
 3f936ba phb4: Retrain link if degraded
We retrain if the link is degraded.  We do 3 retries to get an optimal
link.

Unfortunately if the last retry fails, we mark the PHB as bad and
don't use it. Hence that PHB is lost even though it actually trained
(just degraded).

This fixes the problem by printing an error message (as below) but
still marking the PHB as good.

  [    7.179320404,3] PHB#0005[0:5]: LINK: Link degraded
  [    8.387346665,3] PHB#0005[0:5]: LINK: Link degraded
  [   10.078409137,3] PHB#0005[0:5]: LINK: Link degraded
  [   11.281477269,3] PHB#0005[0:5]: LINK: Link degraded
  [   11.283123885,3] PHB#0005[0:5]: LINK: Degraded but no more retries

Signed-off-by: Michael Neuling <mikey@neuling.org>
Acked-by: Russell Currey <ruscur@russell.cc>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
  • Loading branch information
mikey authored and stewartsmith committed Sep 15, 2017
1 parent 3f936ba commit 4a2b831
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion hw/phb4.c
Expand Up @@ -2622,7 +2622,13 @@ static int64_t phb4_poll_link(struct pci_slot *slot)
PHBDBG(p, "LINK: Link is stable\n");
if (!phb4_link_optimal(slot)) {
PHBERR(p, "LINK: Link degraded\n");
return phb4_retry_state(slot);
if (slot->link_retries)
return phb4_retry_state(slot);
/*
* Link is degraded but no more retries, so
* settle for what we have :-(
*/
PHBERR(p, "LINK: Degraded but no more retries\n");
}
pci_slot_set_state(slot, PHB4_SLOT_NORMAL);
return OPAL_SUCCESS;
Expand Down

0 comments on commit 4a2b831

Please sign in to comment.