Skip to content

Memory Hotplug for DPDK

Anatoly Burakov dpdk-dev 6 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v6 Latest70 patches 11 repliesIn review
  2. v570 patches 3 repliesSuperseded
  3. v470 patches 5 repliesSuperseded
Earlier versions · 3
VersionPostedPatchesRepliesStatus
v368 patches14 repliesSuperseded
v241 patches33 repliesSuperseded
v141 patches32 repliesSuperseded

Changes in v6 from the cover letter

- Compile fix in bnx2x
- Added PPC64 DMA window creation to appropriate patch
- C++-tyle comment fixes
- Commit message renames to be more specific about affected areas

Patches in v6 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/70eal: move get_virtual_area out of linuxapp eal_memory.clib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/eal_private.h lib/librte_eal/linuxapp/eal/eal_memory.c+161 -1100 replies
2/70malloc: move all locking to heaplib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_heap.c lib/librte_eal/common/malloc_heap.h +1 more+48 -160 replies
3/70malloc: make heap a doubly-linked listlib/librte_eal/common/include/rte_malloc_heap.h lib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h +1 more+179 -490 replies
4/70malloc: add function to dump heap contentslib/librte_eal/common/include/rte_malloc.h lib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h +4 more+83 -00 replies
5/70test: add command to dump malloc heap contentstest/test/commands.c+3 -00 replies
6/70malloc: make malloc_elem_join_adjacent_free publiclib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h+6 -30 replies
7/70malloc: make elem_free_list_remove publiclib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h+9 -60 replies
8/70malloc: make free return resulting elementlib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h lib/librte_eal/common/malloc_heap.c+5 -50 replies
9/70malloc: replace panics with error messageslib/librte_eal/common/rte_malloc.c+5 -30 replies
10/70malloc: add support for contiguous allocationlib/librte_eal/common/eal_common_memzone.c lib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h +3 more+133 -430 replies
11/70memzone: enable reserving IOVA-contiguous memzoneslib/librte_eal/common/eal_common_memzone.c lib/librte_eal/common/include/rte_memzone.h+28 -80 replies
12/70ethdev: use contiguous allocation for DMA memorylib/librte_ether/rte_ethdev.c+2 -10 replies
13/70crypto/qat: use contiguous allocation for DMA memorydrivers/crypto/qat/qat_qp.c+2 -210 replies
14/70net/avf: use contiguous allocation for DMA memorydrivers/net/avf/avf_ethdev.c+2 -20 replies
15/70net/bnx2x: use contiguous allocation for DMA memorydrivers/net/bnx2x/bnx2x.c drivers/net/bnx2x/bnx2x_rxtx.c+4 -30 replies
16/70net/bnxt: use contiguous allocation for DMA memorydrivers/net/bnxt/bnxt_ethdev.c drivers/net/bnxt/bnxt_ring.c drivers/net/bnxt/bnxt_vnic.c+19 -150 replies
17/70net/cxgbe: use contiguous allocation for DMA memorydrivers/net/cxgbe/sge.c+2 -10 replies
18/70net/ena: use contiguous allocation for DMA memorydrivers/net/ena/base/ena_plat_dpdk.h+6 -30 replies
19/70net/enic: use contiguous allocation for DMA memorydrivers/net/enic/enic_main.c+4 -50 replies
20/70net/i40e: use contiguous allocation for DMA memorydrivers/net/i40e/i40e_ethdev.c drivers/net/i40e/i40e_rxtx.c+4 -40 replies
21/70net/qede: use contiguous allocation for DMA memorydrivers/net/qede/base/bcm_osal.c+4 -30 replies
22/70net/virtio: use contiguous allocation for DMA memorydrivers/net/virtio/virtio_ethdev.c+4 -40 replies
23/70net/vmxnet3: use contiguous allocation for DMA memorydrivers/net/vmxnet3/vmxnet3_ethdev.c+3 -20 replies
24/70mempool: add support for the new allocation methodslib/librte_mempool/rte_mempool.c+127 -214 replies
25/70eal: add function to walk all memsegslib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/include/rte_memory.h lib/librte_eal/rte_eal_version.map+47 -00 replies
26/70bus/fslmc: use memseg walk instead of iterationdrivers/bus/fslmc/fslmc_vfio.c+41 -370 replies
27/70bus/pci: use memseg walk instead of iterationdrivers/bus/pci/Makefile drivers/bus/pci/linux/pci.c drivers/bus/pci/meson.build+20 -120 replies
28/70net/mlx5: use memseg walk instead of iterationdrivers/net/mlx5/Makefile drivers/net/mlx5/mlx5.c+18 -90 replies
29/70eal: use memseg walk instead of iterationlib/librte_eal/bsdapp/eal/eal.c lib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/malloc_heap.c +1 more+81 -660 replies
30/70mempool: use memseg walk instead of iterationlib/librte_mempool/Makefile lib/librte_mempool/meson.build lib/librte_mempool/rte_mempool.c+18 -120 replies
31/70test: use memseg walk instead of iterationtest/test/test_malloc.c test/test/test_memory.c test/test/test_memzone.c+74 -420 replies
32/70vfio/type1: use memseg walk instead of iterationlib/librte_eal/linuxapp/eal/eal_vfio.c+21 -240 replies
33/70vfio/spapr: use memseg walk instead of iterationlib/librte_eal/linuxapp/eal/eal_vfio.c+63 -450 replies
34/70eal: add contig walk functionlib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/include/rte_memory.h lib/librte_eal/rte_eal_version.map+65 -00 replies
35/70virtio: use memseg contig walk instead of iterationdrivers/net/virtio/virtio_user/vhost_kernel.c+35 -480 replies
36/70eal: add iova2virt functionlib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/include/rte_memory.h lib/librte_eal/rte_eal_version.map+43 -00 replies
37/70bus/dpaa: use iova2virt instead of memseg iterationdrivers/bus/dpaa/rte_dpaa_bus.h drivers/mempool/dpaa/Makefile drivers/mempool/dpaa/meson.build +1 more+10 -110 replies
38/70bus/fslmc: use iova2virt instead of memseg iterationdrivers/bus/fslmc/portal/dpaa2_hw_pvt.h drivers/event/dpaa2/Makefile drivers/mempool/dpaa2/Makefile +3 more+16 -120 replies
39/70crypto/dpaa_sec: use iova2virt instead of memseg iterationdrivers/crypto/dpaa_sec/dpaa_sec.c+1 -100 replies
40/70eal: add virt2memseg functionlib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/include/rte_memory.h lib/librte_eal/rte_eal_version.map+49 -00 replies
41/70bus/fslmc: use virt2memseg instead of iterationdrivers/bus/fslmc/portal/dpaa2_hw_pvt.h+4 -100 replies
42/70crypto/dpaa_sec: use virt2memseg instead of iterationdrivers/crypto/dpaa_sec/dpaa_sec.c+5 -140 replies
43/70net/mlx4: use virt2memseg instead of iterationdrivers/net/mlx4/mlx4_mr.c+7 -110 replies
44/70net/mlx5: use virt2memseg instead of iterationdrivers/net/mlx5/mlx5_mr.c+8 -113 replies
45/70memzone: use walk instead of iteration for dumpinglib/librte_eal/common/eal_common_memzone.c+21 -210 replies
46/70vfio: allow to map other memory regionslib/librte_eal/bsdapp/eal/eal.c lib/librte_eal/common/include/rte_vfio.h lib/librte_eal/linuxapp/eal/eal_vfio.c +2 more+705 -740 replies
47/70eal: add legacy memory optionlib/librte_eal/bsdapp/eal/eal.c lib/librte_eal/common/eal_common_options.c lib/librte_eal/common/eal_internal_cfg.h +3 more+38 -40 replies
48/70eal: add shared indexed file-backed arraylib/librte_eal/bsdapp/eal/Makefile lib/librte_eal/common/Makefile lib/librte_eal/common/eal_common_fbarray.c +5 more+1246 -10 replies
49/70eal: replace memseg with memseg listsconfig/common_base config/defconfig_i686-native-linuxapp-gcc config/defconfig_i686-native-linuxapp-icc +34 more+1587 -5900 replies
50/70eal: replace memzone array with fbarraydrivers/net/ena/Makefile drivers/net/ena/ena_ethdev.c lib/librte_eal/bsdapp/eal/eal.c +5 more+103 -670 replies
51/70mem: add support for mapping hugepages at runtimelib/librte_eal/bsdapp/eal/Makefile lib/librte_eal/bsdapp/eal/eal_memalloc.c lib/librte_eal/bsdapp/eal/meson.build +4 more+491 -03 replies
52/70mem: add support for unmapping pages at runtimelib/librte_eal/bsdapp/eal/eal_memalloc.c lib/librte_eal/common/eal_memalloc.h lib/librte_eal/linuxapp/eal/eal_memalloc.c+176 -10 replies
53/70eal: add single file segments command-line optionlib/librte_eal/common/eal_common_options.c lib/librte_eal/common/eal_internal_cfg.h lib/librte_eal/common/eal_options.h +2 more+297 -510 replies
54/70mem: add internal API to check if memory is contiguouslib/librte_eal/bsdapp/eal/Makefile lib/librte_eal/common/eal_common_memalloc.c lib/librte_eal/common/eal_memalloc.h +3 more+105 -370 replies
55/70mem: prepare memseg lists for multiprocess synclib/librte_eal/bsdapp/eal/eal_memalloc.c lib/librte_eal/common/eal_memalloc.h lib/librte_eal/common/include/rte_eal_memconfig.h +1 more+262 -00 replies
56/70eal: read hugepage counts from node-specific sysfs pathlib/librte_eal/linuxapp/eal/eal_hugepage_info.c+74 -60 replies
57/70eal: make use of memory hotplug for initlib/librte_eal/linuxapp/eal/eal_memory.c+59 -30 replies
58/70eal: share hugepage info primary and secondarylib/librte_eal/bsdapp/eal/eal.c lib/librte_eal/bsdapp/eal/eal_hugepage_info.c lib/librte_eal/bsdapp/eal/eal_memory.c +7 more+217 -670 replies
59/70eal: add secondary process init with memory hotpluglib/librte_eal/common/eal_common_memory.c lib/librte_eal/linuxapp/eal/eal_memory.c+16 -30 replies
60/70malloc: enable memory hotplug supportlib/librte_eal/common/eal_common_memzone.c lib/librte_eal/common/malloc_elem.c lib/librte_eal/common/malloc_elem.h +3 more+439 -640 replies
61/70malloc: add support for multiprocess memory hotpluglib/librte_eal/bsdapp/eal/Makefile lib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/include/rte_eal_memconfig.h +6 more+1126 -640 replies
62/70malloc: add support for callbacks on memory eventslib/librte_eal/common/eal_common_memalloc.c lib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/eal_memalloc.h +2 more+245 -00 replies
63/70malloc: enable callbacks on alloc/free and mp synclib/librte_eal/common/malloc_heap.c lib/librte_eal/linuxapp/eal/eal_memalloc.c lib/librte_eal/linuxapp/eal/eal_vfio.c+64 -20 replies
64/70vfio: enable support for mem event callbackslib/librte_eal/linuxapp/eal/eal_vfio.c+138 -190 replies
65/70bus/fslmc: move vfio DMA map into bus probedrivers/bus/fslmc/fslmc_bus.c drivers/bus/fslmc/fslmc_vfio.c drivers/net/dpaa2/dpaa2_ethdev.c+11 -70 replies
66/70bus/fslmc: enable support for mem event callbacks for vfiodrivers/bus/fslmc/fslmc_vfio.c+135 -180 replies
67/70eal: enable non-legacy memory modelib/librte_eal/linuxapp/eal/eal.c+0 -20 replies
68/70eal: add memory validator callbacklib/librte_eal/common/eal_common_memalloc.c lib/librte_eal/common/eal_common_memory.c lib/librte_eal/common/eal_memalloc.h +2 more+238 -10 replies
69/70malloc: enable validation before new page allocationlib/librte_eal/common/malloc_heap.c+9 -10 replies
70/70mem: prevent preallocated pages from being freedlib/librte_eal/common/include/rte_memory.h lib/librte_eal/common/malloc_heap.c lib/librte_eal/linuxapp/eal/eal_memalloc.c +1 more+48 -30 replies

