Hi Hemminger,
Latest "dpdk-devbind.py --status-dev" just can support
{net,baseband,crypto,event,mempool,compress} devices,
But can not support show Misc devices, can you fix it or provide new method to
show?
Notes: Old dpdk-devbind.py can support show cbdma device by cmd "
./usertools/dpdk-devbind.py --status-dev misc "
Trace Log:
root@dpdk-yaobing-purely147:~/dpdk# ./usertools/dpdk-devbind.py
--status-dev misc
usage: dpdk-devbind.py [-h] [-s]
[--status-dev
{net,baseband,crypto,event,mempool,compress}]
[-b DRIVER | -u] [--force]
[DEVICE [DEVICE ...]]
dpdk-devbind.py: error: argument --status-dev: invalid choice: 'misc'
(choose from 'net', 'baseband', 'crypto', 'event', 'mempool', 'compress')
root@dpdk-yaobing-purely147:~/dpdk# ./usertools/dpdk-devbind.py -s
Misc (rawdev) devices using kernel
driver
=========================================
0000:00:04.0 'Sky Lake-E CBDMA
Registers 2021' drv=ioatdma unused=vfio-pci
Best Regards
Jiang yu
> -----Original Message-----
> From: dev [mailto:[email protected]] On Behalf Of Stephen
> Hemminger
> Sent: Wednesday, November 4, 2020 2:49 PM
> To: [email protected]
> Cc: [email protected]; Stephen Hemminger <[email protected]>
> Subject: [dpdk-dev] [PATCH v2 6/7] dpdk-pmdinfo: replace deprecated
> optparse with argparse
>
> The optparse module is deprecated and replaced with new argparse.
> The code now enforces the rule that only one of the output formats can be
> specified: raw or json.
>
> Signed-off-by: Stephen Hemminger <[email protected]>
> ---
> usertools/dpdk-pmdinfo.py | 70 ++++++++++++++++++---------------------
> 1 file changed, 32 insertions(+), 38 deletions(-)
>
> diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py index
> aec2abe9a683..1c2c3d05fea6 100755
> --- a/usertools/dpdk-pmdinfo.py
> +++ b/usertools/dpdk-pmdinfo.py
> @@ -11,10 +11,11 @@
> import os
> import platform
> import sys
> +import argparse
> from elftools.common.exceptions import ELFError from
> elftools.common.py3compat import byte2int from elftools.elf.elffile import
> ELFFile -from optparse import OptionParser
> +
>
> # For running from development directory. It should take precedence over
> the # installed pyelftools.
> @@ -563,56 +564,49 @@ def main(stream=None):
> if not os.path.exists(pcifile_default):
> pcifile_default = "/usr/share/misc/pci_vendors"
>
> - optparser = OptionParser(
> - usage='usage: %prog [-hrtp] [-d <pci id file] <elf-file>',
> - description="Dump pmd hardware support info",
> - add_help_option=True)
> - optparser.add_option('-r', '--raw',
> - action='store_true', dest='raw_output',
> - help='Dump raw json strings')
> - optparser.add_option("-d", "--pcidb", dest="pcifile",
> - help="specify a pci database "
> - "to get vendor names from",
> - default=pcifile_default, metavar="FILE")
> - optparser.add_option("-t", "--table", dest="tblout",
> - help="output information on hw support as a "
> - "hex table",
> - action='store_true')
> - optparser.add_option("-p", "--plugindir", dest="pdir",
> - help="scan dpdk for autoload plugins",
> - action='store_true')
> -
> - options, args = optparser.parse_args()
> -
> - if options.raw_output:
> + parser = argparse.ArgumentParser(
> + usage='usage: %(prog)s [-hrtp] [-d <pci id file>] elf_file',
> + description="Dump pmd hardware support info")
> + group = parser.add_mutually_exclusive_group()
> + group.add_argument('-r', '--raw',
> + action='store_true', dest='raw_output',
> + help='dump raw json strings')
> + group.add_argument("-t", "--table", dest="tblout",
> + help="output information on hw support as a hex
> table",
> + action='store_true')
> + parser.add_argument("-d", "--pcidb", dest="pcifile",
> + help="specify a pci database to get vendor names
> from",
> + default=pcifile_default, metavar="FILE")
> + parser.add_argument("-p", "--plugindir", dest="pdir",
> + help="scan dpdk for autoload plugins",
> + action='store_true')
> + parser.add_argument("elf_file", help="driver shared object file")
> + args = parser.parse_args()
> +
> + if args.raw_output:
> raw_output = True
>
> - if options.pcifile:
> - pcidb = PCIIds(options.pcifile)
> + if args.tblout:
> + args.pcifile = None
> +
> + if args.pcifile:
> + pcidb = PCIIds(args.pcifile)
> if pcidb is None:
> print("Pci DB file not found")
> exit(1)
>
> - if options.tblout:
> - options.pcifile = None
> - pcidb = None
> -
> - if len(args) == 0:
> - optparser.print_usage()
> - exit(1)
> -
> - if options.pdir:
> + if args.pdir:
> exit(scan_for_autoload_pmds(args[0]))
>
> ldlibpath = os.environ.get('LD_LIBRARY_PATH')
> if ldlibpath is None:
> ldlibpath = ""
>
> - if os.path.exists(args[0]):
> - myelffile = args[0]
> + if os.path.exists(args.elf_file):
> + myelffile = args.elf_file
> else:
> - myelffile = search_file(
> - args[0], ldlibpath + ":/usr/lib64:/lib64:/usr/lib:/lib")
> + myelffile = search_file(args.elf_file,
> + ldlibpath +
> + ":/usr/lib64:/lib64:/usr/lib:/lib")
>
> if myelffile is None:
> print("File not found")
> --
> 2.27.0
root@dpdk-yaobing-purely147:~/dpdk# ./usertools/dpdk-devbind.py -h
usage: dpdk-devbind.py [-h] [-s]
[--status-dev
{net,baseband,crypto,event,mempool,compress}]
[-b DRIVER | -u] [--force]
[DEVICE [DEVICE ...]]
Utility to bind and unbind devices from Linux kernel
positional arguments:
DEVICE Device specified as PCI "domain:bus:slot.func" syntax
or "bus:slot.func" syntax. For devices bound to Linux
kernel drivers, they may be referred to by interface
name.
optional arguments:
-h, --help show this help message and exit
-s, --status Print the current status of all known devices.
--status-dev {net,baseband,crypto,event,mempool,compress}
Print the status of given device group.
-b DRIVER, --bind DRIVER
Select the driver to use or "none" to unbind the
device
-u, --unbind Unbind a device (equivalent to "-b none")
--force Override restriction on binding devices in use by
Linux" WARNING: This can lead to loss of network
connection and should be used with caution.
Examples:
---------
To display current device status:
dpdk-devbind.py --status
To display current network device status:
dpdk-devbind.py --status-dev net
To bind eth1 from the current driver and move to use vfio-pci
dpdk-devbind.py --bind=vfio-pci eth1
To unbind 0000:01:00.0 from using any driver
dpdk-devbind.py -u 0000:01:00.0
To bind 0000:02:00.0 and 0000:02:00.1 to the ixgbe kernel driver
dpdk-devbind.py -b ixgbe 02:00.0 02:00.1
root@dpdk-yaobing-purely147:~/dpdk#
root@dpdk-yaobing-purely147:~/dpdk# ./usertools/dpdk-devbind.py -s
Network devices using kernel driver
===================================
0000:20:00.0 'Ethernet Connection X722 for 10GBASE-T 37d2' if=eno1 drv=i40e
unused=vfio-pci *Active*
0000:20:00.1 'Ethernet Connection X722 for 10GBASE-T 37d2' if=eno2 drv=i40e
unused=vfio-pci
0000:20:00.2 'Ethernet Connection X722 for 10GbE SFP+ 37d3' if=eno3 drv=i40e
unused=vfio-pci
0000:20:00.3 'Ethernet Connection X722 for 10GbE SFP+ 37d3' if=eno4 drv=i40e
unused=vfio-pci
0000:3b:00.0 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp59s0f0
drv=i40e unused=vfio-pci
0000:3b:00.1 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp59s0f1
drv=i40e unused=vfio-pci
0000:60:00.0 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp96s0f0
drv=i40e unused=vfio-pci
0000:60:00.1 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp96s0f1
drv=i40e unused=vfio-pci
0000:86:00.0 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp134s0f0
drv=i40e unused=vfio-pci
0000:86:00.1 'Ethernet Controller XL710 for 40GbE QSFP+ 1583' if=enp134s0f1
drv=i40e unused=vfio-pci
0000:d8:00.0 'Ethernet Controller X710 for 10GbE SFP+ 1572' if=enp216s0f0
drv=i40e unused=vfio-pci
0000:d8:00.1 'Ethernet Controller X710 for 10GbE SFP+ 1572' if=enp216s0f1
drv=i40e unused=vfio-pci
0000:d8:00.2 'Ethernet Controller X710 for 10GbE SFP+ 1572' if=enp216s0f2
drv=i40e unused=vfio-pci
0000:d8:00.3 'Ethernet Controller X710 for 10GbE SFP+ 1572' if=enp216s0f3
drv=i40e unused=vfio-pci
No 'Baseband' devices detected
==============================
Crypto devices using DPDK-compatible driver
===========================================
0000:1a:01.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:01.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1a:02.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:01.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1c:02.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:01.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.0 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.1 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.2 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.3 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.4 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.5 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.6 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
0000:1e:02.7 'Device 37c9' drv=vfio-pci unused=qat_c62xvf
Crypto devices using kernel driver
==================================
0000:1a:00.0 'C62x Chipset QuickAssist Technology 37c8' drv=c6xx
unused=qat_c62x,vfio-pci
0000:1c:00.0 'C62x Chipset QuickAssist Technology 37c8' drv=c6xx
unused=qat_c62x,vfio-pci
0000:1e:00.0 'C62x Chipset QuickAssist Technology 37c8' drv=c6xx
unused=qat_c62x,vfio-pci
No 'Eventdev' devices detected
==============================
No 'Mempool' devices detected
=============================
No 'Compress' devices detected
==============================
Misc (rawdev) devices using kernel driver
=========================================
0000:00:04.0 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.1 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.2 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.3 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.4 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.5 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.6 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:00:04.7 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.0 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.1 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.2 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.3 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.4 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.5 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.6 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
0000:80:04.7 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
No 'Regex' devices detected
===========================