get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 103230,
    "url": "http://patchwork.dpdk.org/api/patches/103230/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20211029095310.30785-1-olivier.matz@6wind.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": "<20211029095310.30785-1-olivier.matz@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211029095310.30785-1-olivier.matz@6wind.com",
    "date": "2021-10-29T09:53:10",
    "name": "eal/memory: fix unused SIGBUS handler",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "c1caac8f07e3dedea5a183d1e9e6735dab19402d",
    "submitter": {
        "id": 8,
        "url": "http://patchwork.dpdk.org/api/people/8/?format=api",
        "name": "Olivier Matz",
        "email": "olivier.matz@6wind.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patchwork.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20211029095310.30785-1-olivier.matz@6wind.com/mbox/",
    "series": [
        {
            "id": 20126,
            "url": "http://patchwork.dpdk.org/api/series/20126/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=20126",
            "date": "2021-10-29T09:53:10",
            "name": "eal/memory: fix unused SIGBUS handler",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/20126/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/103230/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/103230/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 41263A0032;\n\tFri, 29 Oct 2021 11:53:23 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9688C41143;\n\tFri, 29 Oct 2021 11:53:22 +0200 (CEST)",
            "from mail-wm1-f41.google.com (mail-wm1-f41.google.com\n [209.85.128.41]) by mails.dpdk.org (Postfix) with ESMTP id B091C410E1\n for <dev@dpdk.org>; Fri, 29 Oct 2021 11:53:21 +0200 (CEST)",
            "by mail-wm1-f41.google.com with SMTP id\n z11-20020a1c7e0b000000b0030db7b70b6bso12071293wmc.1\n for <dev@dpdk.org>; Fri, 29 Oct 2021 02:53:21 -0700 (PDT)",
            "from gojira.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com.\n [62.23.145.78])\n by smtp.gmail.com with ESMTPSA id h14sm9043418wmq.34.2021.10.29.02.53.20\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 29 Oct 2021 02:53:21 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google;\n h=from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=5jd6tlQ5rg88M5bA1Ry8FGl9oJ4QhdhDJPPOCFofNHk=;\n b=BO2P0ndlupQmNPSyR5tWFLMKcn32rgBqpqAHG9criVxHEs7/HDigdQLxl8K7EWUhEc\n lEzriBlWgFfaBgUvkNE9akFXLL8OL+gfq5/lq+o6RF+rWOwPGSyfueQmpFfsT81PXict\n vHgYVdjrrBmj+2GUS5DJATzQmQEGSTYsqGX5quntKd5PP93ZsEBIsF4fU0LELpekkm9r\n o0lMqXagBEiRZt6PbrpV2z5ZNeEFV40cqqR5FFg5w5VWU1IM+vZGOqWSkCRlDIMrZhgH\n 4MOU7cg6liNYhLHvw9J+p+/n5T6SsAGKhrpUQY1aTAOzr/aKQkncpNwLfqsWKQETBFE8\n /kwg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=5jd6tlQ5rg88M5bA1Ry8FGl9oJ4QhdhDJPPOCFofNHk=;\n b=PwrHaqx0l6w+uiGS5qMQdbCz40fEmmqY6dLpFLaWLGoysxBvL39oY+FAGq2SW2r+Kc\n pfBai6+cZJcL91HO1vWhNZkzglkxmT+eXbSjC+3d82A7g5scmw4CUF4Ct+OR1/sKhwQx\n Cvjk4JVykN/elespvXZTdUVL2U1cQ7xSA5Ny3aaGKfTUl2KSs2CGnHqX1IX5cHqshmVo\n dZ4I4Ga9jRjV3YUKxXBOvhBxzCZsORriyIgbgRkLHTAyryXL7Exhqg87TWFulw11gKLR\n tcwK1P9aOICqNrUuLRTqcSOIN48iysRZHH7KdiDeIhenJ/IiEt69mMnksKB1iey6w0FK\n NUaQ==",
        "X-Gm-Message-State": "AOAM530HWbIjajyHufBbpT+IFHHCu5b6nsGwhIik+UPmA0smJWPxdede\n VBQCpoG9ty0YX6+wlRB8SmJNH21vxnc6Iw==",
        "X-Google-Smtp-Source": "\n ABdhPJwimnIjEcMtRZUisPHcoYD0Cg5ngWILXrPnuKAzRWLQJgctAOf/OWXbaUFc65UwnpkkDNvkPQ==",
        "X-Received": "by 2002:a05:600c:2214:: with SMTP id\n z20mr10085753wml.32.1635501201498;\n Fri, 29 Oct 2021 02:53:21 -0700 (PDT)",
        "From": "Olivier Matz <olivier.matz@6wind.com>",
        "To": "dev@dpdk.org",
        "Cc": "Anatoly Burakov <anatoly.burakov@intel.com>,\n Maxime Coquelin <maxime.coquelin@redhat.com>,\n David Marchand <david.marchand@redhat.com>, stable@dpdk.org",
        "Date": "Fri, 29 Oct 2021 11:53:10 +0200",
        "Message-Id": "<20211029095310.30785-1-olivier.matz@6wind.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH] eal/memory: fix unused SIGBUS handler",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Since its introduction in 2018, the SIGBUS handler was never registered,\nand all related functions were unused.\n\nA SIGBUS can be received by the application when accessing to hugepages\neven if mmap() was successful, This happens especially when running\ninside containers when there is not enough hugepages. In this case, we\nneed to recover. A similar scheme can be found in eal_memory.c.\n\nFixes: 582bed1e1d1d (\"mem: support mapping hugepages at runtime\")\nCc: stable@dpdk.org\n\nSigned-off-by: Olivier Matz <olivier.matz@6wind.com>\n---\n lib/eal/linux/eal_memalloc.c | 13 +++++++++----\n 1 file changed, 9 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/lib/eal/linux/eal_memalloc.c b/lib/eal/linux/eal_memalloc.c\nindex 0ec8542283..337f2bc739 100644\n--- a/lib/eal/linux/eal_memalloc.c\n+++ b/lib/eal/linux/eal_memalloc.c\n@@ -107,7 +107,7 @@ static struct rte_memseg_list local_memsegs[RTE_MAX_MEMSEG_LISTS];\n \n static sigjmp_buf huge_jmpenv;\n \n-static void __rte_unused huge_sigbus_handler(int signo __rte_unused)\n+static void huge_sigbus_handler(int signo __rte_unused)\n {\n \tsiglongjmp(huge_jmpenv, 1);\n }\n@@ -116,7 +116,7 @@ static void __rte_unused huge_sigbus_handler(int signo __rte_unused)\n  * non-static local variable in the stack frame calling sigsetjmp might be\n  * clobbered by a call to longjmp.\n  */\n-static int __rte_unused huge_wrap_sigsetjmp(void)\n+static int huge_wrap_sigsetjmp(void)\n {\n \treturn sigsetjmp(huge_jmpenv, 1);\n }\n@@ -124,7 +124,7 @@ static int __rte_unused huge_wrap_sigsetjmp(void)\n static struct sigaction huge_action_old;\n static int huge_need_recover;\n \n-static void __rte_unused\n+static void\n huge_register_sigbus(void)\n {\n \tsigset_t mask;\n@@ -139,7 +139,7 @@ huge_register_sigbus(void)\n \thuge_need_recover = !sigaction(SIGBUS, &action, &huge_action_old);\n }\n \n-static void __rte_unused\n+static void\n huge_recover_sigbus(void)\n {\n \tif (huge_need_recover) {\n@@ -576,6 +576,8 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,\n \t\tmmap_flags = MAP_SHARED | MAP_POPULATE | MAP_FIXED;\n \t}\n \n+\thuge_register_sigbus();\n+\n \t/*\n \t * map the segment, and populate page tables, the kernel fills\n \t * this segment with zeros if it's a new page.\n@@ -651,6 +653,8 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,\n \t\t\t\t__func__);\n #endif\n \n+\thuge_recover_sigbus();\n+\n \tms->addr = addr;\n \tms->hugepage_sz = alloc_sz;\n \tms->len = alloc_sz;\n@@ -664,6 +668,7 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,\n mapped:\n \tmunmap(addr, alloc_sz);\n unmapped:\n+\thuge_recover_sigbus();\n \tflags = EAL_RESERVE_FORCE_ADDRESS;\n \tnew_addr = eal_get_virtual_area(addr, &alloc_sz, alloc_sz, 0, flags);\n \tif (new_addr != addr) {\n",
    "prefixes": []
}