get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 53240,
    "url": "http://patchwork.dpdk.org/api/patches/53240/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/d2385c13fb2b085ecc89eb9422aed8db79e7fb66.1556883753.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": "<d2385c13fb2b085ecc89eb9422aed8db79e7fb66.1556883753.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/d2385c13fb2b085ecc89eb9422aed8db79e7fb66.1556883753.git.anatoly.burakov@intel.com",
    "date": "2019-05-03T11:50:49",
    "name": "[2/3] ipc: add warnings about not using ipc with memory API's",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b26cf02ef1bc0a84e37275bc5c1287eb7005a217",
    "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/d2385c13fb2b085ecc89eb9422aed8db79e7fb66.1556883753.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 4552,
            "url": "http://patchwork.dpdk.org/api/series/4552/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=4552",
            "date": "2019-05-03T11:50:48",
            "name": "[1/3] doc: fix typo in ipc doc",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/4552/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/53240/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/53240/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 63BD34CC7;\n\tFri,  3 May 2019 13:50:57 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby dpdk.org (Postfix) with ESMTP id C07DEA3;\n\tFri,  3 May 2019 13:50:53 +0200 (CEST)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 May 2019 04:50:53 -0700",
            "from silpixa00399498.ir.intel.com (HELO\n\tsilpixa00399498.ger.corp.intel.com) ([10.237.223.125])\n\tby orsmga005.jf.intel.com with ESMTP; 03 May 2019 04:50:51 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.60,425,1549958400\"; d=\"scan'208\";a=\"321118206\"",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "John McNamara <john.mcnamara@intel.com>,\n\tMarko Kovacevic <marko.kovacevic@intel.com>, stable@dpdk.org",
        "Date": "Fri,  3 May 2019 12:50:49 +0100",
        "Message-Id": "<d2385c13fb2b085ecc89eb9422aed8db79e7fb66.1556883753.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": [
            "<c5b98a67c6f0b66b3ef0534dc1b9ed553d4d7340.1556883753.git.anatoly.burakov@intel.com>",
            "<c5b98a67c6f0b66b3ef0534dc1b9ed553d4d7340.1556883753.git.anatoly.burakov@intel.com>"
        ],
        "References": [
            "<c5b98a67c6f0b66b3ef0534dc1b9ed553d4d7340.1556883753.git.anatoly.burakov@intel.com>",
            "<c5b98a67c6f0b66b3ef0534dc1b9ed553d4d7340.1556883753.git.anatoly.burakov@intel.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH 2/3] ipc: add warnings about not using ipc with\n\tmemory API's",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "IPC and memory-related API's should not be mixed because memory\nrelies on IPC internally. Add explicit warnings to IPC API and\nto the documentation about this.\n\nCc: stable@dpdk.org\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\n---\n doc/guides/prog_guide/env_abstraction_layer.rst | 8 ++++++++\n doc/guides/prog_guide/multi_proc_support.rst    | 5 +++++\n lib/librte_eal/common/include/rte_eal.h         | 7 +++++++\n 3 files changed, 20 insertions(+)",
    "diff": "diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst\nindex c27f730c7..f15bcd976 100644\n--- a/doc/guides/prog_guide/env_abstraction_layer.rst\n+++ b/doc/guides/prog_guide/env_abstraction_layer.rst\n@@ -147,6 +147,14 @@ A default validator callback is provided by EAL, which can be enabled with a\n ``--socket-limit`` command-line option, for a simple way to limit maximum amount\n of memory that can be used by DPDK application.\n \n+.. warning::\n+    Memory subsystem uses DPDK IPC internally, so memory allocations/callbacks\n+    and IPC must not be mixed: it is not safe to allocate/free memory inside\n+    memory-related or IPC callbacks, and it is not safe to use IPC inside\n+    memory-related callbacks. See chapter\n+    :ref:`Multi-process Support <Multi-process_Support>` for more details about\n+    DPDK IPC.\n+\n + Legacy memory mode\n \n This mode is enabled by specifying ``--legacy-mem`` command-line switch to the\ndiff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/prog_guide/multi_proc_support.rst\nindex 1e78a1f02..665474a4c 100644\n--- a/doc/guides/prog_guide/multi_proc_support.rst\n+++ b/doc/guides/prog_guide/multi_proc_support.rst\n@@ -318,6 +318,11 @@ supported. However, since sending messages (not requests) does not involve an\n IPC thread, sending messages while processing another message or request is\n supported.\n \n+Since the memory sybsystem uses IPC internally, memory allocations and IPC must\n+not be mixed: it is not safe to use IPC inside a memory-related callback, nor is\n+it safe to allocate/free memory inside IPC callbacks. Attempting to do so may\n+lead to a deadlock.\n+\n Asynchronous request callbacks may be triggered either from IPC thread or from\n interrupt thread, depending on whether the request has timed out. It is\n therefore suggested to avoid waiting for interrupt-based events (such as alarms)\ndiff --git a/lib/librte_eal/common/include/rte_eal.h b/lib/librte_eal/common/include/rte_eal.h\nindex 0603eaf25..7db022532 100644\n--- a/lib/librte_eal/common/include/rte_eal.h\n+++ b/lib/librte_eal/common/include/rte_eal.h\n@@ -225,6 +225,8 @@ struct rte_mp_reply {\n  *\n  * As we create  socket channel for primary/secondary communication, use\n  * this function typedef to register action for coming messages.\n+ *\n+ * @note No memory allocations should take place inside the callback.\n  */\n typedef int (*rte_mp_t)(const struct rte_mp_msg *msg, const void *peer);\n \n@@ -234,6 +236,8 @@ typedef int (*rte_mp_t)(const struct rte_mp_msg *msg, const void *peer);\n  * As we create socket channel for primary/secondary communication, use\n  * this function typedef to register action for coming responses to asynchronous\n  * requests.\n+ *\n+ * @note No memory allocations should take place inside the callback.\n  */\n typedef int (*rte_mp_async_reply_t)(const struct rte_mp_msg *request,\n \t\tconst struct rte_mp_reply *reply);\n@@ -308,6 +312,9 @@ rte_mp_sendmsg(struct rte_mp_msg *msg);\n  *\n  * @note The caller is responsible to free reply->replies.\n  *\n+ * @note This API must not be used inside memory-related or IPC callbacks, and\n+ *   no memory allocations should take place inside such callback.\n+ *\n  * @param req\n  *   The req argument contains the customized request message.\n  *\n",
    "prefixes": [
        "2/3"
    ]
}