It's time to think (again) how we bind devices with kernel modules. We need to decide how we want to manage hotplugged devices with DPDK.
A bit of history first. There was some code in DPDK for bind/unbind, but it has been removed in DPDK 1.7 - http://dpdk.org/commit/5d8751b83 Copy of the commit message (in 2014): " The bind/unbind operations should not be handled by the eal. These operations should be either done outside of dpdk or inside the PMDs themselves as these are their problems. " The question raised at this time (4 years ago) is still under discussion. Should we manage binding inside or outside DPDK? Should it be controlled in the application or in the OS base? As you know, we use dpdk-devbind.py. This tool lacks two major features: - persistent configuration - hotplug If we consider that the DPDK applications should be able to apply its own policy to choose the devices to bind, then we need to implement binding in the PMD (with EAL helpers). On the other hand, if we consider that it is the system responsibility, then we could choose systemd/udev and driverctl. The debate is launched! Please find more details in the references below. Announce of driverctl: http://dpdk.org/ml/archives/dev/2015-December/029500.html Repository of driverctl: https://gitlab.com/driverctl/driverctl Discussion about binding script and driverctl: http://dpdk.org/ml/archives/dev/2018-April/095687.html Patch to implement binding in DPDK (for hotplug): http://dpdk.org/ml/archives/dev/2018-April/095714.html Discussion in the same hotplug series: http://dpdk.org/ml/archives/dev/2018-April/097058.html