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:dev-boun...@dpdk.org] On Behalf Of Stephen > Hemminger > Sent: Wednesday, November 4, 2020 2:49 PM > To: nhor...@tuxdriver.com > Cc: dev@dpdk.org; Stephen Hemminger <step...@networkplumber.org> > 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 <step...@networkplumber.org> > --- > 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 ===========================