[Skiboot] [PATCH v2 0/5] CAPI disabling support for kexec/fast reboot

Andrew Donnellan andrew.donnellan at au1.ibm.com
Fri Jan 13 16:09:36 AEDT 2017

Currently, if you attempt to kexec or fast reboot from a machine with a
CAPI card and the cxl driver loaded, you are going to have an exceedingly
bad time. It turns out that the hardware doesn't really cope very well with
going through the standard Linux PCI initialisation process while a PHB is
still in CAPI mode. Checkstops everywhere!

This series implements support for switching a PHB from CAPI mode back to
regular PCIe mode during a complete reset. The SCOM sequences have been
derived through a mix of advice from other IBMers, reading through various
internal workbooks, and trial and error.

This has only been lightly tested - I've kexec-ed/fast rebooted quite a few
times with no real problems, and I've run some basic CAPI tests that don't
seem to fail too much more than they normally fail. As this procedure
involves forcing the CAPP into recovery, we do see a lot of HMIs but as far
as I'm aware they're harmless and there's not much we can really do about

At this stage, I haven't thought too hard about whether we can
disable CAPI mode while Linux is running for e.g. PCI hotplug, which could
get tricky. That's a question for later...

Thanks to Vaibhav Jain (who made a previous attempt at this), Mikey
Neuling, Ben Herrenschmidt, Gavin Shan, Bill Daly, Ken Lauricella and JT
Kellington for advice on various bits of this.



Changes since V1:

* Add some more comments (thanks Fred)

Changes since RFC V1:

* switched to using a host sync notifier so the old kernel triggers the
creset, rather than relying on new kernel, and we don't need a new OPAL
call to check CAPI state (suggested by Stewart)

* code style comments from Gavin

* minor tidying up around the place

Andrew Donnellan (5):
  core/pci: remove misleading fast reboot comment
  fast-reboot: creset PHBs on fast reboot
  hw/phb3: disable CAPI mode during complete reset
  hw/phb3: add host sync notifier to trigger creset/CAPP disable on kexec
  fast-reboot: remove CAPI check

 core/fast-reboot.c |  12 +---
 core/pci.c         |  22 +++++-
 hw/phb3.c          | 180 ++++++++++++++++++++++++++++++++++++++++++++--
 include/phb3.h     |   9 +-
 4 files changed, 200 insertions(+), 23 deletions(-)

base-commit: 293ca03683bfcd2c787b7e6f7c760238ba8eeae3
git-series 0.9.1

More information about the Skiboot mailing list