Reviews trailers per patch

7 of 70 patches have a Reviewed-by or Acked-by.

PatchSantosh ShuklaHemant AgrawalGowrishankar MuthukrishnanFiona TraheHarish PatilJohn DaleyVenkatesh SrinivasMaxime CoquelinShreyansh JainMichal KrawczykOlivier Matz
SeriesT-b T-b T-b
1/70T-b T-b T-b
2/70T-b T-b T-b
3/70T-b T-b T-b
4/70T-b T-b T-b
5/70T-b T-b T-b
6/70T-b T-b T-b
7/70T-b T-b T-b
8/70T-b T-b T-b
9/70T-b T-b T-b
10/70T-b T-b T-b
11/70T-b T-b T-b
12/70T-b T-b T-b
13/70T-b T-b T-b A-b
14/70T-b T-b T-b
15/70T-b T-b T-b
16/70T-b T-b T-b
17/70T-b T-b T-b
18/70T-b T-b T-b A-b
19/70T-b T-b T-b A-b
20/70T-b T-b T-b
21/70T-b T-b T-b A-b
22/70T-b T-b T-b R-b R-b
23/70T-b T-b T-b
24/70T-b T-b T-b A-b A-b
25/70T-b T-b T-b
26/70T-b T-b T-b A-b
27/70T-b T-b T-b
28/70T-b T-b T-b
29/70T-b T-b T-b
30/70T-b T-b T-b
31/70T-b T-b T-b
32/70T-b T-b T-b
33/70T-b T-b T-b
34/70T-b T-b T-b
35/70T-b T-b T-b
36/70T-b T-b T-b
37/70T-b T-b T-b
38/70T-b T-b T-b
39/70T-b T-b T-b
40/70T-b T-b T-b
41/70T-b T-b T-b
42/70T-b T-b T-b
43/70T-b T-b T-b
44/70T-b T-b T-b
45/70T-b T-b T-b
46/70T-b T-b T-b
47/70T-b T-b T-b
48/70T-b T-b T-b
49/70T-b T-b T-b
50/70T-b T-b T-b
51/70T-b T-b T-b
52/70T-b T-b T-b
53/70T-b T-b T-b
54/70T-b T-b T-b
55/70T-b T-b T-b
56/70T-b T-b T-b
57/70T-b T-b T-b
58/70T-b T-b T-b
59/70T-b T-b T-b
60/70T-b T-b T-b
61/70T-b T-b T-b
62/70T-b T-b T-b
63/70T-b T-b T-b
64/70T-b T-b T-b
65/70T-b T-b T-b
66/70T-b T-b T-b
67/70T-b T-b T-b
68/70T-b T-b T-b
69/70T-b T-b T-b
70/70T-b T-b T-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 11 reviewers.

