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.
It needs support in skiboot: http://patchwork.ozlabs.org/project/skiboot/list/?series=114803 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 placed in reset. The first part of the series mostly deals with the pci/ioda state, as the devices can now go away and the state needs to be cleaned up. The second part is modifications to the 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 | 106 ++++++++++++++-------- arch/powerpc/platforms/powernv/pci.c | 10 +- drivers/misc/ocxl/Kconfig | 1 + drivers/pci/hotplug/pnv_php.c | 66 ++++++++------ 5 files changed, 115 insertions(+), 69 deletions(-) -- 2.21.0