[Skiboot] [PATCH v2] pci: Avoid hot reset after post-fundamental reset
Gavin Shan
gwshan at linux.vnet.ibm.com
Wed Oct 12 10:04:34 AEDT 2016
On Tue, Oct 11, 2016 at 04:04:07PM +1100, Russell Currey wrote:
>In the PCI post-fundamental reset code, a hot reset is performed at the
>end. This is causing issues at boot time as a reset signal is being sent
>downstream before the links are up, which is causing issues on adapters
>behind switches. No errors result in skiboot, but the adapters are not
>usable in Linux as a result.
>
>This patch fixes some adapters not being configurable in Linux on some
>systems. The issue was not present in skiboot 5.2.x.
>
>Cc: stable # 5.3.x
>Signed-off-by: Russell Currey <ruscur at russell.cc>
It seems one pointed missed from last comments: firenze_pci_slot_freset()
need similar thing to skip hot reset. With this fixed:
Acked-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
Thanks,
Gavin
>---
> hw/p7ioc-phb.c | 4 ++--
> hw/phb3.c | 4 ++--
> hw/phb4.c | 8 --------
> 3 files changed, 4 insertions(+), 12 deletions(-)
>
>diff --git a/hw/p7ioc-phb.c b/hw/p7ioc-phb.c
>index d2a18a3..1f1b362 100644
>--- a/hw/p7ioc-phb.c
>+++ b/hw/p7ioc-phb.c
>@@ -2234,8 +2234,8 @@ static int64_t p7ioc_freset(struct pci_slot *slot)
> return slot->ops.pfreset(slot);
> }
>
>- pci_slot_set_state(slot, P7IOC_SLOT_HRESET_START);
>- return slot->ops.hreset(slot);
>+ pci_slot_set_state(slot, P7IOC_SLOT_LINK_START);
>+ return slot->ops.poll_link(slot);
> default:
> PHBERR(p, "FRESET: Unexpected slot state %08x\n",
> slot->state);
>diff --git a/hw/phb3.c b/hw/phb3.c
>index d0b5010..817137b 100644
>--- a/hw/phb3.c
>+++ b/hw/phb3.c
>@@ -2240,8 +2240,8 @@ static int64_t phb3_pfreset(struct pci_slot *slot)
> /* CAPP FPGA requires 1s to flash before polling link */
> return pci_slot_set_sm_timeout(slot, secs_to_tb(1));
> case PHB3_SLOT_PFRESET_DEASSERT_DELAY:
>- pci_slot_set_state(slot, PHB3_SLOT_HRESET_START);
>- return slot->ops.hreset(slot);
>+ pci_slot_set_state(slot, PHB3_SLOT_LINK_START);
>+ return slot->ops.poll_link(slot);
> default:
> PHBERR(p, "Unexpected slot state %08x\n", slot->state);
> }
>diff --git a/hw/phb4.c b/hw/phb4.c
>index 385ce8c..efb6a5f 100644
>--- a/hw/phb4.c
>+++ b/hw/phb4.c
>@@ -1951,16 +1951,8 @@ static int64_t phb4_pfreset(struct pci_slot *slot)
> /* CAPP FPGA requires 1s to flash before polling link */
> return pci_slot_set_sm_timeout(slot, secs_to_tb(1));
> case PHB4_SLOT_PFRESET_DEASSERT_DELAY:
>-#if 0 /* PHB3 does a Hreset here. It's unnecessary I think and it's
>- * causing problems with the simulator croc model so don't do
>- * it until I figure out Gavin's reasons
>- */
>- pci_slot_set_state(slot, PHB4_SLOT_HRESET_START);
>- return slot->ops.hreset(slot);
>-#else
> pci_slot_set_state(slot, PHB4_SLOT_LINK_START);
> return slot->ops.poll_link(slot);
>-#endif
> default:
> PHBERR(p, "Unexpected slot state %08x\n", slot->state);
> }
>--
>2.10.0
>
>_______________________________________________
>Skiboot mailing list
>Skiboot at lists.ozlabs.org
>https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list