Read the v6 thread

Cover letter [PATCH v6 00/70] Memory Hotplug for DPDK

This patchset introduces dynamic memory allocation for DPDK (aka memory hotplug). Based upon RFC submitted in December [1].

Deprecation notices relevant to this patchset:
- General outline of memory hotplug changes [2]

The vast majority of changes are in the EAL and malloc, the external API disruption is minimal: a new flag is added to memzone API for contiguous memory allocation, a few API additions in rte_memory due to switch to memseg_lists as opposed to memsegs, and a few new convenience API's. Every other API change is internal to EAL, and all of the memory allocation/freeing is handled through rte_malloc, with no externally visible API changes.

Quick outline of all changes done as part of this patchset:

* Malloc heap adjusted to handle holes in address space
* Single memseg list replaced by multiple memseg lists
* VA space for hugepages is preallocated in advance
* Added alloc/free for pages happening as needed on rte_malloc/rte_free
* Added contiguous memory allocation API's for rte_memzone
* Added convenience API calls to walk over memsegs
* Integrated Pawel Wodkowski's patch for registering/unregistering memory with VFIO [3]
* Callbacks for registering memory allocations
* Callbacks for allowing/disallowing allocations above specified limit
* Multiprocess support done via DPDK IPC introduced in 18.02

The biggest difference is a "memseg" now represents a single page (as opposed to being a big contiguous block of pages). As a consequence, both memzones and malloc elements are no longer guaranteed to be physically contiguous, unless the user asks for it at reserve time. To preserve whatever functionality that was dependent on previous behavior, a legacy memory option is also provided, however it is expected (or perhaps vainly hoped) to be temporary solution.

