get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45888,
    "url": "http://patches.dpdk.org/api/patches/45888/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/68b1cc34d69c96f16e3c6068daaa9b2a392660cc.1538486972.git.anatoly.burakov@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": "<68b1cc34d69c96f16e3c6068daaa9b2a392660cc.1538486972.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/68b1cc34d69c96f16e3c6068daaa9b2a392660cc.1538486972.git.anatoly.burakov@intel.com",
    "date": "2018-10-02T13:34:39",
    "name": "[v9,01/21] mem: add length to memseg list",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "2f5dafa9cb82181a25d28a68870eb1bbe05604e8",
    "submitter": {
        "id": 4,
        "url": "http://patches.dpdk.org/api/people/4/?format=api",
        "name": "Anatoly Burakov",
        "email": "anatoly.burakov@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/68b1cc34d69c96f16e3c6068daaa9b2a392660cc.1538486972.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 1643,
            "url": "http://patches.dpdk.org/api/series/1643/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1643",
            "date": "2018-10-02T13:34:42",
            "name": "Support externally allocated memory in DPDK",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/1643/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/45888/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/45888/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 6B0291B11F;\n\tTue,  2 Oct 2018 15:35:32 +0200 (CEST)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby dpdk.org (Postfix) with ESMTP id E06E65B3C\n\tfor <dev@dpdk.org>; Tue,  2 Oct 2018 15:35:16 +0200 (CEST)",
            "from orsmga006.jf.intel.com ([10.7.209.51])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t02 Oct 2018 06:35:15 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby orsmga006.jf.intel.com with ESMTP; 02 Oct 2018 06:35:00 -0700",
            "from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com\n\t[10.237.217.45])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw92DZ04j009124; Tue, 2 Oct 2018 14:35:00 +0100",
            "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w92DYxZL031919;\n\tTue, 2 Oct 2018 14:34:59 +0100",
            "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w92DYxE1031912;\n\tTue, 2 Oct 2018 14:34:59 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.54,332,1534834800\"; d=\"scan'208\";a=\"79224901\"",
        "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>,\n\tBruce Richardson <bruce.richardson@intel.com>,\n\tlaszlo.madarassy@ericsson.com, laszlo.vadkerti@ericsson.com,\n\tandras.kovacs@ericsson.com, winnie.tian@ericsson.com,\n\tdaniel.andrasi@ericsson.com, janos.kobor@ericsson.com,\n\tgeza.koblo@ericsson.com, srinath.mannam@broadcom.com,\n\tscott.branden@broadcom.com, ajit.khaparde@broadcom.com,\n\tkeith.wiles@intel.com, thomas@monjalon.net, shreyansh.jain@nxp.com,\n\tshahafs@mellanox.com, arybchenko@solarflare.com,\n\talejandro.lucero@netronome.com",
        "Date": "Tue,  2 Oct 2018 14:34:39 +0100",
        "Message-Id": "<68b1cc34d69c96f16e3c6068daaa9b2a392660cc.1538486972.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "In-Reply-To": [
            "<cover.1538486972.git.anatoly.burakov@intel.com>",
            "<cover.1538486972.git.anatoly.burakov@intel.com>"
        ],
        "References": [
            "<cover.1538486972.git.anatoly.burakov@intel.com>",
            "<cover.1538398379.git.anatoly.burakov@intel.com>\n\t<cover.1538486972.git.anatoly.burakov@intel.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH v9 01/21] mem: add length to memseg list",
        "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": "Previously, to calculate length of memory area covered by a memseg\nlist, we would've needed to multiply page size by length of fbarray\nbacking that memseg list. This is not obvious and unnecessarily\nlow level, so store length in the memseg list itself.\n\nThis breaks ABI, so bump the EAL ABI version and document the\nchange. Also, while we're breaking ABI, pack the members a little\nbetter.\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\nAcked-by: Shreyansh Jain <shreyansh.jain@nxp.com>\n---\n doc/guides/rel_notes/release_18_11.rst            | 8 +++++++-\n drivers/bus/pci/linux/pci.c                       | 2 +-\n lib/librte_eal/bsdapp/eal/Makefile                | 2 +-\n lib/librte_eal/bsdapp/eal/eal_memory.c            | 2 ++\n lib/librte_eal/common/eal_common_memory.c         | 5 ++---\n lib/librte_eal/common/include/rte_eal_memconfig.h | 3 ++-\n lib/librte_eal/linuxapp/eal/Makefile              | 2 +-\n lib/librte_eal/linuxapp/eal/eal_memalloc.c        | 3 ++-\n lib/librte_eal/linuxapp/eal/eal_memory.c          | 4 +++-\n lib/librte_eal/meson.build                        | 2 +-\n 10 files changed, 22 insertions(+), 11 deletions(-)",
    "diff": "diff --git a/doc/guides/rel_notes/release_18_11.rst b/doc/guides/rel_notes/release_18_11.rst\nindex a8327ea77..58bb79022 100644\n--- a/doc/guides/rel_notes/release_18_11.rst\n+++ b/doc/guides/rel_notes/release_18_11.rst\n@@ -153,6 +153,12 @@ ABI Changes\n    =========================================================\n \n \n+* eal: EAL library ABI version was changed due to previously announced work on\n+       supporting external memory in DPDK:\n+         - structure ``rte_memseg_list`` now has a new field indicating length\n+           of memory addressed by the segment list\n+\n+\n Removed Items\n -------------\n \n@@ -198,7 +204,7 @@ The libraries prepended with a plus sign were incremented in this version.\n      librte_compressdev.so.1\n      librte_cryptodev.so.5\n      librte_distributor.so.1\n-     librte_eal.so.8\n+   + librte_eal.so.9\n      librte_ethdev.so.10\n    + librte_eventdev.so.6\n      librte_flow_classify.so.1\ndiff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c\nindex 04648ac93..d6e1027ab 100644\n--- a/drivers/bus/pci/linux/pci.c\n+++ b/drivers/bus/pci/linux/pci.c\n@@ -119,7 +119,7 @@ rte_pci_unmap_device(struct rte_pci_device *dev)\n static int\n find_max_end_va(const struct rte_memseg_list *msl, void *arg)\n {\n-\tsize_t sz = msl->memseg_arr.len * msl->page_sz;\n+\tsize_t sz = msl->len;\n \tvoid *end_va = RTE_PTR_ADD(msl->base_va, sz);\n \tvoid **max_va = arg;\n \ndiff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile\nindex d27da3d15..97bff4852 100644\n--- a/lib/librte_eal/bsdapp/eal/Makefile\n+++ b/lib/librte_eal/bsdapp/eal/Makefile\n@@ -22,7 +22,7 @@ LDLIBS += -lrte_kvargs\n \n EXPORT_MAP := ../../rte_eal_version.map\n \n-LIBABIVER := 8\n+LIBABIVER := 9\n \n # specific to bsdapp exec-env\n SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) := eal.c\ndiff --git a/lib/librte_eal/bsdapp/eal/eal_memory.c b/lib/librte_eal/bsdapp/eal/eal_memory.c\nindex 16d2bc7c3..65ea670f9 100644\n--- a/lib/librte_eal/bsdapp/eal/eal_memory.c\n+++ b/lib/librte_eal/bsdapp/eal/eal_memory.c\n@@ -79,6 +79,7 @@ rte_eal_hugepage_init(void)\n \t\t}\n \t\tmsl->base_va = addr;\n \t\tmsl->page_sz = page_sz;\n+\t\tmsl->len = internal_config.memory;\n \t\tmsl->socket_id = 0;\n \n \t\t/* populate memsegs. each memseg is 1 page long */\n@@ -370,6 +371,7 @@ alloc_va_space(struct rte_memseg_list *msl)\n \t\treturn -1;\n \t}\n \tmsl->base_va = addr;\n+\tmsl->len = mem_sz;\n \n \treturn 0;\n }\ndiff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c\nindex 0b69804ff..30d018209 100644\n--- a/lib/librte_eal/common/eal_common_memory.c\n+++ b/lib/librte_eal/common/eal_common_memory.c\n@@ -171,7 +171,7 @@ virt2memseg(const void *addr, const struct rte_memseg_list *msl)\n \n \t/* a memseg list was specified, check if it's the right one */\n \tstart = msl->base_va;\n-\tend = RTE_PTR_ADD(start, (size_t)msl->page_sz * msl->memseg_arr.len);\n+\tend = RTE_PTR_ADD(start, msl->len);\n \n \tif (addr < start || addr >= end)\n \t\treturn NULL;\n@@ -194,8 +194,7 @@ virt2memseg_list(const void *addr)\n \t\tmsl = &mcfg->memsegs[msl_idx];\n \n \t\tstart = msl->base_va;\n-\t\tend = RTE_PTR_ADD(start,\n-\t\t\t\t(size_t)msl->page_sz * msl->memseg_arr.len);\n+\t\tend = RTE_PTR_ADD(start, msl->len);\n \t\tif (addr >= start && addr < end)\n \t\t\tbreak;\n \t}\ndiff --git a/lib/librte_eal/common/include/rte_eal_memconfig.h b/lib/librte_eal/common/include/rte_eal_memconfig.h\nindex aff0688dd..1d2362985 100644\n--- a/lib/librte_eal/common/include/rte_eal_memconfig.h\n+++ b/lib/librte_eal/common/include/rte_eal_memconfig.h\n@@ -30,9 +30,10 @@ struct rte_memseg_list {\n \t\tuint64_t addr_64;\n \t\t/**< Makes sure addr is always 64-bits */\n \t};\n-\tint socket_id; /**< Socket ID for all memsegs in this list. */\n \tuint64_t page_sz; /**< Page size for all memsegs in this list. */\n+\tint socket_id; /**< Socket ID for all memsegs in this list. */\n \tvolatile uint32_t version; /**< version number for multiprocess sync. */\n+\tsize_t len; /**< Length of memory area covered by this memseg list. */\n \tstruct rte_fbarray memseg_arr;\n };\n \ndiff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile\nindex fd92c75c2..5c16bc40f 100644\n--- a/lib/librte_eal/linuxapp/eal/Makefile\n+++ b/lib/librte_eal/linuxapp/eal/Makefile\n@@ -10,7 +10,7 @@ ARCH_DIR ?= $(RTE_ARCH)\n EXPORT_MAP := ../../rte_eal_version.map\n VPATH += $(RTE_SDK)/lib/librte_eal/common/arch/$(ARCH_DIR)\n \n-LIBABIVER := 8\n+LIBABIVER := 9\n \n VPATH += $(RTE_SDK)/lib/librte_eal/common\n \ndiff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c\nindex b2e2a9599..71a6e0fd9 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c\n@@ -986,7 +986,7 @@ free_seg_walk(const struct rte_memseg_list *msl, void *arg)\n \tint msl_idx, seg_idx, ret, dir_fd = -1;\n \n \tstart_addr = (uintptr_t) msl->base_va;\n-\tend_addr = start_addr + msl->memseg_arr.len * (size_t)msl->page_sz;\n+\tend_addr = start_addr + msl->len;\n \n \tif ((uintptr_t)wa->ms->addr < start_addr ||\n \t\t\t(uintptr_t)wa->ms->addr >= end_addr)\n@@ -1472,6 +1472,7 @@ secondary_msl_create_walk(const struct rte_memseg_list *msl,\n \t\treturn -1;\n \t}\n \tlocal_msl->base_va = primary_msl->base_va;\n+\tlocal_msl->len = primary_msl->len;\n \n \treturn 0;\n }\ndiff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c\nindex e3ac24815..897d94179 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_memory.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c\n@@ -861,6 +861,7 @@ alloc_va_space(struct rte_memseg_list *msl)\n \t\treturn -1;\n \t}\n \tmsl->base_va = addr;\n+\tmsl->len = mem_sz;\n \n \treturn 0;\n }\n@@ -1369,6 +1370,7 @@ eal_legacy_hugepage_init(void)\n \t\tmsl->base_va = addr;\n \t\tmsl->page_sz = page_sz;\n \t\tmsl->socket_id = 0;\n+\t\tmsl->len = internal_config.memory;\n \n \t\t/* populate memsegs. each memseg is one page long */\n \t\tfor (cur_seg = 0; cur_seg < n_segs; cur_seg++) {\n@@ -1615,7 +1617,7 @@ eal_legacy_hugepage_init(void)\n \t\tif (msl->memseg_arr.count > 0)\n \t\t\tcontinue;\n \t\t/* this is an unused list, deallocate it */\n-\t\tmem_sz = (size_t)msl->page_sz * msl->memseg_arr.len;\n+\t\tmem_sz = msl->len;\n \t\tmunmap(msl->base_va, mem_sz);\n \t\tmsl->base_va = NULL;\n \ndiff --git a/lib/librte_eal/meson.build b/lib/librte_eal/meson.build\nindex e1fde15d1..62ef985b9 100644\n--- a/lib/librte_eal/meson.build\n+++ b/lib/librte_eal/meson.build\n@@ -21,7 +21,7 @@ else\n \terror('unsupported system type \"@0@\"'.format(host_machine.system()))\n endif\n \n-version = 8  # the version of the EAL API\n+version = 9  # the version of the EAL API\n allow_experimental_apis = true\n deps += 'compat'\n deps += 'kvargs'\n",
    "prefixes": [
        "v9",
        "01/21"
    ]
}