This is the linux part of the work to use the PCI hotplug framework to control an opencapi card so that it can be reset and re-read after flashing a new FPGA image. I had posted it earlier as an RFC and this version is mostly similar, with just some minor editing.
It needs support in skiboot: http://patchwork.ozlabs.org/project/skiboot/list/?series=129724 On an old skiboot, it will do nothing. A virtual PCI slot is created for the opencapi adapter, and its state can be controlled through the pnv-php hotplug driver: echo 0|1 > /sys/bus/pci/slots/OPENCAPI-<...>/power Note that the power to the card is not really turned off, as the card needs to stay on to be flashed with a new image. Instead the card is in reset. The first part of the series mostly deals with the pci/ioda state, as the opencapi devices can now go away and the state needs to be cleaned up. The second part is modifications to the PCI hotplug driver on powernv, so that a virtual slot is created for the opencapi adapters found in the device tree. Frederic Barrat (11): powerpc/powernv/ioda: Fix ref count for devices with their own PE powerpc/powernv/ioda: Protect PE list powerpc/powernv/ioda: set up PE on opencapi device when enabling powerpc/powernv/ioda: Release opencapi device powerpc/powernv/ioda: Find opencapi slot for a device node pci/hotplug/pnv-php: Remove erroneous warning pci/hotplug/pnv-php: Improve error msg on power state change failure pci/hotplug/pnv-php: Register opencapi slots pci/hotplug/pnv-php: Relax check when disabling slot pci/hotplug/pnv-php: Wrap warnings in macro ocxl: Add PCI hotplug dependency to Kconfig arch/powerpc/include/asm/pnv-pci.h | 1 + arch/powerpc/platforms/powernv/pci-ioda.c | 107 ++++++++++++++-------- arch/powerpc/platforms/powernv/pci.c | 10 +- drivers/misc/ocxl/Kconfig | 1 + drivers/pci/hotplug/pnv_php.c | 82 ++++++++++------- 5 files changed, 125 insertions(+), 76 deletions(-) -- 2.21.0