DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Jiang, YuX" <yux.jiang@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
	"nhorman@tuxdriver.com" <nhorman@tuxdriver.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 6/7] dpdk-pmdinfo: replace deprecated optparse	with argparse
Date: Tue, 24 Nov 2020 06:35:54 +0000	[thread overview]
Message-ID: <4eadf636681f45baa1435e63d1db2fae@intel.com> (raw)
In-Reply-To: <20201104064842.25832-7-stephen@networkplumber.org>

[-- Attachment #1: Type: text/plain, Size: 6030 bytes --]

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


[-- Attachment #2: dpdk-devbind-cmd.txt --]
[-- Type: text/plain, Size: 8301 bytes --]

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
===========================

  reply	other threads:[~2020-11-24  6:36 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-06  1:31 [dpdk-dev] [PATCH 00/11] Python script updates Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 01/11] cpu_layout: refactor to meet python standards Stephen Hemminger
2020-11-04  6:53   ` [dpdk-dev] [PATCH v2] " Stephen Hemminger
2020-11-04  9:21     ` Bruce Richardson
2020-11-04 16:22       ` Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 02/11] dpdk-pmdinfo: replace string.split with split Stephen Hemminger
2020-11-04  6:48   ` [dpdk-dev] [PATCH v2 0/7] dpdk-pmdinfo: python lint cleanups Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 1/7] dpdk-pmdinfo: replace string.split with split Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 2/7] dpdk-pmdinfo: replace io.open with open Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 3/7] dpdk-pmdinfo: remove unnecessary paren and else Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 4/7] dpdk-pmdinfo: replace is False and is True Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 5/7] dpdk-pmdinfo: fix indentation Stephen Hemminger
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 6/7] dpdk-pmdinfo: replace deprecated optparse with argparse Stephen Hemminger
2020-11-24  6:35       ` Jiang, YuX [this message]
2020-11-04  6:48     ` [dpdk-dev] [PATCH v2 7/7] dpdk-pmdinfo: do not use len(x) to test for empty Stephen Hemminger
2020-11-22 20:54     ` [dpdk-dev] [PATCH v2 0/7] dpdk-pmdinfo: python lint cleanups Thomas Monjalon
2020-09-06  1:31 ` [dpdk-dev] [PATCH 03/11] dpdk-pmdinfo: replace io.open with open Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 04/11] dpdk-pmdinfo: remove dead code Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 05/11] dpdk-pmdinfo: remove unnecessary paren and else Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 06/11] dpdk-pmdinfo: replace is False and is True Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 07/11] dpdk-pmdinfo: fix indentation Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 08/11] dpdk-pmdinfo: replace deprecated optparse with argparse Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 09/11] dpdk-pmdinfo: do not use len(x) to test for empty Stephen Hemminger
2020-09-07  9:03   ` Bruce Richardson
2020-09-07 17:20     ` Stephen Hemminger
2020-09-06  1:31 ` [dpdk-dev] [PATCH 10/11] dpdk-telemetry-client: fix some pylint warnings Stephen Hemminger
2020-09-07  9:05   ` Bruce Richardson
2020-11-04  7:00   ` [dpdk-dev] [PATCH v2] " Stephen Hemminger
2020-11-15 23:06     ` Thomas Monjalon
2020-09-06  1:31 ` [dpdk-dev] [PATCH 11/11] dpdk-devbind: use argparse instead of getopt Stephen Hemminger
2020-11-04  7:03   ` [dpdk-dev] [PATCH v2 0/6] dpdk-devbind: python lint cleanups Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 1/6] dpdk-devbind: use argparse instead of getopt Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 2/6] dpdk-devbind: fix indentation Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 3/6] dpdk-devbind: fix python lint warnings for imports Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 4/6] dpdk-devbind: do not use len(x) to test for empty Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 5/6] dpdk-devbind: fix unnecessary else after return Stephen Hemminger
2020-11-04  7:03     ` [dpdk-dev] [PATCH v2 6/6] dpdk-devbind: use in to test for multiple strings Stephen Hemminger
2020-11-04  9:28     ` [dpdk-dev] [PATCH v2 0/6] dpdk-devbind: python lint cleanups Bruce Richardson
2020-11-22 21:03       ` Thomas Monjalon
2020-11-04 16:57     ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4eadf636681f45baa1435e63d1db2fae@intel.com \
    --to=yux.jiang@intel.com \
    --cc=dev@dpdk.org \
    --cc=nhorman@tuxdriver.com \
    --cc=stephen@networkplumber.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).