[dpdk-dev] usertools: add option to unbind all devices

Message ID 20170504141050.64045-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit May 4, 2017, 2:10 p.m. UTC
  -u accepts "dpdk" argument to unbind all devices bound to a DPDK driver.

Usage:
usertools/dpdk-devbind.py -u dpdk

Example:
$ usertools/dpdk-devbind.py -s

Network devices using DPDK-compatible driver
  

Comments

Thomas Monjalon July 5, 2017, 10:54 p.m. UTC | #1
04/05/2017 16:10, Ferruh Yigit:
> -u accepts "dpdk" argument to unbind all devices bound to a DPDK driver.
> 
> Usage:
> usertools/dpdk-devbind.py -u dpdk
> 
> Example:
> $ usertools/dpdk-devbind.py -s
> 
> Network devices using DPDK-compatible driver
> ============================================
> 0000:08:00.1 '...' drv=igb_uio unused=
> 0000:81:00.0 '...' drv=igb_uio unused=
> 0000:88:00.0 '...' drv=igb_uio unused=
> 0000:88:00.1 '...' drv=igb_uio unused=
> ...
> 
> $ usertools/dpdk-devbind.py -u dpdk
> $ usertools/dpdk-devbind.py -s
> 
> Network devices using DPDK-compatible driver
> ============================================
> <none>
> ....
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied, thanks
  

Patch

============================================
0000:08:00.1 '...' drv=igb_uio unused=
0000:81:00.0 '...' drv=igb_uio unused=
0000:88:00.0 '...' drv=igb_uio unused=
0000:88:00.1 '...' drv=igb_uio unused=
...

$ usertools/dpdk-devbind.py -u dpdk
$ usertools/dpdk-devbind.py -s

Network devices using DPDK-compatible driver
============================================
<none>
....

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 usertools/dpdk-devbind.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py
index 2d99e9d..1a51c26 100755
--- a/usertools/dpdk-devbind.py
+++ b/usertools/dpdk-devbind.py
@@ -517,6 +517,14 @@  def bind_one(dev_id, driver, force):
 
 def unbind_all(dev_list, force=False):
     """Unbind method, takes a list of device locations"""
+
+    if dev_list[0] == "dpdk":
+        for d in devices.keys():
+            if "Driver_str" in devices[d]:
+                if devices[d]["Driver_str"] in dpdk_drivers:
+                    unbind_one(devices[d]["Slot"], force)
+        return
+
     dev_list = map(dev_id_from_dev_name, dev_list)
     for d in dev_list:
         unbind_one(d, force)