[Skiboot] [PATCH v4 0/8] Enable fast-reboot support for CAPI-2

Stewart Smith stewart at linux.ibm.com
Fri Jan 18 18:01:08 AEDT 2019

Vaibhav Jain <vaibhav at linux.ibm.com> writes:
> Presently enabling CAPP for a CAPI-2 adapter disables fast-reset [1]. This
> was needed as CAPP uses PHB to interact with the CAPI adapter and we need
> to explicitly enable special mode on the PHB to allow CAPP traffic to flow.
> Without gracefully shutting down CAPP, PEC/PHB and CAPP will be forced to
> go in a fence loop during fast-reboot. This happens as CAPP, when it sees
> PHB link down raise CAPP FIR(31:PHB Link Down) and goes into recovery. PEC
> on the other hand when it sees CAPP error raises NFIR(24:cxa_pe_capp_error)
> and again raises a fence.
> To break this fence loop, this patch-set issues a CRESET to the PHB
> attached to the CAPP during fast-reset. During this CRESET we execute a h/w
> sequence to disable CAPP and reset the PEC/PHB registers. We also leverage
> the Opal syncers framework to drive Opal creset state machine during
> fast-reboot. At a very high level following flow is executed to disable CAPP:
> 1. Issue CRESET on the PHB
> 2. During CRESET disable CAPP
> 3. Once CRESET completes let fast-reboot continue.
> The structure of patch-set is as follows (remains mostly same as previous
> patchset):
> First 4 patches are re-factoring/modification patches that implement necessary
> infrastructure needed for forcing a creset at kernel shutdown. We start with
> slight modification of opal-syncers framework followed by a patch that
> introduces a new pci_slot_op named 'completed_sm_run()' that makes it easier to
> detect when pci reset state machine is completed. We then introduce a new struct
> named 'capp' as a member of 'struct phb4'. The fourth patch refactors the
> phb4_set_capi_mode() function to use newly introduced 'struct capp'
> With above infrastructure in place subsequent 4 patches implements a sequence
> needed to perform various h/w routines to disable CAPP when pci creset is
> triggered during kernel shutdown.
> Credits:
> This patchset is based earlier work by "Andrew Donnellan" to implemented
> support for CAPI-1 fast-reboot [2].
> References:
> [1]: 53c4553d('capp: Disable fast-reboot when capp is enabled')
> [2]: ddb880fe('fast-reboot: remove CAPI check')
> Vaibhav Jain (8):
>   opal: Update opal_del_host_sync_notifier() to accept 'void *data'
>   core/pci: Introduce a new pci_slot_op named completed_sm_run()
>   capp/phb: Introduce 'struct capp' to hold capp related info in 'struct
>     phb'
>   phb4/capp: Update and re-factor phb4_set_capi_mode()
>   capp/phb4: Force CAPP to PCIe mode during kernel shutdown
>   capp/phb4: Introduce PHB4 flag, PHB4_CAPP_DISABLE to disable CAPP
>   phb4/capp: Implement sequence to disable CAPP and enable fast-reset
>   capp/phb4: Prevent HMI from getting triggered when disabling CAPP
>  core/opal.c             |   7 +-
>  core/pci-slot.c         |   6 +-
>  hw/capp.c               |  12 ++
>  hw/phb4.c               | 333 +++++++++++++++++++++++++++++++++++-----
>  include/capp.h          |  12 ++
>  include/chip.h          |   1 -
>  include/opal-internal.h |   2 +-
>  include/pci-slot.h      |   1 +
>  include/phb4.h          |   4 +
>  9 files changed, 336 insertions(+), 42 deletions(-)

Thanks! Series merged to master as of d572d3a72fa220f7b0addd02236eefdb51bf6547

Stewart Smith
OPAL Architect, IBM.

More information about the Skiboot mailing list