[Skiboot] [PATCH v2 2/5] fast-reboot: creset PHBs on fast reboot
Gavin Shan
gwshan at linux.vnet.ibm.com
Mon Jan 16 10:20:49 AEDT 2017
On Fri, Jan 13, 2017 at 04:09:38PM +1100, Andrew Donnellan wrote:
>On fast reboot, perform a creset of all PHBs. This ensures that any PHBs
>that are fenced will be working after the reboot.
>
>A later patch will disable CAPI mode during cresets - as such, PHBs in CAPI
>mode will return to regular PCIe mode during a fast reboot.
>
>Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
>
>---
>
>This slows down fast reboot a bit. Could we do this in parallel? Should we
>limit it only to fenced/CAPI mode PHBs? (Resetting all PHBs might make
>things slightly more reliable, but probably only slightly...)
>---
> core/pci.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
>diff --git a/core/pci.c b/core/pci.c
>index 05fd80f..bef42b4 100644
>--- a/core/pci.c
>+++ b/core/pci.c
>@@ -1497,6 +1497,7 @@ static void __pci_reset(struct list_head *list)
> void pci_reset(void)
> {
> unsigned int i;
>+ struct pci_slot *slot;
>
> prlog(PR_NOTICE, "PCI: Clearing all devices...\n");
>
>@@ -1508,6 +1509,25 @@ void pci_reset(void)
> if (!phb)
> continue;
> __pci_reset(&phb->devices);
PCINOTICE(phb, 0, ...) indicates the message applies to root port,
not PHB.
>+
>+ slot = phb->slot;
>+ if (!slot || !slot->ops.creset) {
>+ PCINOTICE(phb, 0, "Can't do complete reset\n");
>+ } else {
>+ int rc = slot->ops.creset(slot);
slot->ops.create() returns error or delay whose data type is int64_t.
>+ while (rc > 0) {
>+ time_wait(rc);
>+ rc = slot->ops.poll(slot);
>+ }
>+ if (rc < 0) {
>+ PCIERR(phb, 0, "Complete reset failed, aborting"
>+ "fast reboot\n");
It might be worthy to print @rc.
>+ if (platform.cec_reboot)
>+ platform.cec_reboot();
>+ while (true) {}
Rebooting the system in failing case seems not good idea. To
remove the failing PHB to avoid probing on it afterwards would
be better.
>+ }
>+ }
>+
> if (phb->ops->ioda_reset)
> phb->ops->ioda_reset(phb, true);
> }
Thanks,
Gavin
More information about the Skiboot
mailing list