[Skiboot] [PATCH v2 00/16] opencapi: enable card reset and link retraining
Frederic Barrat
fbarrat at linux.ibm.com
Thu Oct 10 06:37:55 AEDT 2019
This series adds support in skiboot to allow linux to reset an
opencapi adapter. The main intent is to refresh linux' view of the
devices when flashing a new FPGA image on the adapter.
I had sent a previous iteration as an RFC, which was built on top of a
series from Oliver modifying the slot power controls for hotplug. This
new version is now independent. It hopefully doesn't conflict too much
with what Oliver was trying to do, though I'm expecting some
discussions.
The approach taken is to use the PCI hotplug framework. We define a
slot for the (virtual) opencapi PHB. It allows linux to control the
slot state to unplug (set the opencapi adapter in reset) and replug
(release reset and retrain the link). On replug, the PCI devices go
through PCI enumeration, so BARs for the new image will be properly
reassigned.
The first few patches modify the PCI hotplug framework to retrain a
PHB slot when powering on. The 2nd part of the series are fixes to
allow to retrain an already trained opencapi link. The last part is to
allow an opencapi slot to be used by the PCI hotplug framework.
We have a dependency on the version of the DLx and TLx used on the
FPGA to make sure they are reset properly. The hw enablement team has
provided fixes for it for a while now, so we should be good.
Changelog:
v2:
- patch 2: avoid possible deadlock when locking the PHB from timer callbacks (Oliver)
- patch 4: only one callback is now called when waiting for the link to retrain/be ready (Oliver)
- patch 12: log a message if we couldn't reset the PHY (Christophe, Andrew)
- patch 14: move call to mark the opencapi slot hot-pluggable (Christophe)
- patch 15: catch invalid operands in set_pe (Christophe)
- patch 16: wait till the link is trained to clean up its broken status (Christophe)
Frederic Barrat (16):
core/pci: Refactor common paths on slot hotplug
core/pci: Add missing lock in set_power_timer
core/pci: Use proper phandle during hotplug for PHB slots
core/pci: Train link of PHB slots when hotplugging
core/pci: Fix scan of devices for opencapi slots
npu2-hw-procedures: Move some opencapi PHY settings in one-off init
npu2-opencapi: Make sure the PCI slot has the proper ID
npu2-hw-procedures: Fix link retraining on reset
npu2-opencapi: Rework link training timeout
npu2-opencapi: Tweak fundamental reset sequence
npu2-opencapi: Simplify freset states
npu2-opencapi: Detect PHY reset errors
npu2-opencapi: Improve error reporting to the OS
npu2-opencapi: Activate PCI hotplug on opencapi slot
npu2-opencapi: Handle OPAL_UNMAP_PE operation on set_pe() callback
npu2-opencapi: Log a warning when resetting a broken device
core/pci-opal.c | 166 ++++++++++++++++++++++++++++--------
hw/npu2-common.c | 7 ++
hw/npu2-hw-procedures.c | 64 +++++++++-----
hw/npu2-opencapi.c | 182 +++++++++++++++++++++++++++++-----------
include/npu2.h | 11 ++-
include/pci.h | 5 ++
6 files changed, 327 insertions(+), 108 deletions(-)
--
2.21.0
More information about the Skiboot
mailing list