On 6/14/2020 5:43 PM, Dmitry Kozlyuk wrote:
Note for v9:
rte_eal_memory.h renamed, dependent patchsets have to be updated.

This patchset implements basic MM with the following features:

* Hugepages are dynamically allocated in user-mode.
* Only 2MB hugepages are supported.
* IOVA is always PA, obtained through kernel-mode driver.
* No 32-bit support (presumably not demanded).
* Ni multi-process support (it is forcefully disabled).
* No-huge mode for testing without IOVA is available.

Testing revealed Windows Server 2019 does not allow allocating hugepage
memory at a reserved address, despite advertised API.  So allocator has
to temporary free the region to be allocated.  This creates in inherent
race condition. This issue is being discussed with Microsoft privately.

New EAL public functions for memory mapping are introduced to mitigate
OS differences in DPDK libraries and applications: rte_mem_map,
rte_mem_unmap, rte_mem_lock, rte_mem_page_size.

To support common MM routines, internal wrappers for low-level memory
reservation and file management are introduced. These changes affect
Linux and FreeBSD EAL. Shared code is placed unded /unix/ subdirectory
(suggested by Thomas).

To avoid code duplication between Linux and Windows EAL, common code
for EALs supporting dynamic memory allocation is extracted
(discussed with Anatoly Burakov in v4 thread). This is a separate
patch to ease the review, but it can be merged with the previous one.

EAL tracepoints save size_t values as long, which is invalid on Windows.
New size_t emitter for tracepoints is introduced (suggested by Jerin
Jacob to Fady Bader, see [1]). Also, to avoid workaround in every file
using the tracepoints, stubs are added to Windows EAL.

Entire <sys/queue.h> is imported from FreeBSD, replacing existing
partial import. There is already a license exception for this file.
The file is imported as-is, so it causes a bunch of checkpatch warnings.

[1]: http://mails.dpdk.org/archives/dev/2020-May/168076.html

---

v9:
     * Fix build on 32-bit and FreeBSD.
     * Rename rte_eal_memory.h to rte_eal_paging.h.
     * Do not use rte_panic() in library code.
     * Fix typos, comments, string formatting.
     * Split documentation commits.

Great work on this, Dmitry!

I know the patch has already been applied, but:

Acked-by: Ranjit Menon <ranjit.me...@intel.com>


Reply via email to