[Skiboot] [PATCH v3 00/10] Initial OpenCAPI 3.0 Support for P9

Alistair Popple alistair at popple.id.au
Fri Feb 2 16:50:44 AEDT 2018


>    At present, we're doing NPU configuration separately from the existing
>    NVLink code. At a later point, we intend to rework this to make it
>    possible to support both NVLink and OpenCAPI links on the same NPU.

Does the hardware actually support this? I can't remember if we ever figured
that out.

- Alistair

>  - Patches 6-7: training links and creating OpenCAPI PHBs
> 
>    Unlike NVLink, which presents a single PHB to represent the entire NPU,
>    we present a single PHB per device/link. This is necessary due to
>    limitations in MMIO window allocation. Unfortunately this makes the
>    structures we share with NVLink a little more complex, oh well.
> 
>  - Patch 8: OPAL API calls
> 
>    We define three new API calls for handling the Shared Process Area and
>    setting OpenCAPI TL template capabilities.
> 
>  - Patch 9: platform support
> 
>    See below.
> 
> Notable limitations:
> 
>  - We only support the zaius platform for now. We'll be adding ZZ after a bit
>    more testing booting ZZs with hostboot rather than BML (probably in V2 of
>    this series). Witherspoon support will come at a later point.
> 
>  - No mixing of OpenCAPI and NVLink devices on the same NPU. This will come in a
>    later series. The only platform this currently impacts is Witherspoon.
> 
>  - No support for link ganging - there are also no OpenCAPI devices that support
>    link ganging yet, so this will come when we get to it...
> 
>  - Link information is hardcoded per platform, and we don't have any form of
>    presence detection apart from failing to train the link. Eventually, this
>    will be detected via I2C once Hostboot adds the relevant link info to HDAT.
> 
>  - No LPC memory - this will come in a later patch once we've done a bit more
>    testing internally.
> 
>  - No link reset functionality - this will come in a later patch.
> 
> This series has been tested on a Zaius. I've also tested it on a
> GPU-equipped Witherspoon to ensure it doesn't break NVLink.
> 
> Thanks to everyone who's helped us with this, especially to Alistair Popple for
> his advice on NVLink, and to the OpenCAPI hardware teams in Austin and
> Rochester who provided us with a lot of vital assistance.
> 
> Comments welcome!
> 
> ---
> 
> Series depends on https://patchwork.ozlabs.org/patch/865155/
> 
> ---
> 
> v1->v2:
> 
>   - Address various comments from Fred
> 
> v2->v3:
> 
>   - Address minor comments from Fred
>   - Silence ioda_reset warning in Linux
>   - Fix PHB device tree issues
>   - Mask FIRs to correctly handle Datalink Layer Stall and NoStall signals
>     (Fred)
>   - Add device tree binding information
>   - Reverse order of lane masks, per Alistair's patch at
>     https://patchwork.ozlabs.org/patch/865155/
> 
> Andrew Donnellan (9):
>   npu2: Split out common helper functions into separate file
>   npu2: Rework NPU data structures for OpenCAPI
>   platform: Add fields for OpenCAPI platform data
>   p9-adu: Implement update sequence for PowerBus Hotplug Mode Control
>   npu2-opencapi: Configure NPU for OpenCAPI
>   npu2-hw-procedures: Add support for OpenCAPI PHY link training
>   npu2-opencapi: Train OpenCAPI links and setup devices
>   platforms: Add OpenCAPI platform data and device tree nodes
>   doc/device-tree: Add OpenCAPI device tree bindings
> 
> Frederic Barrat (1):
>   npu2-opencapi: Add OpenCAPI OPAL API calls
> 
>  core/init.c                                     |    2 +-
>  core/pci.c                                      |    3 +-
>  core/platform.c                                 |   11 +-
>  doc/device-tree/opencapi.rst                    |   95 +-
>  doc/opal-api/opal-npu2-opencapi-159-160-161.rst |  126 +-
>  hw/Makefile.inc                                 |    3 +-
>  hw/npu2-common.c                                |  114 +-
>  hw/npu2-hw-procedures.c                         |   83 +-
>  hw/npu2-opencapi.c                              | 1634 ++++++++++++++++-
>  hw/npu2.c                                       |  311 +--
>  hw/p9-adu.c                                     |  184 ++-
>  include/npu2-regs.h                             |  159 +-
>  include/npu2.h                                  |   95 +-
>  include/opal-api.h                              |    5 +-
>  include/p9-adu.h                                |   59 +-
>  include/pci.h                                   |    1 +-
>  include/platform.h                              |   14 +-
>  include/skiboot.h                               |    1 +-
>  platforms/astbmc/zaius.c                        |   96 +-
>  platforms/ibm-fsp/zz.c                          |   11 +-
>  20 files changed, 2791 insertions(+), 216 deletions(-)
>  create mode 100644 doc/device-tree/opencapi.rst
>  create mode 100644 doc/opal-api/opal-npu2-opencapi-159-160-161.rst
>  create mode 100644 hw/npu2-common.c
>  create mode 100644 hw/npu2-opencapi.c
>  create mode 100644 hw/p9-adu.c
>  create mode 100644 include/p9-adu.h
> 
> base-commit: ce5f10cb7e5d1323e4ec9d1b59a393ab7c70d45d
> 




More information about the Skiboot mailing list