get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 108498,
    "url": "http://patches.dpdk.org/api/patches/108498/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220302172217.472279-5-bruce.richardson@intel.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": "<20220302172217.472279-5-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220302172217.472279-5-bruce.richardson@intel.com",
    "date": "2022-03-02T17:22:12",
    "name": "[4/9] doc/linux_gsg: move section on binding drivers up the page",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "dd1e614559e97d9e31e97693a890655628502d7f",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220302172217.472279-5-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 21992,
            "url": "http://patches.dpdk.org/api/series/21992/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=21992",
            "date": "2022-03-02T17:22:08",
            "name": "Improve linux drivers GSG section",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/21992/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/108498/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/108498/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id A33B1A04A4;\n\tWed,  2 Mar 2022 18:24:33 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6BC9442767;\n\tWed,  2 Mar 2022 18:24:16 +0100 (CET)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by mails.dpdk.org (Postfix) with ESMTP id DAD7C42752;\n Wed,  2 Mar 2022 18:24:13 +0100 (CET)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Mar 2022 09:24:13 -0800",
            "from silpixa00399126.ir.intel.com ([10.237.223.34])\n by orsmga008.jf.intel.com with ESMTP; 02 Mar 2022 09:24:12 -0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1646241854; x=1677777854;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=Ot3AlOFBhmNb1WdG56o1o6Nd95gQa/MNINAsrxsJZjw=;\n b=WVQfgV6y5CDqIeBAS2F0WMk+Nxv3CzupnSPDPuLsw4kiNMJb/Sue8EpT\n +hggnIfbgdce+g41jwVtOivPMZsBYToLFXyxOiuCVY8Rb3yrQLKANZH/i\n eEH3qTIPHUkaC8pKqqYKo2UouEhNBeeueupmCvzVAgkJ3BGBG6OqNnBCm\n YV8eIr2naGkVf6o8CZRSQ1geroIdg24VYUuY+NazuMejd5G50zbvHqAEH\n pM0aQA61ixtOfryBWRtRKRzHtaXeRkPgM8Te1JMyXCQnB/cESTvN4hyfl\n Nq9LpIqSUwRTf6XQrsnbkLI30x3OWA0QV9gLTfNqm8FBnn/SkV/1b4qcE w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10274\"; a=\"253651982\"",
            "E=Sophos;i=\"5.90,149,1643702400\"; d=\"scan'208\";a=\"253651982\"",
            "E=Sophos;i=\"5.90,149,1643702400\"; d=\"scan'208\";a=\"551348126\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "stable@dpdk.org,\n\tBruce Richardson <bruce.richardson@intel.com>",
        "Subject": "[PATCH 4/9] doc/linux_gsg: move section on binding drivers up the\n page",
        "Date": "Wed,  2 Mar 2022 17:22:12 +0000",
        "Message-Id": "<20220302172217.472279-5-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.32.0",
        "In-Reply-To": "<20220302172217.472279-1-bruce.richardson@intel.com>",
        "References": "<20220302172217.472279-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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"
    },
    "content": "While the details of VFIO and UIO may be of interest to some, most users\nof the doc are likely primarily interested in how to bind their devices\nto the kernel driver and then move on to running the app. Therefore, the\nmost important part of the \"Linux Drivers\" section of the GSG is the\nsubsection on \"Binding and Unbinding\", so put that first.\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\n---\n doc/guides/linux_gsg/linux_drivers.rst | 179 +++++++++++++------------\n 1 file changed, 90 insertions(+), 89 deletions(-)",
    "diff": "diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst\nindex 2cdacf0961..83f28d86fe 100644\n--- a/doc/guides/linux_gsg/linux_drivers.rst\n+++ b/doc/guides/linux_gsg/linux_drivers.rst\n@@ -14,6 +14,96 @@ Different PMDs may require different kernel drivers in order to work properly.\n Depending on the PMD being used, a corresponding kernel driver should be loaded,\n and network ports should be bound to that driver.\n \n+.. _linux_gsg_binding_kernel:\n+\n+Binding and Unbinding Network Ports to/from the Kernel Modules\n+--------------------------------------------------------------\n+\n+.. note::\n+\n+   PMDs which use the bifurcated driver should not be unbound from their kernel drivers.\n+   This section is for PMDs which use the UIO or VFIO drivers.\n+   See :ref:`bifurcated_driver` section for more details.\n+\n+As of release 1.4, DPDK applications no longer automatically unbind all supported network ports from the kernel driver in use.\n+Instead, in case the PMD being used use the VFIO or UIO drivers,\n+all ports that are to be used by a DPDK application must be bound to\n+the ``vfio-pci``, ``uio_pci_generic``, or ``igb_uio`` module\n+before the application is run.\n+For such PMDs, any network ports under Linux* control will be ignored and cannot be used by the application.\n+\n+To bind ports to the ``vfio-pci``, ``uio_pci_generic`` or ``igb_uio`` module\n+for DPDK use, or to return ports to Linux control,\n+a utility script called ``dpdk-devbind.py`` is provided in the ``usertools`` subdirectory.\n+This utility can be used to provide a view of the current state of the network ports on the system,\n+and to bind and unbind those ports from the different kernel modules,\n+including the VFIO and UIO modules.\n+The following are some examples of how the script can be used.\n+A full description of the script and its parameters can be obtained\n+by calling the script with the ``--help`` or ``--usage`` options.\n+Note that the UIO or VFIO kernel modules to be used,\n+should be loaded into the kernel before running the ``dpdk-devbind.py`` script.\n+\n+.. warning::\n+\n+   Due to the way VFIO works, there are certain limitations\n+   to which devices can be used with VFIO.\n+   Mainly it comes down to how IOMMU groups work.\n+   Any Virtual Function device can usually be used with VFIO on its own,\n+   but physical devices may require either all ports bound to VFIO,\n+   or some of them bound to VFIO while others not being bound to anything at all.\n+\n+   If your device is behind a PCI-to-PCI bridge,\n+   the bridge will then be part of the IOMMU group in which your device is in.\n+   Therefore, the bridge driver should also be unbound from the bridge PCI device\n+   for VFIO to work with devices behind the bridge.\n+\n+.. warning::\n+\n+   While any user can run the ``dpdk-devbind.py`` script\n+   to view the status of the network ports,\n+   binding or unbinding network ports requires root privileges.\n+\n+To see the status of all network ports on the system:\n+\n+.. code-block:: console\n+\n+    ./usertools/dpdk-devbind.py --status\n+\n+    Network devices using DPDK-compatible driver\n+    ============================================\n+    0000:82:00.0 '82599EB 10-GbE NIC' drv=uio_pci_generic unused=ixgbe\n+    0000:82:00.1 '82599EB 10-GbE NIC' drv=uio_pci_generic unused=ixgbe\n+\n+    Network devices using kernel driver\n+    ===================================\n+    0000:04:00.0 'I350 1-GbE NIC' if=em0  drv=igb unused=uio_pci_generic *Active*\n+    0000:04:00.1 'I350 1-GbE NIC' if=eth1 drv=igb unused=uio_pci_generic\n+    0000:04:00.2 'I350 1-GbE NIC' if=eth2 drv=igb unused=uio_pci_generic\n+    0000:04:00.3 'I350 1-GbE NIC' if=eth3 drv=igb unused=uio_pci_generic\n+\n+    Other network devices\n+    =====================\n+    <none>\n+\n+To bind device ``eth1``,``04:00.1``, to the ``uio_pci_generic`` driver:\n+\n+.. code-block:: console\n+\n+    ./usertools/dpdk-devbind.py --bind=uio_pci_generic 04:00.1\n+\n+or, alternatively,\n+\n+.. code-block:: console\n+\n+    ./usertools/dpdk-devbind.py --bind=uio_pci_generic eth1\n+\n+To restore device ``82:00.0`` to its original kernel binding:\n+\n+.. code-block:: console\n+\n+    ./usertools/dpdk-devbind.py --bind=ixgbe 82:00.0\n+\n VFIO\n ----\n \n@@ -225,95 +315,6 @@ More about the bifurcated driver can be found in\n `Mellanox Bifurcated DPDK PMD\n <https://www.dpdk.org/wp-content/uploads/sites/35/2016/10/Day02-Session04-RonyEfraim-Userspace2016.pdf>`__.\n \n-.. _linux_gsg_binding_kernel:\n-\n-Binding and Unbinding Network Ports to/from the Kernel Modules\n---------------------------------------------------------------\n-\n-.. note::\n-\n-   PMDs which use the bifurcated driver should not be unbound from their kernel drivers.\n-   This section is for PMDs which use the UIO or VFIO drivers.\n-\n-As of release 1.4, DPDK applications no longer automatically unbind all supported network ports from the kernel driver in use.\n-Instead, in case the PMD being used use the VFIO or UIO drivers,\n-all ports that are to be used by a DPDK application must be bound to\n-the ``vfio-pci``, ``uio_pci_generic``, or ``igb_uio`` module\n-before the application is run.\n-For such PMDs, any network ports under Linux* control will be ignored and cannot be used by the application.\n-\n-To bind ports to the ``vfio-pci``, ``uio_pci_generic`` or ``igb_uio`` module\n-for DPDK use, or to return ports to Linux control,\n-a utility script called ``dpdk-devbind.py`` is provided in the ``usertools`` subdirectory.\n-This utility can be used to provide a view of the current state of the network ports on the system,\n-and to bind and unbind those ports from the different kernel modules,\n-including the VFIO and UIO modules.\n-The following are some examples of how the script can be used.\n-A full description of the script and its parameters can be obtained\n-by calling the script with the ``--help`` or ``--usage`` options.\n-Note that the UIO or VFIO kernel modules to be used,\n-should be loaded into the kernel before running the ``dpdk-devbind.py`` script.\n-\n-.. warning::\n-\n-   Due to the way VFIO works, there are certain limitations\n-   to which devices can be used with VFIO.\n-   Mainly it comes down to how IOMMU groups work.\n-   Any Virtual Function device can usually be used with VFIO on its own,\n-   but physical devices may require either all ports bound to VFIO,\n-   or some of them bound to VFIO while others not being bound to anything at all.\n-\n-   If your device is behind a PCI-to-PCI bridge,\n-   the bridge will then be part of the IOMMU group in which your device is in.\n-   Therefore, the bridge driver should also be unbound from the bridge PCI device\n-   for VFIO to work with devices behind the bridge.\n-\n-.. warning::\n-\n-   While any user can run the ``dpdk-devbind.py`` script\n-   to view the status of the network ports,\n-   binding or unbinding network ports requires root privileges.\n-\n-To see the status of all network ports on the system:\n-\n-.. code-block:: console\n-\n-    ./usertools/dpdk-devbind.py --status\n-\n-    Network devices using DPDK-compatible driver\n-    ============================================\n-    0000:82:00.0 '82599EB 10-GbE NIC' drv=uio_pci_generic unused=ixgbe\n-    0000:82:00.1 '82599EB 10-GbE NIC' drv=uio_pci_generic unused=ixgbe\n-\n-    Network devices using kernel driver\n-    ===================================\n-    0000:04:00.0 'I350 1-GbE NIC' if=em0  drv=igb unused=uio_pci_generic *Active*\n-    0000:04:00.1 'I350 1-GbE NIC' if=eth1 drv=igb unused=uio_pci_generic\n-    0000:04:00.2 'I350 1-GbE NIC' if=eth2 drv=igb unused=uio_pci_generic\n-    0000:04:00.3 'I350 1-GbE NIC' if=eth3 drv=igb unused=uio_pci_generic\n-\n-    Other network devices\n-    =====================\n-    <none>\n-\n-To bind device ``eth1``,``04:00.1``, to the ``uio_pci_generic`` driver:\n-\n-.. code-block:: console\n-\n-    ./usertools/dpdk-devbind.py --bind=uio_pci_generic 04:00.1\n-\n-or, alternatively,\n-\n-.. code-block:: console\n-\n-    ./usertools/dpdk-devbind.py --bind=uio_pci_generic eth1\n-\n-To restore device ``82:00.0`` to its original kernel binding:\n-\n-.. code-block:: console\n-\n-    ./usertools/dpdk-devbind.py --bind=ixgbe 82:00.0\n-\n Troubleshooting VFIO\n --------------------\n \n",
    "prefixes": [
        "4/9"
    ]
}