[dpdk-dev,v2] tools/dpdk_nic_bind: Fix can't bind virtio-pci issue

Message ID 1425437735-20673-1-git-send-email-changchun.ouyang@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Ouyang Changchun March 4, 2015, 2:55 a.m. UTC
  The dpdk_nic_bind script will not allow ports to be bound or unbound if none of the
kernel modules supported by DPDK is loaded. This patch relaxes this restriction by
checking if a DPDK module is actually requested. The example below illustrates this
problem:

In virtio test, on the guest
1. Bind virtio port to igb_uio driver;
2. Remove igb_uio module;
3. Bind virtio port to virtio-pci driver, it fails and reports:
   "Error - no supported modules are loaded"

The script should check the to-be-bound driver flag, if it is dpdk driver(igb_uio, vfio etc),
and the corresponding module is not loaded, then exit, otherwise, just report a warning,
and continue to bind the non-dpdk driver(like virtio-pci) to dev.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---

Changes in v2:
  -- Update the description.

 tools/dpdk_nic_bind.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  

Comments

Michael Qiu March 4, 2015, 11:31 a.m. UTC | #1
On 3/4/2015 10:56 AM, Ouyang Changchun wrote:
> The dpdk_nic_bind script will not allow ports to be bound or unbound if none of the
> kernel modules supported by DPDK is loaded. This patch relaxes this restriction by
> checking if a DPDK module is actually requested. The example below illustrates this
> problem:
>
> In virtio test, on the guest
> 1. Bind virtio port to igb_uio driver;
> 2. Remove igb_uio module;
> 3. Bind virtio port to virtio-pci driver, it fails and reports:
>    "Error - no supported modules are loaded"
>
> The script should check the to-be-bound driver flag, if it is dpdk driver(igb_uio, vfio etc),
> and the corresponding module is not loaded, then exit, otherwise, just report a warning,
> and continue to bind the non-dpdk driver(like virtio-pci) to dev.
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
>
> Changes in v2:
>   -- Update the description.
>
>  tools/dpdk_nic_bind.py | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py
> index 2483056..8523f82 100755
> --- a/tools/dpdk_nic_bind.py
> +++ b/tools/dpdk_nic_bind.py
> @@ -175,8 +175,11 @@ def check_modules():
>  
>      # check if we have at least one loaded module
>      if True not in [mod["Found"] for mod in mods] and b_flag is not None:
> -        print "Error - no supported modules are loaded"
> -        sys.exit(1)
> +        if b_flag in dpdk_drivers:
> +            print "Error - no supported modules(DPDK driver) are loaded"
> +            sys.exit(1)
> +        else:
> +            print "Warning - no supported modules(DPDK driver) are loaded"
>  
>      # change DPDK driver list to only contain drivers that are loaded
>      dpdk_drivers = [mod["Name"] for mod in mods if mod["Found"]]
Acked-by: Michael Qiu <michael.qiu@intel.com>
  
Thomas Monjalon March 5, 2015, 8:31 p.m. UTC | #2
> > The dpdk_nic_bind script will not allow ports to be bound or unbound if none of the
> > kernel modules supported by DPDK is loaded. This patch relaxes this restriction by
> > checking if a DPDK module is actually requested. The example below illustrates this
> > problem:
> >
> > In virtio test, on the guest
> > 1. Bind virtio port to igb_uio driver;
> > 2. Remove igb_uio module;
> > 3. Bind virtio port to virtio-pci driver, it fails and reports:
> >    "Error - no supported modules are loaded"
> >
> > The script should check the to-be-bound driver flag, if it is dpdk driver(igb_uio, vfio etc),
> > and the corresponding module is not loaded, then exit, otherwise, just report a warning,
> > and continue to bind the non-dpdk driver(like virtio-pci) to dev.
> >
> > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> Acked-by: Michael Qiu <michael.qiu@intel.com>

Applied, thanks
  

Patch

diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py
index 2483056..8523f82 100755
--- a/tools/dpdk_nic_bind.py
+++ b/tools/dpdk_nic_bind.py
@@ -175,8 +175,11 @@  def check_modules():
 
     # check if we have at least one loaded module
     if True not in [mod["Found"] for mod in mods] and b_flag is not None:
-        print "Error - no supported modules are loaded"
-        sys.exit(1)
+        if b_flag in dpdk_drivers:
+            print "Error - no supported modules(DPDK driver) are loaded"
+            sys.exit(1)
+        else:
+            print "Warning - no supported modules(DPDK driver) are loaded"
 
     # change DPDK driver list to only contain drivers that are loaded
     dpdk_drivers = [mod["Name"] for mod in mods if mod["Found"]]