get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 75886,
    "url": "http://patchwork.dpdk.org/api/patches/75886/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/aca9a5986871ecb3aba7f476fa906a34dabc9e7e.1598283570.git.anatoly.burakov@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<aca9a5986871ecb3aba7f476fa906a34dabc9e7e.1598283570.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/aca9a5986871ecb3aba7f476fa906a34dabc9e7e.1598283570.git.anatoly.burakov@intel.com",
    "date": "2020-08-24T15:45:00",
    "name": "[1/2] doc/linux_gsg: clarify instructions on running as non-root",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "5fba7c4d6c34c2f68e3be86c13725ad85c11cf7a",
    "submitter": {
        "id": 4,
        "url": "http://patchwork.dpdk.org/api/people/4/?format=api",
        "name": "Burakov, Anatoly",
        "email": "anatoly.burakov@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/aca9a5986871ecb3aba7f476fa906a34dabc9e7e.1598283570.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 11762,
            "url": "http://patchwork.dpdk.org/api/series/11762/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=11762",
            "date": "2020-08-24T15:45:00",
            "name": "[1/2] doc/linux_gsg: clarify instructions on running as non-root",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/11762/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/75886/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/75886/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 96E70A04B1;\n\tMon, 24 Aug 2020 17:45:13 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 0EAD9F72;\n\tMon, 24 Aug 2020 17:45:13 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by dpdk.org (Postfix) with ESMTP id 4CBF9F04;\n Mon, 24 Aug 2020 17:45:10 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Aug 2020 08:45:08 -0700",
            "from silpixa00399498.ir.intel.com (HELO\n silpixa00399498.ger.corp.intel.com) ([10.237.222.52])\n by orsmga003.jf.intel.com with ESMTP; 24 Aug 2020 08:45:00 -0700"
        ],
        "IronPort-SDR": [
            "\n eHXf9Hhmq5LcdaKmBpl6ffKQj18GGRqsOcpeSWnMk2J4b5DjnTwh9D6KvYwnRtSFq3vZsIRBAh\n sZXt9DR83kdw==",
            "\n LRpd+YQUu0lfnuU9Rx/5sCeyL1KO19pFn6jFi278YltLtKtTG6HfT5HsbeJL0KJ4qqdNvGQCrD\n P1z/vY3mhKnQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9722\"; a=\"240746374\"",
            "E=Sophos;i=\"5.76,349,1592895600\"; d=\"scan'208\";a=\"240746374\"",
            "E=Sophos;i=\"5.76,349,1592895600\"; d=\"scan'208\";a=\"294646741\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "John McNamara <john.mcnamara@intel.com>,\n Marko Kovacevic <marko.kovacevic@intel.com>, ferruh.yigit@intel.com,\n bruce.richardson@intel.com, padraig.j.connolly@intel.com, stable@dpdk.org",
        "Date": "Mon, 24 Aug 2020 16:45:00 +0100",
        "Message-Id": "\n <aca9a5986871ecb3aba7f476fa906a34dabc9e7e.1598283570.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dpdk-dev] [PATCH 1/2] doc/linux_gsg: clarify instructions on\n\trunning as non-root",
        "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": "The current instructions are slightly out of date when it comes to\nproviding information about setting up the system for using DPDK as\nnon-root, so update them.\n\nCc: stable@dpdk.org\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\n---\n doc/guides/linux_gsg/enable_func.rst | 54 ++++++++++++++++++++--------\n 1 file changed, 39 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/doc/guides/linux_gsg/enable_func.rst b/doc/guides/linux_gsg/enable_func.rst\nindex b2bda80bb7..78b0f7c012 100644\n--- a/doc/guides/linux_gsg/enable_func.rst\n+++ b/doc/guides/linux_gsg/enable_func.rst\n@@ -58,22 +58,34 @@ The application can then determine what action to take, if any, if the HPET is n\n     if any, and on what is available on the system at runtime.\n \n Running DPDK Applications Without Root Privileges\n---------------------------------------------------------\n+-------------------------------------------------\n \n-.. note::\n+In order to run DPDK as non-root, the following Linux filesystem objects'\n+permissions should be adjusted to ensure that the Linux account being used to\n+run the DPDK application has access to them:\n \n-    The instructions below will allow running DPDK as non-root with older\n-    Linux kernel versions. However, since version 4.0, the kernel does not allow\n-    unprivileged processes to read the physical address information from\n-    the pagemaps file, making it impossible for those processes to use HW\n-    devices which require physical addresses\n+*   All directories which serve as hugepage mount points, for example, ``/dev/hugepages``\n \n-Although applications using the DPDK use network ports and other hardware resources directly,\n-with a number of small permission adjustments it is possible to run these applications as a user other than \"root\".\n-To do so, the ownership, or permissions, on the following Linux file system objects should be adjusted to ensure that\n-the Linux user account being used to run the DPDK application has access to them:\n+*   If the HPET is to be used,  ``/dev/hpet``\n \n-*   All directories which serve as hugepage mount points, for example,   ``/mnt/huge``\n+When running as non-root user, there may be some additional resource limits\n+that are imposed by the system. Specifically, the following resource limits may\n+need to be adjusted in order to ensure normal DPDK operation:\n+\n+* RLIMIT_LOCKS (number of file locks that can be held by a process)\n+\n+* RLIMIT_NOFILE (number of open file descriptors that can be held open by a process)\n+\n+* RLIMIT_MEMLOCK (amount of pinned pages the process is allowed to have)\n+\n+The above limits can usually be adjusted by editing\n+``/etc/security/limits.conf`` file, and rebooting.\n+\n+Additionally, depending on which kernel driver is in use, the relevant\n+resources also should be accessible by the user running the DPDK application.\n+\n+For ``igb_uio`` or ``uio_pci_generic`` kernel drivers, the following Linux file\n+system objects' permissions should be adjusted:\n \n *   The userspace-io device files in  ``/dev``, for example,  ``/dev/uio0``, ``/dev/uio1``, and so on\n \n@@ -82,11 +94,23 @@ the Linux user account being used to run the DPDK application has access to them\n        /sys/class/uio/uio0/device/config\n        /sys/class/uio/uio0/device/resource*\n \n-*   If the HPET is to be used,  ``/dev/hpet``\n-\n .. note::\n \n-    On some Linux installations, ``/dev/hugepages``  is also a hugepage mount point created by default.\n+    The instructions above will allow running DPDK with ``igb_uio`` driver as\n+    non-root with older Linux kernel versions. However, since version 4.0, the\n+    kernel does not allow unprivileged processes to read the physical address\n+    information from the pagemaps file, making it impossible for those\n+    processes to be used by non-privileged users. In such cases, using the VFIO\n+    driver is recommended.\n+\n+For ``vfio-pci`` kernel driver, the following Linux file system objects'\n+permissions should be adjusted:\n+\n+* The VFIO device file , ``/dev/vfio/vfio``\n+\n+* The directories under ``/dev/vfio`` that correspond to IOMMU group numbers of\n+  devices intended to be used by DPDK, for example, ``/dev/vfio/50``\n+\n \n Power Management and Power Saving Functionality\n -----------------------------------------------\n",
    "prefixes": [
        "1/2"
    ]
}