This is an attempt to fix device hotremove with VFIO. A soft device hotremove request through sysfs [1] would currently just block until the SPDK process manually releases that device - e.g. upon an RPC request. VFIO won't get unbound from the device untill userspace releases all its resources. VFIO can signal a pending hotremove request by kicking any file descriptor provided by the userspace - and DPDK does provide such descriptor - but SPDK does not listen on it. DPDK does offer handy API to listen and in this patch we make use of it inside our env/pci layer. Within a DPDK callback we set an internal per-device hotremove flag, which upper-layer SPDK drivers can poll with a new env API - spdk_pci_device_is_removed(). The VFIO hotremove event will be sent to primary processes only, so that's where we listen. We make use of this new API in the NVMe hotplug poller, which will process it just like any other supported hotremove event. Fixes #595 Fixes #690 [1] # echo 1 > /sys/bus/pci/devices/<bdf>/remove Change-Id: I03d88271c2089c740e232056d9340e5a640d442c Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448927 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
linux | ||
spdk | ||
spdk_internal | ||
Makefile |