[Skiboot] [PATCH v2 00/25] move direct controls out of fast-reboot, generalize them, add quiescing

Nicholas Piggin npiggin at gmail.com
Sat Nov 25 01:08:09 AEDT 2017

Here's a set of patches that move the p8 direct controls out of
fast-reboot and into direct-controls. The fast reboot APIs are
implemented on top of direct controls API. This should allow fast
reboot to use sreset on p9, and cleans things up.

Also added opal quiescing and implements it in fast reboot, which
is also useful for the host.

Since this was last posted, I've made quite a few changes (thanks
to review and testing with op-test-framework).

- better debugging output for opal quiesce errors
- fix un-quiescing bug upon timeout failure
- Don't de-assert special wakeup before secondaries have called in (this
  seemed to be the cause of the reduced reliability of v1).
- add error checking for p8 scoms
- document p8 sreset limitations
- split up patches better
- improved changelog comments
- fix up CPU iterator loops to follow existing iterator patterns
- document mutual exclusion and acquire/release semantics of opal quiescing


Nicholas Piggin (25):
  fast-reboot: restore SMT priority on spin loop exit
  fast-reboot: factor out direct control loops for sreset
  fast-reboot: remove last man standing logic
  fast-reboot: clean up some common cpu iteration processes with macros
  fast-reboot: factor out the mambo sreset code
  fast-reboot: add sreset_all_others error handling
  fast-reboot: make spin loops consistent and SMT friendly
  fast-reboot: add sreset timeout detection and handling
  fast-reboot: add more barriers around cpu state changes
  fast-reboot: remove delay after sreset
  fast-reboot: inline fast_reset_p8 into fast_reboot
  fast-reboot: move de-asserting of special wakeups to the initiator
  fast-reboot: allow mambo fast reboot independent of CPU type
  fast-reboot: move sreset direct controls to direct-controls.c
  direct-controls: change p8_sreset_all_others sequence
  direct-controls: p8 implementation of generic direct controls
  direct-controls: add xscom error handling for p8
  core/lock: Introduce atomic cmpxchg and implement try_lock with it
  core/lock: improve bust_locks
  asm/head: add entry/exit calls
  asm/head: move opal entry token check into C
  core/opal: always verify cpu->pir on entry
  core: Add support for quiescing OPAL
  fast-reboot: quiesce opal before initiating a fast reboot
  fast-reboot: improve failure error messages

 asm/Makefile.inc                              |   2 +-
 asm/head.S                                    |  35 +--
 core/cpu.c                                    |  36 +++
 core/direct-controls.c                        | 349 ++++++++++++++++++++-
 core/fast-reboot.c                            | 435 ++++++--------------------
 core/lock.c                                   |  29 +-
 core/opal.c                                   | 204 +++++++++++-
 core/platform.c                               |   6 +
 doc/opal-api/opal-quiesce-158.rst             |  59 ++++
 doc/opal-api/opal-signal-system-reset-145.rst |   7 +
 include/cpu.h                                 |  12 +
 asm/lock.S => include/direct-controls.h       |  36 +--
 include/lock.h                                |  58 +++-
 include/opal-api.h                            |   9 +-
 include/opal-internal.h                       |   2 +
 15 files changed, 861 insertions(+), 418 deletions(-)
 create mode 100644 doc/opal-api/opal-quiesce-158.rst
 rename asm/lock.S => include/direct-controls.h (56%)


More information about the Skiboot mailing list