Show a cover letter.

GET /api/covers/42498/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 42498,
    "url": "http://patches.dpdk.org/api/covers/42498/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/cover.1530881548.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": "<cover.1530881548.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/cover.1530881548.git.anatoly.burakov@intel.com",
    "date": "2018-07-06T13:17:21",
    "name": "[RFC,00/11] Support externally allocated memory in DPDK",
    "submitter": {
        "id": 4,
        "url": "http://patches.dpdk.org/api/people/4/?format=api",
        "name": "Anatoly Burakov",
        "email": "anatoly.burakov@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/cover.1530881548.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 453,
            "url": "http://patches.dpdk.org/api/series/453/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=453",
            "date": "2018-07-06T13:17:21",
            "name": "Support externally allocated memory in DPDK",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/453/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/42498/comments/",
    "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 96C7C1BE4F;\n\tFri,  6 Jul 2018 15:17:38 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n\tby dpdk.org (Postfix) with ESMTP id 0D09F1BE41\n\tfor <dev@dpdk.org>; Fri,  6 Jul 2018 15:17:35 +0200 (CEST)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n\tby fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t06 Jul 2018 06:17:34 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby orsmga007.jf.intel.com with ESMTP; 06 Jul 2018 06:17:33 -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\tw66DHX2r027466; Fri, 6 Jul 2018 14:17:33 +0100",
            "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w66DHWOW003739;\n\tFri, 6 Jul 2018 14:17:32 +0100",
            "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w66DHWFH003731;\n\tFri, 6 Jul 2018 14:17:32 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,316,1526367600\"; d=\"scan'208\";a=\"54516396\"",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "srinath.mannam@broadcom.com, scott.branden@broadcom.com,\n\tajit.khaparde@broadcom.com",
        "Date": "Fri,  6 Jul 2018 14:17:21 +0100",
        "Message-Id": "<cover.1530881548.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "Subject": "[dpdk-dev] [RFC 00/11] Support externally allocated memory in DPDK",
        "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": "This is a proposal to enable using externally allocated memory\nin DPDK.\n\nIn a nutshell, here is what is being done here:\n\n- Index malloc heaps by NUMA node index, rather than NUMA node itself\n- Add identifier string to malloc heap, to uniquely identify it\n- Allow creating named heaps and add/remove memory to/from those heaps\n- Allocate memseg lists at runtime, to keep track of IOVA addresses\n  of externally allocated memory\n  - If IOVA addresses aren't provided, use RTE_BAD_IOVA\n- Allow malloc and memzones to allocate from named heaps\n\nThe responsibility to ensure memory is accessible before using it is\non the shoulders of the user - there is no checking done with regards\nto validity of the memory (nor could there be...).\n\nThe following limitations are present:\n\n- No multiprocess support\n- No thread safety\n\nThere is currently no way to allocate memory during initialization\nstage, so even if multiprocess support is added, it is not guaranteed\nto work because of underlying issues with mapping fbarrays in\nsecondary processes. This is not an issue in single process scenario,\nbut it may be an issue in a multiprocess scenario in case where\nprimary doesn't intend to share the externally allocated memory, yet\nadding such memory could fail because some other process failed to\nattach to this shared memory when it wasn't needed.\n\nAnatoly Burakov (11):\n  mem: allow memseg lists to be marked as external\n  eal: add function to rerieve socket index by socket ID\n  malloc: index heaps using heap ID rather than NUMA node\n  malloc: add name to malloc heaps\n  malloc: enable retrieving statistics from named heaps\n  malloc: enable allocating from named heaps\n  malloc: enable creating new malloc heaps\n  malloc: allow adding memory to named heaps\n  malloc: allow removing memory from named heaps\n  malloc: allow destroying heaps\n  memzone: enable reserving memory from named heaps\n\n config/common_base                            |   1 +\n lib/librte_eal/common/eal_common_lcore.c      |  15 +\n lib/librte_eal/common/eal_common_memory.c     |  51 +++-\n lib/librte_eal/common/eal_common_memzone.c    | 283 ++++++++++++++----\n .../common/include/rte_eal_memconfig.h        |   5 +-\n lib/librte_eal/common/include/rte_lcore.h     |  19 +-\n lib/librte_eal/common/include/rte_malloc.h    | 158 +++++++++-\n .../common/include/rte_malloc_heap.h          |   2 +\n lib/librte_eal/common/include/rte_memzone.h   | 183 +++++++++++\n lib/librte_eal/common/malloc_heap.c           | 277 +++++++++++++++--\n lib/librte_eal/common/malloc_heap.h           |  26 ++\n lib/librte_eal/common/rte_malloc.c            | 197 +++++++++++-\n lib/librte_eal/rte_eal_version.map            |  10 +\n 13 files changed, 1118 insertions(+), 109 deletions(-)"
}