From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id A034C5A6C for ; Wed, 15 Jul 2015 18:32:36 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 15 Jul 2015 09:32:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,481,1432623600"; d="scan'208";a="765043510" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 15 Jul 2015 09:32:29 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t6FGWTqK002507 for ; Wed, 15 Jul 2015 17:32:29 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id t6FGWSfk000627 for ; Wed, 15 Jul 2015 17:32:28 +0100 Received: (from smonroy@localhost) by sivswdev02.ir.intel.com with id t6FGWSod000623 for dev@dpdk.org; Wed, 15 Jul 2015 17:32:28 +0100 From: Sergio Gonzalez Monroy To: dev@dpdk.org Date: Wed, 15 Jul 2015 17:32:19 +0100 Message-Id: <1436977948-589-1-git-send-email-sergio.gonzalez.monroy@intel.com> X-Mailer: git-send-email 1.8.5.4 In-Reply-To: <1436948793-12867-1-git-send-email-sergio.gonzalez.monroy@intel.com> References: <1436948793-12867-1-git-send-email-sergio.gonzalez.monroy@intel.com> Subject: [dpdk-dev] [PATCH v10 0/9] Dynamic memzones X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jul 2015 16:32:37 -0000 Current implemetation allows reserving/creating memzones but not the opposite (unreserve/free). This affects mempools and other memzone based objects. >>From my point of view, implementing free functionality for memzones would look like malloc over memsegs. Thus, this approach moves malloc inside eal (which in turn removes a circular dependency), where malloc heaps are composed of memsegs. We keep both malloc and memzone APIs as they are, but memzones allocate its memory by calling malloc_heap_alloc. Some extra functionality is required in malloc to allow for boundary constrained memory requests. In summary, currently malloc is based on memzones, and with this approach memzones are based on malloc. v10: - Convert PNG to SVG - Fix issue with --no-huge by forcing SOCKET_ID_ANY - Rework some parts of the code v9: - Fix incorrect size_t type that results in 32bits compilation error. v8: - Rebase against current HEAD to factor for changes made by new Tile-Gx arch v7: - Create a separated maintainer section for memory allocation v6: - Fix bad patch for rte_memzone_free v5: - Fix rte_memzone_free - Improve rte_memzone_free unit test v4: - Rebase and fix couple of merge issues v3: - Create dummy librte_malloc - Add deprecation notice - Rework some of the code - Doc update - checkpatch v2: - New rte_memzone_free - Support memzone len = 0 - Add all available memsegs to malloc heap at init - Update memzone/malloc unit tests v6 Acked-by: Konstantin Ananyev Sergio Gonzalez Monroy (9): eal: move librte_malloc to eal/common eal: memzone allocated by malloc app/test: update malloc/memzone unit tests config: remove CONFIG_RTE_MALLOC_MEMZONE_SIZE eal: remove free_memseg and references to it eal: new rte_memzone_free app/test: rte_memzone_free unit test doc: announce ABI change of librte_malloc doc: update malloc documentation MAINTAINERS | 22 +- app/test/test_malloc.c | 86 -- app/test/test_memzone.c | 456 ++------- config/common_bsdapp | 8 +- config/common_linuxapp | 8 +- doc/guides/prog_guide/env_abstraction_layer.rst | 220 ++++- doc/guides/prog_guide/img/malloc_heap.png | Bin 81329 -> 0 bytes doc/guides/prog_guide/img/malloc_heap.svg | 1018 +++++++++++++++++++++ doc/guides/prog_guide/index.rst | 1 - doc/guides/prog_guide/malloc_lib.rst | 233 ----- doc/guides/prog_guide/overview.rst | 11 +- doc/guides/rel_notes/abi.rst | 6 +- drivers/net/af_packet/Makefile | 1 - drivers/net/bonding/Makefile | 1 - drivers/net/e1000/Makefile | 2 +- drivers/net/enic/Makefile | 2 +- drivers/net/fm10k/Makefile | 2 +- drivers/net/i40e/Makefile | 2 +- drivers/net/ixgbe/Makefile | 2 +- drivers/net/mlx4/Makefile | 1 - drivers/net/null/Makefile | 1 - drivers/net/pcap/Makefile | 1 - drivers/net/virtio/Makefile | 2 +- drivers/net/vmxnet3/Makefile | 2 +- drivers/net/xenvirt/Makefile | 2 +- lib/Makefile | 2 +- lib/librte_acl/Makefile | 2 +- lib/librte_eal/bsdapp/eal/Makefile | 4 +- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 19 + lib/librte_eal/common/Makefile | 1 + lib/librte_eal/common/eal_common_memzone.c | 352 +++---- lib/librte_eal/common/include/rte_eal_memconfig.h | 5 +- lib/librte_eal/common/include/rte_malloc.h | 342 +++++++ lib/librte_eal/common/include/rte_malloc_heap.h | 3 +- lib/librte_eal/common/include/rte_memzone.h | 11 + lib/librte_eal/common/malloc_elem.c | 344 +++++++ lib/librte_eal/common/malloc_elem.h | 192 ++++ lib/librte_eal/common/malloc_heap.c | 227 +++++ lib/librte_eal/common/malloc_heap.h | 70 ++ lib/librte_eal/common/rte_malloc.c | 262 ++++++ lib/librte_eal/linuxapp/eal/Makefile | 4 +- lib/librte_eal/linuxapp/eal/eal_ivshmem.c | 17 +- lib/librte_eal/linuxapp/eal/eal_memory.c | 2 +- lib/librte_eal/linuxapp/eal/rte_eal_version.map | 19 + lib/librte_hash/Makefile | 2 +- lib/librte_lpm/Makefile | 2 +- lib/librte_malloc/Makefile | 6 +- lib/librte_malloc/malloc_elem.c | 320 ------- lib/librte_malloc/malloc_elem.h | 190 ---- lib/librte_malloc/malloc_heap.c | 208 ----- lib/librte_malloc/malloc_heap.h | 70 -- lib/librte_malloc/rte_malloc.c | 228 +---- lib/librte_malloc/rte_malloc.h | 342 ------- lib/librte_malloc/rte_malloc_version.map | 16 - lib/librte_mempool/Makefile | 2 - lib/librte_port/Makefile | 1 - lib/librte_ring/Makefile | 3 +- lib/librte_table/Makefile | 1 - 58 files changed, 2988 insertions(+), 2371 deletions(-) delete mode 100644 doc/guides/prog_guide/img/malloc_heap.png create mode 100755 doc/guides/prog_guide/img/malloc_heap.svg delete mode 100644 doc/guides/prog_guide/malloc_lib.rst create mode 100644 lib/librte_eal/common/include/rte_malloc.h create mode 100644 lib/librte_eal/common/malloc_elem.c create mode 100644 lib/librte_eal/common/malloc_elem.h create mode 100644 lib/librte_eal/common/malloc_heap.c create mode 100644 lib/librte_eal/common/malloc_heap.h create mode 100644 lib/librte_eal/common/rte_malloc.c delete mode 100644 lib/librte_malloc/malloc_elem.c delete mode 100644 lib/librte_malloc/malloc_elem.h delete mode 100644 lib/librte_malloc/malloc_heap.c delete mode 100644 lib/librte_malloc/malloc_heap.h delete mode 100644 lib/librte_malloc/rte_malloc.h -- 1.9.3