summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAnatoly Burakov <anatoly.burakov@intel.com>2014-06-18 17:57:58 +0100
committerThomas Monjalon <thomas.monjalon@6wind.com>2014-06-27 02:39:45 +0200
commit49c5044a36313314720a5e5a8a7e0348d7637c4e (patch)
tree5ea7cde12bcb2bee2472490a33657763935c01eb /tools
parentb0f4a445eab2de2962f76e469abac08f079ec113 (diff)
downloaddpdk-49c5044a36313314720a5e5a8a7e0348d7637c4e.zip
dpdk-49c5044a36313314720a5e5a8a7e0348d7637c4e.tar.gz
dpdk-49c5044a36313314720a5e5a8a7e0348d7637c4e.tar.xz
tools: unbind ports that were erroneously bound
When binding devices to a generic driver (i.e. one that doesn't have a PCI ID table, some devices that are not bound to any other driver could be bound even if no one has asked them to. hence, we check the list of drivers again, and see if some of the previously-unbound devices were erroneously bound. if such devices are found, they are unbound back. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/dpdk_nic_bind.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py
index 42e845f..95d1e51 100755
--- a/tools/dpdk_nic_bind.py
+++ b/tools/dpdk_nic_bind.py
@@ -383,10 +383,31 @@ def unbind_all(dev_list, force=False):
def bind_all(dev_list, driver, force=False):
"""Unbind method, takes a list of device locations"""
+ global devices
+
dev_list = map(dev_id_from_dev_name, dev_list)
+
for d in dev_list:
bind_one(d, driver, force)
+ # when binding devices to a generic driver (i.e. one that doesn't have a
+ # PCI ID table), some devices that are not bound to any other driver could
+ # be bound even if no one has asked them to. hence, we check the list of
+ # drivers again, and see if some of the previously-unbound devices were
+ # erroneously bound.
+ for d in devices.keys():
+ # skip devices that were already bound or that we know should be bound
+ if "Driver_str" in devices[d] or d in dev_list:
+ continue
+
+ # update information about this device
+ devices[d] = dict(devices[d].items() +
+ get_pci_device_details(d).items())
+
+ # check if updated information indicates that the device was bound
+ if "Driver_str" in devices[d]:
+ unbind_one(d, force)
+
def display_devices(title, dev_list, extra_params = None):
'''Displays to the user the details of a list of devices given in "dev_list"
The "extra_params" parameter, if given, should contain a string with