From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id F1D12B171 for ; Wed, 18 Jun 2014 18:57:55 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 18 Jun 2014 09:52:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,501,1400050800"; d="scan'208";a="559662722" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 18 Jun 2014 09:58:02 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id s5IGvxYT023415; Wed, 18 Jun 2014 17:57:59 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id s5IGvwmv003859; Wed, 18 Jun 2014 17:57:58 +0100 Received: (from aburakov@localhost) by sivswdev01.ir.intel.com with id s5IGvwjd003855; Wed, 18 Jun 2014 17:57:58 +0100 From: Anatoly Burakov To: dev@dpdk.org Date: Wed, 18 Jun 2014 17:57:58 +0100 Message-Id: <7c544ddadfbc7c8c23f8e49b4b0aceaefc42ac20.1403110823.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 1.7.0.7 Subject: [dpdk-dev] [PATCH] dpdk_nic_bind: unbind ports that were erroneously bound X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jun 2014 16:57:56 -0000 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 --- tools/dpdk_nic_bind.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py index 42e845f..334bf47 100755 --- a/tools/dpdk_nic_bind.py +++ b/tools/dpdk_nic_bind.py @@ -383,10 +383,32 @@ 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 -- 1.8.1.4