Show a cover letter.

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

{
    "id": 71519,
    "url": "http://patches.dpdk.org/api/covers/71519/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20200615004354.14380-1-dmitry.kozliuk@gmail.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": "<20200615004354.14380-1-dmitry.kozliuk@gmail.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200615004354.14380-1-dmitry.kozliuk@gmail.com",
    "date": "2020-06-15T00:43:42",
    "name": "[v9,00/12] Windows basic memory management",
    "submitter": {
        "id": 1581,
        "url": "http://patches.dpdk.org/api/people/1581/?format=api",
        "name": "Dmitry Kozlyuk",
        "email": "dmitry.kozliuk@gmail.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20200615004354.14380-1-dmitry.kozliuk@gmail.com/mbox/",
    "series": [
        {
            "id": 10455,
            "url": "http://patches.dpdk.org/api/series/10455/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=10455",
            "date": "2020-06-15T00:43:42",
            "name": "Windows basic memory management",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/10455/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/71519/comments/",
    "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 D0F4AA0093;\n\tMon, 15 Jun 2020 02:44:04 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 1DBCC4C87;\n\tMon, 15 Jun 2020 02:44:04 +0200 (CEST)",
            "from mail-lj1-f195.google.com (mail-lj1-f195.google.com\n [209.85.208.195]) by dpdk.org (Postfix) with ESMTP id 0712225B3\n for <dev@dpdk.org>; Mon, 15 Jun 2020 02:44:03 +0200 (CEST)",
            "by mail-lj1-f195.google.com with SMTP id q19so17098272lji.2\n for <dev@dpdk.org>; Sun, 14 Jun 2020 17:44:02 -0700 (PDT)",
            "from localhost.localdomain (broadband-37-110-65-23.ip.moscow.rt.ru.\n [37.110.65.23])\n by smtp.gmail.com with ESMTPSA id f19sm4176342lfk.24.2020.06.14.17.44.01\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 14 Jun 2020 17:44:01 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=5lcaWBxBxcweM9MnYExxVMdu2CrahZO137olyZ8P/i0=;\n b=Fi7OZFjq9MJ8SdaQWFR8rN5gOxHog89LTMgAiXnb/QCNbVQjY2VIABNJwi1B1c6sdd\n +I51rDoINQVx2DpnQatXU28pN2TntyysszWU/IIK1DSdAP3VYstclnYc2gJWCF0uVIBy\n 9D5EK8Lqxhkn2A/aWVz+0q3GwdvAWgYgCjAXq749yM7WP/jkVCmDeADD0ZAKvDiQLruv\n 7UThvYycBC09bQXtrzJGEDV3eI8/coW/oaXyj/KotpLhK4RxQGtT2CpTRw1Dt67OQZ9K\n 0Wux0Kn7uL7cIIe6wq1LLI+eDdWCzZWRjkSzMG5OqBCBFgfbvKxBRMqNhUpGnoHWacPU\n Y8lg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=5lcaWBxBxcweM9MnYExxVMdu2CrahZO137olyZ8P/i0=;\n b=Jt7js1dui2HtzzgJaVa/NgP5A2AcfrxFT2CzWdAAkhgXzDrJ/EPHFveQzB0Kz6ru5Q\n uCOjhE7diBUIrmF/kDGN9KmSC3XcJHFcxzYmzqe7gUv0DuY4xy8SuW4G/siqRxbrRlei\n jf6fFaFmKyfBYg4Cs+Ck6OHETS9ZLqSqzc5yA5RNkzjmwAFb2bQlwI8Tk9dIrXfbaHow\n ZRaYonUXANTGebEKcQJUGyEftYSeQ7Ebpg+q5QHU/Qi9LlgvWZwMTbaRIH4zaGxMTewr\n JqQIM5oe6LuP1qS+vD+TjofmszELgoiD+D3HK6M/rT27zfJbJdGfzhy8ooqzcyJcHvkq\n UCqQ==",
        "X-Gm-Message-State": "AOAM53059axEq03bgXUCThkzc7CNLCbN9xPYj6aRP1GOYrJz97tJ6sbP\n Jt3Tvy/TMxD69l3W29mUt+zDcW9RqXA=",
        "X-Google-Smtp-Source": "\n ABdhPJw2R+BuA33MORcbMlHxIoIv+Z0BQOYHVu9RMt49/H2aV33DlFTQQDKzms6UXRNyL3wwGhuyWw==",
        "X-Received": "by 2002:a2e:1558:: with SMTP id 24mr11509262ljv.202.1592181842162;\n Sun, 14 Jun 2020 17:44:02 -0700 (PDT)",
        "From": "Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>",
        "To": "dev@dpdk.org",
        "Cc": "Dmitry Malloy <dmitrym@microsoft.com>,\n Narcisa Ana Maria Vasile <Narcisa.Vasile@microsoft.com>,\n Fady Bader <fady@mellanox.com>, Tal Shnaiderman <talshn@mellanox.com>,\n Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>",
        "Date": "Mon, 15 Jun 2020 03:43:42 +0300",
        "Message-Id": "<20200615004354.14380-1-dmitry.kozliuk@gmail.com>",
        "X-Mailer": "git-send-email 2.25.4",
        "In-Reply-To": "<20200610142730.31376-1-dmitry.kozliuk@gmail.com>",
        "References": "<20200610142730.31376-1-dmitry.kozliuk@gmail.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v9 00/12] Windows basic memory management",
        "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": "Note for v9:\nrte_eal_memory.h renamed, dependent patchsets have to be updated.\n\nThis patchset implements basic MM with the following features:\n\n* Hugepages are dynamically allocated in user-mode.\n* Only 2MB hugepages are supported.\n* IOVA is always PA, obtained through kernel-mode driver.\n* No 32-bit support (presumably not demanded).\n* Ni multi-process support (it is forcefully disabled).\n* No-huge mode for testing without IOVA is available.\n\nTesting revealed Windows Server 2019 does not allow allocating hugepage\nmemory at a reserved address, despite advertised API.  So allocator has\nto temporary free the region to be allocated.  This creates in inherent\nrace condition. This issue is being discussed with Microsoft privately.\n\nNew EAL public functions for memory mapping are introduced to mitigate\nOS differences in DPDK libraries and applications: rte_mem_map,\nrte_mem_unmap, rte_mem_lock, rte_mem_page_size.\n\nTo support common MM routines, internal wrappers for low-level memory\nreservation and file management are introduced. These changes affect\nLinux and FreeBSD EAL. Shared code is placed unded /unix/ subdirectory\n(suggested by Thomas).\n\nTo avoid code duplication between Linux and Windows EAL, common code\nfor EALs supporting dynamic memory allocation is extracted\n(discussed with Anatoly Burakov in v4 thread). This is a separate\npatch to ease the review, but it can be merged with the previous one.\n\nEAL tracepoints save size_t values as long, which is invalid on Windows.\nNew size_t emitter for tracepoints is introduced (suggested by Jerin\nJacob to Fady Bader, see [1]). Also, to avoid workaround in every file\nusing the tracepoints, stubs are added to Windows EAL.\n\nEntire <sys/queue.h> is imported from FreeBSD, replacing existing\npartial import. There is already a license exception for this file.\nThe file is imported as-is, so it causes a bunch of checkpatch warnings.\n\n[1]: http://mails.dpdk.org/archives/dev/2020-May/168076.html\n\n---\n\nv9:\n    * Fix build on 32-bit and FreeBSD.\n    * Rename rte_eal_memory.h to rte_eal_paging.h.\n    * Do not use rte_panic() in library code.\n    * Fix typos, comments, string formatting.\n    * Split documentation commits.\n\nv8:\n    * Log eal_memseg_list_alloc() failure at caller sites (Anatoly Burakov).\n\nv7:\n    * Change EAL internal file management API (Neil Horman).\n\nv6:\n    * Fix 32-bit build on x86 (CI).\n    * Fix Makefile build (Anatoly Burakov, Thomas Monjalon).\n    * Restore 32-bit common code (Anatoly Burakov).\n    * Fix error reporting in memory management (Anatoly Burakov).\n    * Add Doxygen comment for size_t tracepoint emitter (Jerin Jacob).\n    * Update MAINTAINERS for new files and new code (Thomas Monjalon).\n    * Rename rte_get_page_size to rte_mem_page_size.\n    * Mark DPDK-only wrappers internal, move them to separate file.\n    * Get rid of warnings in enabled common code with Clang on Windows.\n\nv5:\n    * Fix allocation and deallocation on Windows Server (Fady Bader).\n    * Replace remaining VirtualFree with VirtualFreeEx (Ranjit Menon).\n    * Fix errors in eal_get_virtual_area (Anatoly Burakov).\n    * Fix error handling and documentation for rte_mem_lock (Anatoly Burakov).\n    * Extract common code for EALs w/dynamic allocation (Anatoly Burakov).\n    * Use POSIX value for rte_errno after rte_mem_unmap() on Windows.\n    * Add stubs to use tracing functions without workarounds.\n\nv4:\n    * Rebase on ToT, drop patches merged into master.\n    * Rearrange patches to split Windows code (Jerin).\n    * Fix Linux and FreeBSD build with make (Ophir).\n    * Use int instead of enum to hold a set of flags (Anatoly).\n    * Rename eal_mem_reserve items and fix their description (Anatoly).\n    * Add eal_mem_set_dump() wrapper around madvise (Anatoly).\n    * Don't claim Windows Server 2016 support due to lack of API (Tal).\n    * Replace enum rte_page_sizes with a set of #defines (Jerin).\n    * Fix documentation, SPDX tags, logging (Thomas).\n\nv3:\n    * Fix Linux build on and aarch64 and 32-bit x86 (reported by CI).\n    * Fix logic and error handling while allocating segments.\n    * Fix Unix rte_mem_map(): return NULL on failure.\n    * Fix some checkpatch.sh issues:\n        * Do not return positive errno, use DWORD for GetLastError().\n        * Make dpdk-kmods source files non-executable.\n    * Improve GSG for Windows Server (suggested by Ranjit Menon).\n\nv2:\n    * Rebase on ToT. Move all new code shared between Linux and FreeBSD\n      to /unix/ subdirectory, also factor out some existing code there.\n    * Improve description of Clang issue with rte_page_sizes on Windows.\n      Restore -fstrict-enum for EAL. Check running, not target compiler.\n    * Use EAL prefix for private facilities instead if RTE.\n    * Improve documentation comments for new functions.\n    * Remove co-installer for virt2phys. Add a typecast for clarity.\n    * Document virt2phys in user guide, improve its own README.\n    * Explicitly and forcefully disable multi-process.\n\nDmitry Kozlyuk (12):\n  eal: replace rte_page_sizes with a set of constants\n  eal: introduce internal wrappers for file operations\n  eal: introduce memory management wrappers\n  eal/mem: extract common code for memseg list initialization\n  eal/mem: extract common code for dynamic memory allocation\n  trace: add size_t field emitter\n  eal/windows: add tracing support stubs\n  eal/windows: replace sys/queue.h with a complete one from FreeBSD\n  eal/windows: improve CPU and NUMA node detection\n  doc/windows: split build and run instructions\n  eal/windows: initialize hugepage info\n  eal/windows: implement basic memory management\n\n MAINTAINERS                                   |   7 +\n config/meson.build                            |  12 +-\n doc/guides/rel_notes/release_20_08.rst        |   2 +\n doc/guides/windows_gsg/build_dpdk.rst         |  20 -\n doc/guides/windows_gsg/index.rst              |   1 +\n doc/guides/windows_gsg/run_apps.rst           |  95 +++\n lib/librte_eal/common/eal_common_dynmem.c     | 521 +++++++++++++\n lib/librte_eal/common/eal_common_fbarray.c    |  71 +-\n lib/librte_eal/common/eal_common_memory.c     | 157 +++-\n lib/librte_eal/common/eal_common_thread.c     |   5 +-\n lib/librte_eal/common/eal_private.h           | 254 ++++++-\n lib/librte_eal/common/meson.build             |  16 +\n lib/librte_eal/common/rte_malloc.c            |   1 +\n lib/librte_eal/freebsd/Makefile               |   5 +\n lib/librte_eal/freebsd/eal_memory.c           | 102 +--\n lib/librte_eal/include/rte_eal_paging.h       |  98 +++\n lib/librte_eal/include/rte_eal_trace.h        |   8 +-\n lib/librte_eal/include/rte_memory.h           |  23 +-\n lib/librte_eal/include/rte_trace_point.h      |   3 +\n lib/librte_eal/linux/Makefile                 |   6 +\n lib/librte_eal/linux/eal_memalloc.c           |   5 +-\n lib/librte_eal/linux/eal_memory.c             | 617 +--------------\n lib/librte_eal/meson.build                    |   4 +\n lib/librte_eal/rte_eal_exports.def            | 119 +++\n lib/librte_eal/rte_eal_version.map            |   9 +\n lib/librte_eal/unix/eal_file.c                |  80 ++\n lib/librte_eal/unix/eal_unix_memory.c         | 152 ++++\n lib/librte_eal/unix/meson.build               |   7 +\n lib/librte_eal/windows/eal.c                  | 114 ++-\n lib/librte_eal/windows/eal_file.c             | 125 +++\n lib/librte_eal/windows/eal_hugepages.c        | 108 +++\n lib/librte_eal/windows/eal_lcore.c            | 205 +++--\n lib/librte_eal/windows/eal_memalloc.c         | 441 +++++++++++\n lib/librte_eal/windows/eal_memory.c           | 710 ++++++++++++++++++\n lib/librte_eal/windows/eal_mp.c               | 103 +++\n lib/librte_eal/windows/eal_windows.h          |  90 ++-\n lib/librte_eal/windows/include/meson.build    |   1 +\n lib/librte_eal/windows/include/rte_os.h       |  17 +\n .../windows/include/rte_virt2phys.h           |  34 +\n lib/librte_eal/windows/include/rte_windows.h  |   2 +\n lib/librte_eal/windows/include/sys/queue.h    | 663 ++++++++++++++--\n lib/librte_eal/windows/include/unistd.h       |   3 +\n lib/librte_eal/windows/meson.build            |   7 +\n lib/librte_mempool/rte_mempool_trace.h        |  10 +-\n 44 files changed, 4088 insertions(+), 945 deletions(-)\n create mode 100644 doc/guides/windows_gsg/run_apps.rst\n create mode 100644 lib/librte_eal/common/eal_common_dynmem.c\n create mode 100644 lib/librte_eal/include/rte_eal_paging.h\n create mode 100644 lib/librte_eal/unix/eal_file.c\n create mode 100644 lib/librte_eal/unix/eal_unix_memory.c\n create mode 100644 lib/librte_eal/unix/meson.build\n create mode 100644 lib/librte_eal/windows/eal_file.c\n create mode 100644 lib/librte_eal/windows/eal_hugepages.c\n create mode 100644 lib/librte_eal/windows/eal_memalloc.c\n create mode 100644 lib/librte_eal/windows/eal_memory.c\n create mode 100644 lib/librte_eal/windows/eal_mp.c\n create mode 100644 lib/librte_eal/windows/include/rte_virt2phys.h"
}