Why multiple memseg lists instead of one? Since memseg is a single page now, the list of memsegs will get quite big, and we need to locate pages somehow when we allocate and free them. We could of course just walk the list and allocate one contiguous chunk of VA space for memsegs, but this implementation uses separate lists instead in order to speed up many operations with memseg lists.

For v6, the following limitations are present:
- VFIO support for multiple processes is not well-tested; work is ongoing to validate VFIO for all use cases
- There are known problems with PPC64 VFIO code, expected to be addressed in separate patches
- For DPAA and FSLMC platforms, performance will be heavily degraded for IOVA as PA cases; separate patches are expected to address the issue

v6:
- Compile fix in bnx2x
- Added PPC64 DMA window creation to appropriate patch
- C++-tyle comment fixes
- Commit message renames to be more specific about affected areas

v5:
- Fixed missing DMA window creation on PPC64 for VFIO
- fslmc VFIO fixes
- Added new user DMA map code to keep track of user DMA maps when hotplug is in use (also used on PPC64 on remap)
- A few checkpatch and commit message fixes here and there

v4:
- Fixed bug in memzone lookup
- Added draft fslmc VFIO code
- Rebased on latest master + dependent patchset
- Documented limitations for *_walk() functions

v3:
- Lots of compile fixes
- Fixes for multiprocess synchronization
- Introduced support for sPAPR IOMMU, courtesy of Gowrishankar @ IBM
- Fixes for mempool size calculation
- Added convenience memseg walk() API's
- Added alloc validation callback

