get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/84623/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 84623,
    "url": "http://patches.dpdk.org/api/patches/84623/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201127150710.16082-1-david.marchand@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201127150710.16082-1-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201127150710.16082-1-david.marchand@redhat.com",
    "date": "2020-11-27T15:07:10",
    "name": "remove dpdk-setup.sh",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "36c156509172f61ed3a4e93dc052d902b14328c9",
    "submitter": {
        "id": 1173,
        "url": "http://patches.dpdk.org/api/people/1173/?format=api",
        "name": "David Marchand",
        "email": "david.marchand@redhat.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20201127150710.16082-1-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 14135,
            "url": "http://patches.dpdk.org/api/series/14135/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=14135",
            "date": "2020-11-27T15:07:10",
            "name": "remove dpdk-setup.sh",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/14135/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/84623/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/84623/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E2883A0524;\n\tFri, 27 Nov 2020 16:07:35 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7F0F4C93C;\n\tFri, 27 Nov 2020 16:07:33 +0100 (CET)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [63.128.21.124])\n by dpdk.org (Postfix) with ESMTP id 31012C938\n for <dev@dpdk.org>; Fri, 27 Nov 2020 16:07:31 +0100 (CET)",
            "from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com\n [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-142-g_WWIDxuNyCE-BAl4Uy1vw-1; Fri, 27 Nov 2020 10:07:25 -0500",
            "from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com\n [10.5.11.13])\n (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n (No client certificate requested)\n by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D478A84A5F6;\n Fri, 27 Nov 2020 15:07:23 +0000 (UTC)",
            "from dmarchan.remote.csb (unknown [10.40.193.61])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 8421F60861;\n Fri, 27 Nov 2020 15:07:18 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1606489649;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=oO67AKMYXtp5smj14XXcLMSfuaq6X4i03bVb1PJ9590=;\n b=GYZ3P9KbcHJ3+VYwGHsYmNm9bI2BgG+Eh7V5ASy81kPXskLZfhKFkyzlXxLmuRAQHM87wd\n ra+J59qgVz2QqcDXBVwxu3A8gbb1IZJA5+MOuZe6FWKfjoaS/tB9yDpK731vSvfz/BRJsz\n iJ1yYpKIz9Pyzj2sRIQs2S9uw98o/b4=",
        "X-MC-Unique": "g_WWIDxuNyCE-BAl4Uy1vw-1",
        "From": "David Marchand <david.marchand@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, Nicolas Chautru <nicolas.chautru@intel.com>,\n Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>",
        "Date": "Fri, 27 Nov 2020 16:07:10 +0100",
        "Message-Id": "<20201127150710.16082-1-david.marchand@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.13",
        "Authentication-Results": "relay.mimecast.com;\n auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"",
        "Subject": "[dpdk-dev] [PATCH] remove dpdk-setup.sh",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This old script relied on deprecated stuff, and especially make.\nIt also applied some scary 666 permissions on files under /dev/vfio.\n\nIts deprecation had been notified in a previous release, remove it.\n\nSigned-off-by: David Marchand <david.marchand@redhat.com>\n---\n doc/guides/bbdevs/acc100.rst               |  15 +-\n doc/guides/bbdevs/fpga_5gnr_fec.rst        |  20 +-\n doc/guides/bbdevs/fpga_lte_fec.rst         |  20 +-\n doc/guides/faq/faq.rst                     |   3 +-\n doc/guides/linux_gsg/build_dpdk.rst        |   5 -\n doc/guides/linux_gsg/build_sample_apps.rst |   5 -\n doc/guides/linux_gsg/index.rst             |   1 -\n doc/guides/linux_gsg/linux_drivers.rst     |   1 -\n doc/guides/linux_gsg/quick_start.rst       | 304 ----------\n doc/guides/rel_notes/deprecation.rst       |   5 -\n doc/guides/rel_notes/release_20_11.rst     |   2 +\n usertools/dpdk-setup.sh                    | 609 ---------------------\n 12 files changed, 6 insertions(+), 984 deletions(-)\n delete mode 100644 doc/guides/linux_gsg/quick_start.rst\n delete mode 100755 usertools/dpdk-setup.sh",
    "diff": "diff --git a/doc/guides/bbdevs/acc100.rst b/doc/guides/bbdevs/acc100.rst\nindex 9c37bc3be1..129216b65e 100644\n--- a/doc/guides/bbdevs/acc100.rst\n+++ b/doc/guides/bbdevs/acc100.rst\n@@ -96,7 +96,7 @@ Bind PF UIO driver(s)\n Install the DPDK igb_uio driver, bind it with the PF PCI device ID and use\n ``lspci`` to confirm the PF device is under use by ``igb_uio`` DPDK UIO driver.\n \n-The igb_uio driver may be bound to the PF PCI device using one of three methods:\n+The igb_uio driver may be bound to the PF PCI device using one of two methods:\n \n \n 1. PCI functions (physical or virtual, depending on the use case) can be bound to\n@@ -120,19 +120,6 @@ the UIO driver by repeating this command for every function.\n where the PCI device ID (example: 0000:06:00.0) is obtained using lspci -vd8086:0d5c\n \n \n-3. A third way to bind is to use ``dpdk-setup.sh`` tool\n-\n-.. code-block:: console\n-\n-  cd <dpdk-top-level-directory>\n-  ./usertools/dpdk-setup.sh\n-\n-  select 'Bind Ethernet/Crypto/Baseband device to IGB UIO module'\n-  enter PCI device ID\n-  select 'Display current Ethernet/Crypto/Baseband device settings' to confirm binding\n-\n-In a similar way the ACC100 5G/4G FEC PF may be bound with vfio-pci as any PCIe device.\n-\n Enable Virtual Functions\n ~~~~~~~~~~~~~~~~~~~~~~~~\n \ndiff --git a/doc/guides/bbdevs/fpga_5gnr_fec.rst b/doc/guides/bbdevs/fpga_5gnr_fec.rst\nindex 161f5e2ae4..814dbf1720 100644\n--- a/doc/guides/bbdevs/fpga_5gnr_fec.rst\n+++ b/doc/guides/bbdevs/fpga_5gnr_fec.rst\n@@ -82,7 +82,7 @@ Bind PF UIO driver(s)\n Install the DPDK igb_uio driver, bind it with the PF PCI device ID and use\n ``lspci`` to confirm the PF device is under use by ``igb_uio`` DPDK UIO driver.\n \n-The igb_uio driver may be bound to the PF PCI device using one of three methods:\n+The igb_uio driver may be bound to the PF PCI device using one of two methods:\n \n \n 1. PCI functions (physical or virtual, depending on the use case) can be bound to\n@@ -105,24 +105,6 @@ the UIO driver by repeating this command for every function.\n where the PCI device ID (example: 0000:06:00.0) is obtained using lspci -vd8086:0d8f\n \n \n-3. A third way to bind is to use ``dpdk-setup.sh`` tool\n-\n-.. code-block:: console\n-\n-  cd <dpdk-top-level-directory>\n-  ./usertools/dpdk-setup.sh\n-\n-  select 'Bind Ethernet/Crypto/Baseband device to IGB UIO module'\n-  or\n-  select 'Bind Ethernet/Crypto/Baseband device to VFIO module' depending on driver required\n-  enter PCI device ID\n-  select 'Display current Ethernet/Crypto/Baseband device settings' to confirm binding\n-\n-\n-In the same way the FPGA 5GNR FEC PF can be bound with vfio, but vfio driver does not\n-support SR-IOV configuration right out of the box, so it will need to be patched.\n-\n-\n Enable Virtual Functions\n ~~~~~~~~~~~~~~~~~~~~~~~~\n \ndiff --git a/doc/guides/bbdevs/fpga_lte_fec.rst b/doc/guides/bbdevs/fpga_lte_fec.rst\nindex e268e5b9dc..4d9ac86e9f 100644\n--- a/doc/guides/bbdevs/fpga_lte_fec.rst\n+++ b/doc/guides/bbdevs/fpga_lte_fec.rst\n@@ -81,7 +81,7 @@ Bind PF UIO driver(s)\n Install the DPDK igb_uio driver, bind it with the PF PCI device ID and use\n ``lspci`` to confirm the PF device is under use by ``igb_uio`` DPDK UIO driver.\n \n-The igb_uio driver may be bound to the PF PCI device using one of three methods:\n+The igb_uio driver may be bound to the PF PCI device using one of two methods:\n \n \n 1. PCI functions (physical or virtual, depending on the use case) can be bound to\n@@ -104,24 +104,6 @@ the UIO driver by repeating this command for every function.\n where the PCI device ID (example: 0000:06:00.0) is obtained using lspci -vd1172:\n \n \n-3. A third way to bind is to use ``dpdk-setup.sh`` tool\n-\n-.. code-block:: console\n-\n-  cd <dpdk-top-level-directory>\n-  ./usertools/dpdk-setup.sh\n-\n-  select 'Bind Ethernet/Crypto/Baseband device to IGB UIO module'\n-  or\n-  select 'Bind Ethernet/Crypto/Baseband device to VFIO module' depending on driver required\n-  enter PCI device ID\n-  select 'Display current Ethernet/Crypto/Baseband device settings' to confirm binding\n-\n-\n-In the same way the FPGA LTE FEC PF can be bound with vfio, but vfio driver does not\n-support SR-IOV configuration right out of the box, so it will need to be patched.\n-\n-\n Enable Virtual Functions\n ~~~~~~~~~~~~~~~~~~~~~~~~\n \ndiff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst\nindex ee8c1697b4..2aec432d75 100644\n--- a/doc/guides/faq/faq.rst\n+++ b/doc/guides/faq/faq.rst\n@@ -22,8 +22,7 @@ When you stop and restart the test application, it looks to see if the pages are\n If you look in the directory, you will see ``n`` number of 2M pages files. If you specified 1024, you will see 1024 page files.\n These are then placed in memory segments to get contiguous memory.\n \n-If you need to change the number of pages, it is easier to first remove the pages. The usertools/dpdk-setup.sh script provides an option to do this.\n-See the \"Quick Start Setup Script\" section in the :ref:`DPDK Getting Started Guide <linux_gsg>` for more information.\n+If you need to change the number of pages, it is easier to first remove the pages.\n \n \n If I execute \"l2fwd -l 0-3 -m 64 -n 3 -- -p 3\", I get the following output, indicating that there are no socket 0 hugepages to allocate the mbuf and ring structures to?\ndiff --git a/doc/guides/linux_gsg/build_dpdk.rst b/doc/guides/linux_gsg/build_dpdk.rst\nindex 8ce0f23097..f78eef2517 100644\n--- a/doc/guides/linux_gsg/build_dpdk.rst\n+++ b/doc/guides/linux_gsg/build_dpdk.rst\n@@ -6,11 +6,6 @@\n Compiling the DPDK Target from Source\n =====================================\n \n-.. note::\n-\n-    Parts of this process can also be done using the setup script described in\n-    the :ref:`linux_setup_script` section of this document.\n-\n Uncompress DPDK and Browse Sources\n ----------------------------------\n \ndiff --git a/doc/guides/linux_gsg/build_sample_apps.rst b/doc/guides/linux_gsg/build_sample_apps.rst\nindex 994db4b6a0..78652549a7 100644\n--- a/doc/guides/linux_gsg/build_sample_apps.rst\n+++ b/doc/guides/linux_gsg/build_sample_apps.rst\n@@ -7,11 +7,6 @@ Running Sample Applications\n The chapter describes how to compile and run applications in a DPDK environment.\n It also provides a pointer to where sample applications are stored.\n \n-.. note::\n-\n-    Parts of this process can also be done using the setup script described the\n-    :ref:`linux_setup_script` section of this document.\n-\n Compiling a Sample Application\n ------------------------------\n \ndiff --git a/doc/guides/linux_gsg/index.rst b/doc/guides/linux_gsg/index.rst\nindex 0f9f6242c1..16a9a67260 100644\n--- a/doc/guides/linux_gsg/index.rst\n+++ b/doc/guides/linux_gsg/index.rst\n@@ -18,5 +18,4 @@ Getting Started Guide for Linux\n     build_sample_apps\n     linux_eal_parameters\n     enable_func\n-    quick_start\n     nic_perf_intel_platform\ndiff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst\nindex 2d750b4c33..65373f1448 100644\n--- a/doc/guides/linux_gsg/linux_drivers.rst\n+++ b/doc/guides/linux_gsg/linux_drivers.rst\n@@ -107,7 +107,6 @@ Also, to use VFIO, both kernel and BIOS must support and be configured to use IO\n     ``vfio-pci`` module doesn't support the creation of virtual functions before Linux version 5.7.\n \n For proper operation of VFIO when running DPDK applications as a non-privileged user, correct permissions should also be set up.\n-This can be done by using the DPDK setup script (called dpdk-setup.sh and located in the usertools directory).\n \n .. note::\n \ndiff --git a/doc/guides/linux_gsg/quick_start.rst b/doc/guides/linux_gsg/quick_start.rst\ndeleted file mode 100644\nindex 181ec00ad4..0000000000\n--- a/doc/guides/linux_gsg/quick_start.rst\n+++ /dev/null\n@@ -1,304 +0,0 @@\n-..  SPDX-License-Identifier: BSD-3-Clause\n-    Copyright(c) 2010-2014 Intel Corporation.\n-\n-.. _linux_setup_script:\n-\n-Quick Start Setup Script\n-========================\n-\n-The dpdk-setup.sh script, found in the usertools subdirectory, allows the user to perform the following tasks:\n-\n-*   Build the DPDK libraries\n-\n-*   Insert and remove the DPDK IGB_UIO kernel module\n-\n-*   Insert and remove VFIO kernel modules\n-\n-*   Insert and remove the DPDK KNI kernel module\n-\n-*   Create and delete hugepages for NUMA and non-NUMA cases\n-\n-*   View network port status and reserve ports for DPDK application use\n-\n-*   Set up permissions for using VFIO as a non-privileged user\n-\n-*   Run the test and testpmd applications\n-\n-*   Look at hugepages in the meminfo\n-\n-*   List hugepages in ``/mnt/huge``\n-\n-*   Remove built DPDK libraries\n-\n-Once these steps have been completed for one of the EAL targets,\n-the user may compile their own application that links in the EAL libraries to create the DPDK image.\n-\n-Script Organization\n--------------------\n-\n-The dpdk-setup.sh script is logically organized into a series of steps that a user performs in sequence.\n-Each step provides a number of options that guide the user to completing the desired task.\n-The following is a brief synopsis of each step.\n-\n-**Step 1: Build DPDK Libraries**\n-\n-Initially, the user must select a DPDK target to choose the correct target type and compiler options to use when building the libraries.\n-\n-The user must have all libraries, modules, updates and compilers installed in the system prior to this,\n-as described in the earlier chapters in this Getting Started Guide.\n-\n-**Step 2: Setup Environment**\n-\n-The user configures the Linux* environment to support the running of DPDK applications.\n-Hugepages can be set up for NUMA or non-NUMA systems. Any existing hugepages will be removed.\n-The DPDK kernel module that is needed can also be inserted in this step,\n-and network ports may be bound to this module for DPDK application use.\n-\n-**Step 3: Run an Application**\n-\n-The user may run the test application once the other steps have been performed.\n-The test application allows the user to run a series of functional tests for the DPDK.\n-The testpmd application, which supports the receiving and sending of packets, can also be run.\n-\n-**Step 4: Examining the System**\n-\n-This step provides some tools for examining the status of hugepage mappings.\n-\n-**Step 5: System Cleanup**\n-\n-The final step has options for restoring the system to its original state.\n-\n-Use Cases\n----------\n-\n-The following are some example of how to use the dpdk-setup.sh script.\n-The script should be run using the source command.\n-Some options in the script prompt the user for further data before proceeding.\n-\n-.. warning::\n-\n-    The dpdk-setup.sh script should be run with root privileges.\n-\n-.. code-block:: console\n-\n-    source usertools/dpdk-setup.sh\n-\n-    ------------------------------------------------------------------------\n-\n-    RTE_SDK exported as /home/user/rte\n-\n-    ------------------------------------------------------------------------\n-\n-    Step 1: Select the DPDK environment to build\n-\n-    ------------------------------------------------------------------------\n-\n-    [1] i686-native-linux-gcc\n-\n-    [2] i686-native-linux-icc\n-\n-    [3] ppc_64-power8-linux-gcc\n-\n-    [4] x86_64-native-freebsd-clang\n-\n-    [5] x86_64-native-freebsd-gcc\n-\n-    [6] x86_64-native-linux-clang\n-\n-    [7] x86_64-native-linux-gcc\n-\n-    [8] x86_64-native-linux-icc\n-\n-    ------------------------------------------------------------------------\n-\n-    Step 2: Setup linux environment\n-\n-    ------------------------------------------------------------------------\n-\n-    [11] Insert IGB UIO module\n-\n-    [12] Insert VFIO module\n-\n-    [13] Insert KNI module\n-\n-    [14] Setup hugepage mappings for non-NUMA systems\n-\n-    [15] Setup hugepage mappings for NUMA systems\n-\n-    [16] Display current Ethernet device settings\n-\n-    [17] Bind Ethernet device to IGB UIO module\n-\n-    [18] Bind Ethernet device to VFIO module\n-\n-    [19] Setup VFIO permissions\n-\n-    ------------------------------------------------------------------------\n-\n-    Step 3: Run test application for linux environment\n-\n-    ------------------------------------------------------------------------\n-\n-    [20] Run test application ($RTE_TARGET/app/test)\n-\n-    [21] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)\n-\n-    ------------------------------------------------------------------------\n-\n-    Step 4: Other tools\n-\n-    ------------------------------------------------------------------------\n-\n-    [22] List hugepage info from /proc/meminfo\n-\n-    ------------------------------------------------------------------------\n-\n-    Step 5: Uninstall and system cleanup\n-\n-    ------------------------------------------------------------------------\n-\n-    [23] Uninstall all targets\n-\n-    [24] Unbind NICs from IGB UIO driver\n-\n-    [25] Remove IGB UIO module\n-\n-    [26] Remove VFIO module\n-\n-    [27] Remove KNI module\n-\n-    [28] Remove hugepage mappings\n-\n-    [29] Exit Script\n-\n-Option:\n-\n-The following selection demonstrates the creation of the ``x86_64-native-linux-gcc`` DPDK library.\n-\n-.. code-block:: console\n-\n-    Option: 9\n-\n-    ================== Installing x86_64-native-linux-gcc\n-\n-    Configuration done\n-    == Build lib\n-    ...\n-    Build complete\n-    RTE_TARGET exported as x86_64-native-linux-gcc\n-\n-The following selection demonstrates the starting of the DPDK UIO driver.\n-\n-.. code-block:: console\n-\n-    Option: 25\n-\n-    Unloading any existing DPDK UIO module\n-    Loading DPDK UIO module\n-\n-The following selection demonstrates the creation of hugepages in a NUMA system.\n-1024 2 MByte pages are assigned to each node.\n-The result is that the application should use -m 4096 for starting the application to access both memory areas\n-(this is done automatically if the -m option is not provided).\n-\n-.. note::\n-\n-    If prompts are displayed to remove temporary files, type 'y'.\n-\n-.. code-block:: console\n-\n-    Option: 15\n-\n-    Removing currently reserved hugepages\n-    mounting /mnt/huge and removing directory\n-    Input the number of 2MB pages for each node\n-    Example: to have 128MB of hugepages available per node,\n-    enter '64' to reserve 64 * 2MB pages on each node\n-    Number of pages for node0: 1024\n-    Number of pages for node1: 1024\n-    Reserving hugepages\n-    Creating /mnt/huge and mounting as hugetlbfs\n-\n-The following selection demonstrates the launch of the test application to run on a single core.\n-\n-.. code-block:: console\n-\n-    Option: 20\n-\n-    Enter hex bitmask of cores to execute test app on\n-    Example: to execute app on cores 0 to 7, enter 0xff\n-    bitmask: 0x01\n-    Launching app\n-    EAL: coremask set to 1\n-    EAL: Detected lcore 0 on socket 0\n-    ...\n-    EAL: Main core 0 is ready (tid=1b2ad720)\n-    RTE>>\n-\n-Applications\n-------------\n-\n-Once the user has run the dpdk-setup.sh script, built one of the EAL targets and set up hugepages (if using one of the Linux EAL targets),\n-the user can then move on to building and running their application or one of the examples provided.\n-\n-The examples in the /examples directory provide a good starting point to gain an understanding of the operation of the DPDK.\n-The following command sequence shows how the helloworld sample application is built and run.\n-As recommended in Section 4.2.1 , \"Logical Core Use by Applications\",\n-the logical core layout of the platform should be determined when selecting a core mask to use for an application.\n-\n-.. code-block:: console\n-\n-    cd helloworld/\n-    make\n-      CC main.o\n-      LD helloworld\n-      INSTALL-APP helloworld\n-      INSTALL-MAP helloworld.map\n-\n-    sudo ./build/app/helloworld -l 0-3 -n 3\n-    [sudo] password for rte:\n-\n-    EAL: coremask set to f\n-    EAL: Detected lcore 0 as core 0 on socket 0\n-    EAL: Detected lcore 1 as core 0 on socket 1\n-    EAL: Detected lcore 2 as core 1 on socket 0\n-    EAL: Detected lcore 3 as core 1 on socket 1\n-    EAL: Setting up hugepage memory...\n-    EAL: Ask a virtual area of 0x200000 bytes\n-    EAL: Virtual area found at 0x7f0add800000 (size = 0x200000)\n-    EAL: Ask a virtual area of 0x3d400000 bytes\n-    EAL: Virtual area found at 0x7f0aa0200000 (size = 0x3d400000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9fc00000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9f600000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9f000000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x800000 bytes\n-    EAL: Virtual area found at 0x7f0a9e600000 (size = 0x800000)\n-    EAL: Ask a virtual area of 0x800000 bytes\n-    EAL: Virtual area found at 0x7f0a9dc00000 (size = 0x800000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9d600000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9d000000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x400000 bytes\n-    EAL: Virtual area found at 0x7f0a9ca00000 (size = 0x400000)\n-    EAL: Ask a virtual area of 0x200000 bytes\n-    EAL: Virtual area found at 0x7f0a9c600000 (size = 0x200000)\n-    EAL: Ask a virtual area of 0x200000 bytes\n-    EAL: Virtual area found at 0x7f0a9c200000 (size = 0x200000)\n-    EAL: Ask a virtual area of 0x3fc00000 bytes\n-    EAL: Virtual area found at 0x7f0a5c400000 (size = 0x3fc00000)\n-    EAL: Ask a virtual area of 0x200000 bytes\n-    EAL: Virtual area found at 0x7f0a5c000000 (size = 0x200000)\n-    EAL: Requesting 1024 pages of size 2MB from socket 0\n-    EAL: Requesting 1024 pages of size 2MB from socket 1\n-    EAL: Main core 0 is ready (tid=de25b700)\n-    EAL: Core 1 is ready (tid=5b7fe700)\n-    EAL: Core 3 is ready (tid=5a7fc700)\n-    EAL: Core 2 is ready (tid=5affd700)\n-    hello from core 1\n-    hello from core 2\n-    hello from core 3\n-    hello from core 0\ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex 1271a7cf28..f418285d28 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -100,8 +100,3 @@ Deprecation Notices\n * cmdline: ``cmdline`` structure will be made opaque to hide platform-specific\n   content. On Linux and FreeBSD, supported prior to DPDK 20.11,\n   original structure will be kept until DPDK 21.11.\n-\n-* dpdk-setup.sh: This old script relies on deprecated stuff, and especially\n-  ``make``. Given environments are too much variables for such a simple script,\n-  it will be removed in DPDK 20.11.\n-  Some useful parts may be converted into specific scripts.\ndiff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst\nindex 24a078c995..7405a9864f 100644\n--- a/doc/guides/rel_notes/release_20_11.rst\n+++ b/doc/guides/rel_notes/release_20_11.rst\n@@ -457,6 +457,8 @@ Removed Items\n \n * Removed TEP termination sample application.\n \n+* Removed the deprecated ``dpdk-setup.sh`` script.\n+\n \n API Changes\n -----------\ndiff --git a/usertools/dpdk-setup.sh b/usertools/dpdk-setup.sh\ndeleted file mode 100755\nindex 411bf2e07f..0000000000\n--- a/usertools/dpdk-setup.sh\n+++ /dev/null\n@@ -1,609 +0,0 @@\n-#! /bin/bash\n-# SPDX-License-Identifier: BSD-3-Clause\n-# Copyright(c) 2010-2014 Intel Corporation\n-\n-#\n-# Run with \"source /path/to/dpdk-setup.sh\"\n-#\n-\n-#\n-# Change to DPDK directory ( <this-script's-dir>/.. ), and export it as RTE_SDK\n-#\n-cd $(dirname ${BASH_SOURCE[0]})/..\n-export RTE_SDK=$PWD\n-echo \"------------------------------------------------------------------------------\"\n-echo \" RTE_SDK exported as $RTE_SDK\"\n-echo \"------------------------------------------------------------------------------\"\n-\n-HUGEPGSZ=`cat /proc/meminfo  | grep Hugepagesize | cut -d : -f 2 | tr -d ' '`\n-\n-#\n-# Application EAL parameters for setting memory options (amount/channels/ranks).\n-#\n-EAL_PARAMS='-n 4'\n-\n-#\n-# Sets QUIT variable so script will finish.\n-#\n-quit()\n-{\n-\tQUIT=$1\n-}\n-\n-# Shortcut for quit.\n-q()\n-{\n-\tquit\n-}\n-\n-#\n-# Sets up environmental variables for ICC.\n-#\n-setup_icc()\n-{\n-\tDEFAULT_PATH=/opt/intel/bin/iccvars.sh\n-\tparam=$1\n-\tshpath=`which iccvars.sh 2> /dev/null`\n-\tif [ $? -eq 0 ] ; then\n-\t\techo \"Loading iccvars.sh from $shpath for $param\"\n-\t\tsource $shpath $param\n-\telif [ -f $DEFAULT_PATH ] ; then\n-\t\techo \"Loading iccvars.sh from $DEFAULT_PATH for $param\"\n-\t\tsource $DEFAULT_PATH $param\n-\telse\n-\t\techo \"## ERROR: cannot find 'iccvars.sh' script to set up ICC.\"\n-\t\techo \"##     To fix, please add the directory that contains\"\n-\t\techo \"##     iccvars.sh  to your 'PATH' environment variable.\"\n-\t\tquit\n-\tfi\n-}\n-\n-#\n-# Sets RTE_TARGET and does a \"make install\".\n-#\n-setup_target()\n-{\n-\toption=$1\n-\texport RTE_TARGET=${TARGETS[option]}\n-\n-\tcompiler=${RTE_TARGET##*-}\n-\tif [ \"$compiler\" == \"icc\" ] ; then\n-\t\tplatform=${RTE_TARGET%%-*}\n-\t\tif [ \"$platform\" == \"x86_64\" ] ; then\n-\t\t\tsetup_icc intel64\n-\t\telse\n-\t\t\tsetup_icc ia32\n-\t\tfi\n-\tfi\n-\tif [ \"$QUIT\" == \"0\" ] ; then\n-\t\tmake install T=${RTE_TARGET}\n-\tfi\n-\techo \"------------------------------------------------------------------------------\"\n-\techo \" RTE_TARGET exported as $RTE_TARGET\"\n-\techo \"------------------------------------------------------------------------------\"\n-}\n-\n-#\n-# Creates hugepage filesystem.\n-#\n-create_mnt_huge()\n-{\n-\techo \"Creating /mnt/huge and mounting as hugetlbfs\"\n-\tsudo mkdir -p /mnt/huge\n-\n-\tgrep -s '/mnt/huge' /proc/mounts > /dev/null\n-\tif [ $? -ne 0 ] ; then\n-\t\tsudo mount -t hugetlbfs nodev /mnt/huge\n-\tfi\n-}\n-\n-#\n-# Removes hugepage filesystem.\n-#\n-remove_mnt_huge()\n-{\n-\techo \"Unmounting /mnt/huge and removing directory\"\n-\tgrep -s '/mnt/huge' /proc/mounts > /dev/null\n-\tif [ $? -eq 0 ] ; then\n-\t\tsudo umount /mnt/huge\n-\tfi\n-\n-\tif [ -d /mnt/huge ] ; then\n-\t\tsudo rm -R /mnt/huge\n-\tfi\n-}\n-\n-#\n-# Unloads igb_uio.ko.\n-#\n-remove_igb_uio_module()\n-{\n-\techo \"Unloading any existing DPDK UIO module\"\n-\t/sbin/lsmod | grep -s igb_uio > /dev/null\n-\tif [ $? -eq 0 ] ; then\n-\t\tsudo /sbin/rmmod igb_uio\n-\tfi\n-}\n-\n-#\n-# Loads new igb_uio.ko (and uio module if needed).\n-#\n-load_igb_uio_module()\n-{\n-\tif [ ! -f $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko ];then\n-\t\techo \"## ERROR: Target does not have the DPDK UIO Kernel Module.\"\n-\t\techo \"       To fix, please try to rebuild target.\"\n-\t\treturn\n-\tfi\n-\n-\tremove_igb_uio_module\n-\n-\t/sbin/lsmod | grep -s uio > /dev/null\n-\tif [ $? -ne 0 ] ; then\n-\t\tmodinfo uio > /dev/null\n-\t\tif [ $? -eq 0 ]; then\n-\t\t\techo \"Loading uio module\"\n-\t\t\tsudo /sbin/modprobe uio\n-\t\tfi\n-\tfi\n-\n-\t# UIO may be compiled into kernel, so it may not be an error if it can't\n-\t# be loaded.\n-\n-\techo \"Loading DPDK UIO module\"\n-\tsudo /sbin/insmod $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko\n-\tif [ $? -ne 0 ] ; then\n-\t\techo \"## ERROR: Could not load kmod/igb_uio.ko.\"\n-\t\tquit\n-\tfi\n-}\n-\n-#\n-# Unloads VFIO modules.\n-#\n-remove_vfio_module()\n-{\n-\techo \"Unloading any existing VFIO module\"\n-\t/sbin/lsmod | grep -s vfio > /dev/null\n-\tif [ $? -eq 0 ] ; then\n-\t\tsudo /sbin/rmmod vfio-pci\n-\t\tsudo /sbin/rmmod vfio_iommu_type1\n-\t\tsudo /sbin/rmmod vfio\n-\tfi\n-}\n-\n-#\n-# Loads new vfio-pci (and vfio module if needed).\n-#\n-load_vfio_module()\n-{\n-\tremove_vfio_module\n-\n-\tVFIO_PATH=\"kernel/drivers/vfio/pci/vfio-pci.ko\"\n-\n-\techo \"Loading VFIO module\"\n-\t/sbin/lsmod | grep -s vfio_pci > /dev/null\n-\tif [ $? -ne 0 ] ; then\n-\t\tif [ -f /lib/modules/$(uname -r)/$VFIO_PATH ] ; then\n-\t\t\tsudo /sbin/modprobe vfio-pci\n-\t\tfi\n-\tfi\n-\n-\t# make sure regular users can read /dev/vfio\n-\techo \"chmod /dev/vfio\"\n-\tsudo chmod a+x /dev/vfio\n-\tif [ $? -ne 0 ] ; then\n-\t\techo \"FAIL\"\n-\t\tquit\n-\tfi\n-\techo \"OK\"\n-\n-\t# check if /dev/vfio/vfio exists - that way we\n-\t# know we either loaded the module, or it was\n-\t# compiled into the kernel\n-\tif [ ! -e /dev/vfio/vfio ] ; then\n-\t\techo \"## ERROR: VFIO not found!\"\n-\tfi\n-}\n-\n-#\n-# Unloads the rte_kni.ko module.\n-#\n-remove_kni_module()\n-{\n-\techo \"Unloading any existing DPDK KNI module\"\n-\t/sbin/lsmod | grep -s rte_kni > /dev/null\n-\tif [ $? -eq 0 ] ; then\n-\t\tsudo /sbin/rmmod rte_kni\n-\tfi\n-}\n-\n-#\n-# Loads the rte_kni.ko module.\n-#\n-load_kni_module()\n-{\n-    # Check that the KNI module is already built.\n-\tif [ ! -f $RTE_SDK/$RTE_TARGET/kmod/rte_kni.ko ];then\n-\t\techo \"## ERROR: Target does not have the DPDK KNI Module.\"\n-\t\techo \"       To fix, please try to rebuild target.\"\n-\t\treturn\n-\tfi\n-\n-    # Unload existing version if present.\n-\tremove_kni_module\n-\n-    # Now try load the KNI module.\n-\techo \"Loading DPDK KNI module\"\n-\tsudo /sbin/insmod $RTE_SDK/$RTE_TARGET/kmod/rte_kni.ko\n-\tif [ $? -ne 0 ] ; then\n-\t\techo \"## ERROR: Could not load kmod/rte_kni.ko.\"\n-\t\tquit\n-\tfi\n-}\n-\n-#\n-# Sets appropriate permissions on /dev/vfio/* files\n-#\n-set_vfio_permissions()\n-{\n-\t# make sure regular users can read /dev/vfio\n-\techo \"chmod /dev/vfio\"\n-\tsudo chmod a+x /dev/vfio\n-\tif [ $? -ne 0 ] ; then\n-\t\techo \"FAIL\"\n-\t\tquit\n-\tfi\n-\techo \"OK\"\n-\n-\t# make sure regular user can access everything inside /dev/vfio\n-\techo \"chmod /dev/vfio/*\"\n-\tsudo chmod 0666 /dev/vfio/*\n-\tif [ $? -ne 0 ] ; then\n-\t\techo \"FAIL\"\n-\t\tquit\n-\tfi\n-\techo \"OK\"\n-\n-\t# since permissions are only to be set when running as\n-\t# regular user, we only check ulimit here\n-\t#\n-\t# warn if regular user is only allowed\n-\t# to memlock <64M of memory\n-\tMEMLOCK_AMNT=`ulimit -l`\n-\n-\tif [ \"$MEMLOCK_AMNT\" != \"unlimited\" ] ; then\n-\t\tMEMLOCK_MB=`expr $MEMLOCK_AMNT / 1024`\n-\t\techo \"\"\n-\t\techo \"Current user memlock limit: ${MEMLOCK_MB} MB\"\n-\t\techo \"\"\n-\t\techo \"This is the maximum amount of memory you will be\"\n-\t\techo \"able to use with DPDK and VFIO if run as current user.\"\n-\t\techo -n \"To change this, please adjust limits.conf memlock \"\n-\t\techo \"limit for current user.\"\n-\n-\t\tif [ $MEMLOCK_AMNT -lt 65536 ] ; then\n-\t\t\techo \"\"\n-\t\t\techo \"## WARNING: memlock limit is less than 64MB\"\n-\t\t\techo -n \"## DPDK with VFIO may not be able to initialize \"\n-\t\t\techo \"if run as current user.\"\n-\t\tfi\n-\tfi\n-}\n-\n-#\n-# Removes all reserved hugepages.\n-#\n-clear_huge_pages()\n-{\n-\techo > .echo_tmp\n-\tfor d in /sys/devices/system/node/node? ; do\n-\t\techo \"echo 0 > $d/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages\" >> .echo_tmp\n-\tdone\n-\techo \"Removing currently reserved hugepages\"\n-\tsudo sh .echo_tmp\n-\trm -f .echo_tmp\n-\n-\tremove_mnt_huge\n-}\n-\n-#\n-# Creates hugepages.\n-#\n-set_non_numa_pages()\n-{\n-\tclear_huge_pages\n-\n-\techo \"\"\n-\techo \"  Input the number of ${HUGEPGSZ} hugepages\"\n-\techo \"  Example: to have 128MB of hugepages available in a 2MB huge page system,\"\n-\techo \"  enter '64' to reserve 64 * 2MB pages\"\n-\techo -n \"Number of pages: \"\n-\tread Pages\n-\n-\techo \"echo $Pages > /sys/kernel/mm/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages\" > .echo_tmp\n-\n-\techo \"Reserving hugepages\"\n-\tsudo sh .echo_tmp\n-\trm -f .echo_tmp\n-\n-\tcreate_mnt_huge\n-}\n-\n-#\n-# Creates hugepages on specific NUMA nodes.\n-#\n-set_numa_pages()\n-{\n-\tclear_huge_pages\n-\n-\techo \"\"\n-\techo \"  Input the number of ${HUGEPGSZ} hugepages for each node\"\n-\techo \"  Example: to have 128MB of hugepages available per node in a 2MB huge page system,\"\n-\techo \"  enter '64' to reserve 64 * 2MB pages on each node\"\n-\n-\techo > .echo_tmp\n-\tfor d in /sys/devices/system/node/node? ; do\n-\t\tnode=$(basename $d)\n-\t\techo -n \"Number of pages for $node: \"\n-\t\tread Pages\n-\t\techo \"echo $Pages > $d/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages\" >> .echo_tmp\n-\tdone\n-\techo \"Reserving hugepages\"\n-\tsudo sh .echo_tmp\n-\trm -f .echo_tmp\n-\n-\tcreate_mnt_huge\n-}\n-\n-#\n-# Run unit test application.\n-#\n-run_test_app()\n-{\n-\techo \"\"\n-\techo \"  Enter hex bitmask of cores to execute test app on\"\n-\techo \"  Example: to execute app on cores 0 to 7, enter 0xff\"\n-\techo -n \"bitmask: \"\n-\tread Bitmask\n-\techo \"Launching app\"\n-\tsudo ${RTE_TARGET}/app/test -c $Bitmask $EAL_PARAMS\n-}\n-\n-#\n-# Run unit testpmd application.\n-#\n-run_testpmd_app()\n-{\n-\techo \"\"\n-\techo \"  Enter hex bitmask of cores to execute testpmd app on\"\n-\techo \"  Example: to execute app on cores 0 to 7, enter 0xff\"\n-\techo -n \"bitmask: \"\n-\tread Bitmask\n-\techo \"Launching app\"\n-\tsudo ${RTE_TARGET}/app/testpmd -c $Bitmask $EAL_PARAMS -- -i\n-}\n-\n-#\n-# Print hugepage information.\n-#\n-grep_meminfo()\n-{\n-\tgrep -i huge /proc/meminfo\n-}\n-\n-#\n-# Calls dpdk-devbind.py --status to show the devices and what they\n-# are all bound to, in terms of drivers.\n-#\n-show_devices()\n-{\n-\tif [ -d /sys/module/vfio_pci -o -d /sys/module/igb_uio ]; then\n-\t\t${RTE_SDK}/usertools/dpdk-devbind.py --status\n-\telse\n-\t\techo \"# Please load the 'igb_uio' or 'vfio-pci' kernel module before \"\n-\t\techo \"# querying or adjusting device bindings\"\n-\tfi\n-}\n-\n-#\n-# Uses dpdk-devbind.py to move devices to work with vfio-pci\n-#\n-bind_devices_to_vfio()\n-{\n-\tif [ -d /sys/module/vfio_pci ]; then\n-\t\t${RTE_SDK}/usertools/dpdk-devbind.py --status\n-\t\techo \"\"\n-\t\techo -n \"Enter PCI address of device to bind to VFIO driver: \"\n-\t\tread PCI_PATH\n-\t\tsudo ${RTE_SDK}/usertools/dpdk-devbind.py -b vfio-pci $PCI_PATH &&\n-\t\t\techo \"OK\"\n-\telse\n-\t\techo \"# Please load the 'vfio-pci' kernel module before querying or \"\n-\t\techo \"# adjusting device bindings\"\n-\tfi\n-}\n-\n-#\n-# Uses dpdk-devbind.py to move devices to work with igb_uio\n-#\n-bind_devices_to_igb_uio()\n-{\n-\tif [ -d /sys/module/igb_uio ]; then\n-\t\t${RTE_SDK}/usertools/dpdk-devbind.py --status\n-\t\techo \"\"\n-\t\techo -n \"Enter PCI address of device to bind to IGB UIO driver: \"\n-\t\tread PCI_PATH\n-\t\tsudo ${RTE_SDK}/usertools/dpdk-devbind.py -b igb_uio $PCI_PATH && echo \"OK\"\n-\telse\n-\t\techo \"# Please load the 'igb_uio' kernel module before querying or \"\n-\t\techo \"# adjusting device bindings\"\n-\tfi\n-}\n-\n-#\n-# Uses dpdk-devbind.py to move devices to work with kernel drivers again\n-#\n-unbind_devices()\n-{\n-\t${RTE_SDK}/usertools/dpdk-devbind.py --status\n-\techo \"\"\n-\techo -n \"Enter PCI address of device to unbind: \"\n-\tread PCI_PATH\n-\techo \"\"\n-\techo -n \"Enter name of kernel driver to bind the device to: \"\n-\tread DRV\n-\tsudo ${RTE_SDK}/usertools/dpdk-devbind.py -b $DRV $PCI_PATH && echo \"OK\"\n-}\n-\n-#\n-# Options for building a target. Note that this step MUST be first as it sets\n-# up TARGETS[] starting from 1, and this is accessed in setup_target using the\n-# user entered option.\n-#\n-step1_func()\n-{\n-\tTITLE=\"Select the DPDK environment to build\"\n-\tCONFIG_NUM=1\n-\tfor cfg in config/defconfig_* ; do\n-\t\tcfg=${cfg/config\\/defconfig_/}\n-\t\tTEXT[$CONFIG_NUM]=\"$cfg\"\n-\t\tTARGETS[$CONFIG_NUM]=$cfg\n-\t\tFUNC[$CONFIG_NUM]=\"setup_target\"\n-\t\tlet \"CONFIG_NUM+=1\"\n-\tdone\n-}\n-\n-#\n-# Options for setting up environment.\n-#\n-step2_func()\n-{\n-\tTITLE=\"Setup linux environment\"\n-\n-\tTEXT[1]=\"Insert IGB UIO module\"\n-\tFUNC[1]=\"load_igb_uio_module\"\n-\n-\tTEXT[2]=\"Insert VFIO module\"\n-\tFUNC[2]=\"load_vfio_module\"\n-\n-\tTEXT[3]=\"Insert KNI module\"\n-\tFUNC[3]=\"load_kni_module\"\n-\n-\tTEXT[4]=\"Setup hugepage mappings for non-NUMA systems\"\n-\tFUNC[4]=\"set_non_numa_pages\"\n-\n-\tTEXT[5]=\"Setup hugepage mappings for NUMA systems\"\n-\tFUNC[5]=\"set_numa_pages\"\n-\n-\tTEXT[6]=\"Display current Ethernet/Baseband/Crypto device settings\"\n-\tFUNC[6]=\"show_devices\"\n-\n-\tTEXT[7]=\"Bind Ethernet/Baseband/Crypto device to IGB UIO module\"\n-\tFUNC[7]=\"bind_devices_to_igb_uio\"\n-\n-\tTEXT[8]=\"Bind Ethernet/Baseband/Crypto device to VFIO module\"\n-\tFUNC[8]=\"bind_devices_to_vfio\"\n-\n-\tTEXT[9]=\"Setup VFIO permissions\"\n-\tFUNC[9]=\"set_vfio_permissions\"\n-}\n-\n-#\n-# Options for running applications.\n-#\n-step3_func()\n-{\n-\tTITLE=\"Run test application for linux environment\"\n-\n-\tTEXT[1]=\"Run test application (\\$RTE_TARGET/app/test)\"\n-\tFUNC[1]=\"run_test_app\"\n-\n-\tTEXT[2]=\"Run testpmd application in interactive mode (\\$RTE_TARGET/app/testpmd)\"\n-\tFUNC[2]=\"run_testpmd_app\"\n-}\n-\n-#\n-# Other options\n-#\n-step4_func()\n-{\n-\tTITLE=\"Other tools\"\n-\n-\tTEXT[1]=\"List hugepage info from /proc/meminfo\"\n-\tFUNC[1]=\"grep_meminfo\"\n-\n-}\n-\n-#\n-# Options for cleaning up the system\n-#\n-step5_func()\n-{\n-\tTITLE=\"Uninstall and system cleanup\"\n-\n-\tTEXT[1]=\"Unbind devices from IGB UIO or VFIO driver\"\n-\tFUNC[1]=\"unbind_devices\"\n-\n-\tTEXT[2]=\"Remove IGB UIO module\"\n-\tFUNC[2]=\"remove_igb_uio_module\"\n-\n-\tTEXT[3]=\"Remove VFIO module\"\n-\tFUNC[3]=\"remove_vfio_module\"\n-\n-\tTEXT[4]=\"Remove KNI module\"\n-\tFUNC[4]=\"remove_kni_module\"\n-\n-\tTEXT[5]=\"Remove hugepage mappings\"\n-\tFUNC[5]=\"clear_huge_pages\"\n-}\n-\n-STEPS[1]=\"step1_func\"\n-STEPS[2]=\"step2_func\"\n-STEPS[3]=\"step3_func\"\n-STEPS[4]=\"step4_func\"\n-STEPS[5]=\"step5_func\"\n-\n-QUIT=0\n-\n-while [ \"$QUIT\" == \"0\" ]; do\n-\tOPTION_NUM=1\n-\n-\tfor s in $(seq ${#STEPS[@]}) ; do\n-\t\t${STEPS[s]}\n-\n-\t\techo \"----------------------------------------------------------\"\n-\t\techo \" Step $s: ${TITLE}\"\n-\t\techo \"----------------------------------------------------------\"\n-\n-\t\tfor i in $(seq ${#TEXT[@]}) ; do\n-\t\t\techo \"[$OPTION_NUM] ${TEXT[i]}\"\n-\t\t\tOPTIONS[$OPTION_NUM]=${FUNC[i]}\n-\t\t\tlet \"OPTION_NUM+=1\"\n-\t\tdone\n-\n-\t\t# Clear TEXT and FUNC arrays before next step\n-\t\tunset TEXT\n-\t\tunset FUNC\n-\n-\t\techo \"\"\n-\tdone\n-\n-\techo \"[$OPTION_NUM] Exit Script\"\n-\tOPTIONS[$OPTION_NUM]=\"quit\"\n-\techo \"\"\n-\techo '--------------------------------------------------'\n-\techo 'WARNING: This tool will be removed from DPDK 20.11'\n-\techo '--------------------------------------------------'\n-\techo\n-\techo -n \"Option: \"\n-\tread our_entry\n-\techo \"\"\n-\t${OPTIONS[our_entry]} ${our_entry}\n-\n-\tif [ \"$QUIT\" == \"0\" ] ; then\n-\t\techo\n-\t\techo -n \"Press enter to continue ...\"; read\n-\tfi\n-\n-done\n",
    "prefixes": []
}