v2: - fixed deadlock at init
- reverted rte_panic changes at init, this is now handled inside IPC

[1] http://dpdk.org/dev/patchwork/bundle/aburakov/Memory_RFC/
[2] http://dpdk.org/dev/patchwork/patch/34002/
[3] http://dpdk.org/dev/patchwork/patch/24484/

Anatoly Burakov (70):
eal: move get_virtual_area out of linuxapp eal_memory.c
malloc: move all locking to heap
malloc: make heap a doubly-linked list
malloc: add function to dump heap contents
test: add command to dump malloc heap contents
malloc: make malloc_elem_join_adjacent_free public
malloc: make elem_free_list_remove public
malloc: make free return resulting element
malloc: replace panics with error messages
malloc: add support for contiguous allocation
memzone: enable reserving IOVA-contiguous memzones
ethdev: use contiguous allocation for DMA memory crypto/qat: use contiguous allocation for DMA memory net/avf: use contiguous allocation for DMA memory net/bnx2x: use contiguous allocation for DMA memory net/bnxt: use contiguous allocation for DMA memory net/cxgbe: use contiguous allocation for DMA memory net/ena: use contiguous allocation for DMA memory net/enic: use contiguous allocation for DMA memory net/i40e: use contiguous allocation for DMA memory net/qede: use contiguous allocation for DMA memory net/virtio: use contiguous allocation for DMA memory net/vmxnet3: use contiguous allocation for DMA memory
mempool: add support for the new allocation methods
eal: add function to walk all memsegs
bus/fslmc: use memseg walk instead of iteration bus/pci: use memseg walk instead of iteration net/mlx5: use memseg walk instead of iteration
eal: use memseg walk instead of iteration
mempool: use memseg walk instead of iteration
test: use memseg walk instead of iteration vfio/type1: use memseg walk instead of iteration vfio/spapr: use memseg walk instead of iteration
eal: add contig walk function
virtio: use memseg contig walk instead of iteration
eal: add iova2virt function
bus/dpaa: use iova2virt instead of memseg iteration bus/fslmc: use iova2virt instead of memseg iteration crypto/dpaa_sec: use iova2virt instead of memseg iteration
eal: add virt2memseg function
bus/fslmc: use virt2memseg instead of iteration crypto/dpaa_sec: use virt2memseg instead of iteration net/mlx4: use virt2memseg instead of iteration net/mlx5: use virt2memseg instead of iteration
memzone: use walk instead of iteration for dumping
vfio: allow to map other memory regions
eal: add legacy memory option
eal: add shared indexed file-backed array
eal: replace memseg with memseg lists
eal: replace memzone array with fbarray
mem: add support for mapping hugepages at runtime
mem: add support for unmapping pages at runtime
eal: add single file segments command-line option
mem: add internal API to check if memory is contiguous
mem: prepare memseg lists for multiprocess sync
eal: read hugepage counts from node-specific sysfs path
eal: make use of memory hotplug for init
eal: share hugepage info primary and secondary
eal: add secondary process init with memory hotplug
malloc: enable memory hotplug support
malloc: add support for multiprocess memory hotplug
malloc: add support for callbacks on memory events
malloc: enable callbacks on alloc/free and mp sync
vfio: enable support for mem event callbacks bus/fslmc: move vfio DMA map into bus probe bus/fslmc: enable support for mem event callbacks for vfio
eal: enable non-legacy memory mode
eal: add memory validator callback
malloc: enable validation before new page allocation
mem: prevent preallocated pages from being freed

 config/common_base                                |   15 +-
 config/defconfig_i686-native-linuxapp-gcc         |    3 +
 config/defconfig_i686-native-linuxapp-icc         |    3 +
 config/defconfig_x86_x32-native-linuxapp-gcc      |    3 +
 config/rte_config.h                               |    7 +-
 doc/guides/rel_notes/deprecation.rst              |    9 -
 drivers/bus/dpaa/rte_dpaa_bus.h                   |   12 +-
 drivers/bus/fslmc/fslmc_bus.c                     |   11 +
 drivers/bus/fslmc/fslmc_vfio.c                    |  195 +++-
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h           |   27 +-
 drivers/bus/pci/Makefile                          |    3 +
 drivers/bus/pci/linux/pci.c                       |   28 +-
 drivers/bus/pci/meson.build                       |    3 +
 drivers/crypto/dpaa_sec/dpaa_sec.c                |   30 +-
 drivers/crypto/qat/qat_qp.c                       |   23 +-
 drivers/event/dpaa2/Makefile                      |    3 +
 drivers/mempool/dpaa/Makefile                     |    3 +
 drivers/mempool/dpaa/meson.build                  |    3 +
 drivers/mempool/dpaa2/Makefile                    |    3 +
 drivers/mempool/dpaa2/meson.build                 |    3 +
 drivers/net/avf/avf_ethdev.c                      |    4 +-
 drivers/net/bnx2x/bnx2x.c                         |    4 +-
 drivers/net/bnx2x/bnx2x_rxtx.c                    |    3 +-
 drivers/net/bnxt/bnxt_ethdev.c                    |   17 +-
 drivers/net/bnxt/bnxt_ring.c                      |    9 +-
 drivers/net/bnxt/bnxt_vnic.c                      |    8 +-
 drivers/net/cxgbe/sge.c                           |    3 +-
 drivers/net/dpaa/Makefile                         |    3 +
 drivers/net/dpaa2/Makefile                        |    3 +
 drivers/net/dpaa2/dpaa2_ethdev.c                  |    1 -
 drivers/net/dpaa2/meson.build                     |    3 +
 drivers/net/ena/Makefile                          |    3 +
 drivers/net/ena/base/ena_plat_dpdk.h              |    9 +-
 drivers/net/ena/ena_ethdev.c                      |   10 +-
 drivers/net/enic/enic_main.c                      |    9 +-
 drivers/net/i40e/i40e_ethdev.c                    |    4 +-
 drivers/net/i40e/i40e_rxtx.c                      |    4 +-
 drivers/net/mlx4/mlx4_mr.c                        |   18 +-
 drivers/net/mlx5/Makefile                         |    3 +
 drivers/net/mlx5/mlx5.c                           |   25 +-
 drivers/net/mlx5/mlx5_mr.c                        |   19 +-
 drivers/net/qede/base/bcm_osal.c                  |    7 +-
 drivers/net/virtio/virtio_ethdev.c                |    8 +-
 drivers/net/virtio/virtio_user/vhost_kernel.c     |   83 +-
 drivers/net/vmxnet3/vmxnet3_ethdev.c              |    5 +-
 lib/librte_eal/bsdapp/eal/Makefile                |    4 +
 lib/librte_eal/bsdapp/eal/eal.c                   |   83 +-
 lib/librte_eal/bsdapp/eal/eal_hugepage_info.c     |   65 +-
 lib/librte_eal/bsdapp/eal/eal_memalloc.c          |   48 +
 lib/librte_eal/bsdapp/eal/eal_memory.c            |  224 +++-
 lib/librte_eal/bsdapp/eal/meson.build             |    1 +
 lib/librte_eal/common/Makefile                    |    2 +-
 lib/librte_eal/common/eal_common_fbarray.c        |  859 ++++++++++++++++
 lib/librte_eal/common/eal_common_memalloc.c       |  359 +++++++
 lib/librte_eal/common/eal_common_memory.c         |  824 ++++++++++++++-
 lib/librte_eal/common/eal_common_memzone.c        |  235 +++--
 lib/librte_eal/common/eal_common_options.c        |   15 +-
 lib/librte_eal/common/eal_filesystem.h            |   30 +
 lib/librte_eal/common/eal_hugepages.h             |   11 +-
 lib/librte_eal/common/eal_internal_cfg.h          |   12 +-
 lib/librte_eal/common/eal_memalloc.h              |   79 ++
 lib/librte_eal/common/eal_options.h               |    4 +
 lib/librte_eal/common/eal_private.h               |   33 +
 lib/librte_eal/common/include/rte_eal_memconfig.h |   28 +-
 lib/librte_eal/common/include/rte_fbarray.h       |  353 +++++++
 lib/librte_eal/common/include/rte_malloc.h        |   10 +
 lib/librte_eal/common/include/rte_malloc_heap.h   |    6 +
 lib/librte_eal/common/include/rte_memory.h        |  258 ++++-
 lib/librte_eal/common/include/rte_memzone.h       |   12 +-
 lib/librte_eal/common/include/rte_vfio.h          |   41 +
 lib/librte_eal/common/malloc_elem.c               |  433 ++++++--
 lib/librte_eal/common/malloc_elem.h               |   43 +-
 lib/librte_eal/common/malloc_heap.c               |  704 ++++++++++++-
 lib/librte_eal/common/malloc_heap.h               |   15 +-
 lib/librte_eal/common/malloc_mp.c                 |  744 ++++++++++++++
 lib/librte_eal/common/malloc_mp.h                 |   86 ++
 lib/librte_eal/common/meson.build                 |    4 +
 lib/librte_eal/common/rte_malloc.c                |   85 +-
 lib/librte_eal/linuxapp/eal/Makefile              |    5 +
 lib/librte_eal/linuxapp/eal/eal.c                 |   62 +-
 lib/librte_eal/linuxapp/eal/eal_hugepage_info.c   |  218 +++-
 lib/librte_eal/linuxapp/eal/eal_memalloc.c        | 1123 +++++++++++++++++++++
 lib/librte_eal/linuxapp/eal/eal_memory.c          | 1120 ++++++++++++--------
 lib/librte_eal/linuxapp/eal/eal_vfio.c            |  870 ++++++++++++++--
 lib/librte_eal/linuxapp/eal/eal_vfio.h            |   12 +
 lib/librte_eal/linuxapp/eal/meson.build           |    1 +
 lib/librte_eal/rte_eal_version.map                |   30 +-
 lib/librte_ether/rte_ethdev.c                     |    3 +-
 lib/librte_mempool/Makefile                       |    3 +
 lib/librte_mempool/meson.build                    |    3 +
 lib/librte_mempool/rte_mempool.c                  |  149 ++-
 test/test/commands.c                              |    3 +
 test/test/test_malloc.c                           |   30 +-
 test/test/test_memory.c                           |   27 +-
 test/test/test_memzone.c                          |   62 +-
 95 files changed, 8797 insertions(+), 1286 deletions(-)
 create mode 100644 lib/librte_eal/bsdapp/eal/eal_memalloc.c
 create mode 100644 lib/librte_eal/common/eal_common_fbarray.c
 create mode 100644 lib/librte_eal/common/eal_common_memalloc.c
 create mode 100644 lib/librte_eal/common/eal_memalloc.h
 create mode 100644 lib/librte_eal/common/include/rte_fbarray.h
 create mode 100644 lib/librte_eal/common/malloc_mp.c
 create mode 100644 lib/librte_eal/common/malloc_mp.h
 create mode 100644 lib/librte_eal/linuxapp/eal/eal_memalloc.c
Signature · 1 line
2.7.4