Cover Detail
Show a cover letter.
GET /api/covers/52235/?format=api
http://patches.dpdk.org/api/covers/52235/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/cover/20190403205041.4651-1-gage.eads@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": "<20190403205041.4651-1-gage.eads@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20190403205041.4651-1-gage.eads@intel.com", "date": "2019-04-03T20:50:33", "name": "[v8,0/8] Add stack library and new mempool handler", "submitter": { "id": 586, "url": "http://patches.dpdk.org/api/people/586/?format=api", "name": "Eads, Gage", "email": "gage.eads@intel.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/cover/20190403205041.4651-1-gage.eads@intel.com/mbox/", "series": [ { "id": 4102, "url": "http://patches.dpdk.org/api/series/4102/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4102", "date": "2019-04-03T20:50:33", "name": "Add stack library and new mempool handler", "version": 8, "mbox": "http://patches.dpdk.org/series/4102/mbox/" } ], "comments": "http://patches.dpdk.org/api/covers/52235/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 B41085F51;\n\tWed, 3 Apr 2019 22:52:55 +0200 (CEST)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby dpdk.org (Postfix) with ESMTP id AADFE5F36\n\tfor <dev@dpdk.org>; Wed, 3 Apr 2019 22:52:54 +0200 (CEST)", "from fmsmga007.fm.intel.com ([10.253.24.52])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Apr 2019 13:52:53 -0700", "from txasoft-yocto.an.intel.com ([10.123.72.192])\n\tby fmsmga007.fm.intel.com with ESMTP; 03 Apr 2019 13:52:53 -0700" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.60,306,1549958400\"; d=\"scan'208\";a=\"139902530\"", "From": "Gage Eads <gage.eads@intel.com>", "To": "dev@dpdk.org", "Cc": "olivier.matz@6wind.com, arybchenko@solarflare.com,\n\tbruce.richardson@intel.com, konstantin.ananyev@intel.com,\n\tgavin.hu@arm.com, \n\tHonnappa.Nagarahalli@arm.com, nd@arm.com, thomas@monjalon.net", "Date": "Wed, 3 Apr 2019 15:50:33 -0500", "Message-Id": "<20190403205041.4651-1-gage.eads@intel.com>", "X-Mailer": "git-send-email 2.13.6", "In-Reply-To": "<20190403200916.16349-1-gage.eads@intel.com>", "References": "<20190403200916.16349-1-gage.eads@intel.com>", "Subject": "[dpdk-dev] [PATCH v8 0/8] Add stack library and new mempool handler", "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 patchset introduces a stack library, supporting both lock-based and\nlock-free stacks, and a lock-free stack mempool handler.\n\nThe lock-based stack code is derived from the existing stack mempool handler,\nand that handler is refactored to use the stack library.\n\nThe lock-free stack mempool handler is intended for usages where the rte\nring's \"non-preemptive\" constraint is not acceptable; for example, if the\napplication uses a mixture of pinned high-priority threads and multiplexed\nlow-priority threads that share a mempool.\n\nNote that the lock-free algorithm relies on a 128-bit compare-and-swap[1],\nso it is currently limited to the x86_64 platform.\n\nThis patchset is the successor to a patchset containing only the new mempool\nhandler[2].\n\n[1] http://mails.dpdk.org/archives/dev/2019-April/129014.html\n[2] http://mails.dpdk.org/archives/dev/2019-January/123555.html\n\n---\nv8:\n- Add rte_debug.h include to rte_stack.h for RTE_ASSERT()\n\nv7:\n- Add rte_branch_prediction.h include to rte_stack_std.h for unlikely()\n- Add rte_compat.h include to rte_stack.h for __rte_experimental\n\nv6:\n- Add load-acquire fence to the lock-free push function\n- Correct generic implementation's pop_elems 128b CAS success and failure\n memorder to match those in the C11 implementation.\n\nv5:\n- Add comment to explain padding in *_get_memsize() functions\n- Prefix internal functions with '__'\n- Use RTE_ASSERT for performance critical run-time checks\n- Don't use __atomic_load in the C11 pop_elems function, and put an acquire\n thread fence at the start of the 2nd do-while loop\n- Change pop_elems 128b CAS success memorder to RELEASE and failure memorder to\n RELAXED\n- Change compile-time assertion to run for all 64-bit architectures\n- Reorganize the code with standard and lock-free .c and .h files\n\nv4:\n- Fix 32-bit build error in test_stack.c by using %zu format specifier for\n size_t\n- Rebase onto master\n\nv3:\n- Rebase patchset onto master (test/test/ -> app/test/)\n- Fix rte_stack_std_push() segfault introduced in v2\n\nv2:\n- Reworked structure and function naming to use rte_stack_{std, lf}_...\n- Updated to the latest rte_atomic128_cmp_exchange() interface.\n- Rename STACK_F_NB -> RTE_STACK_F_LF.\n- Remove rte_rmb() and rte_wmb() from the generic push and pop implementations.\n These are obviated by rte_atomic128_cmp_exchange()'s two memorder arguments.\n- Edit stack_lib.rst text to 80 chars/line.\n- Fix rte_stack.h doxygen formatting.\n- Allocate popped_objs array from the heap\n- Fix stack_thread_push_pop bug (\"&t->sz\" -> \"t->sz\")\n- Remove unnecessary NULL check from test_stack_basic\n- Properly terminate the name string in test_stack_name_length\n- Add an empty array of struct rte_nb_lifo_elem elements\n- In rte_nb_lifo_push(), retrieve the last element from __nb_lifo_pop()\n- Split C11 implementation into a separate patchset\n\nGage Eads (8):\n stack: introduce rte stack library\n mempool/stack: convert mempool to use rte stack\n test/stack: add stack test\n test/stack: add stack perf test\n stack: add lock-free stack implementation\n stack: add C11 atomic implementation\n test/stack: add lock-free stack tests\n mempool/stack: add lock-free stack mempool handler\n\n MAINTAINERS | 9 +-\n app/test/Makefile | 3 +\n app/test/meson.build | 7 +\n app/test/test_stack.c | 423 ++++++++++++++++++++++++\n app/test/test_stack_perf.c | 356 ++++++++++++++++++++\n config/common_base | 5 +\n doc/api/doxy-api-index.md | 1 +\n doc/api/doxy-api.conf.in | 1 +\n doc/guides/prog_guide/env_abstraction_layer.rst | 10 +\n doc/guides/prog_guide/index.rst | 1 +\n doc/guides/prog_guide/stack_lib.rst | 83 +++++\n doc/guides/rel_notes/release_19_05.rst | 13 +\n drivers/mempool/stack/Makefile | 3 +-\n drivers/mempool/stack/meson.build | 6 +-\n drivers/mempool/stack/rte_mempool_stack.c | 115 +++----\n lib/Makefile | 2 +\n lib/librte_stack/Makefile | 29 ++\n lib/librte_stack/meson.build | 12 +\n lib/librte_stack/rte_stack.c | 196 +++++++++++\n lib/librte_stack/rte_stack.h | 261 +++++++++++++++\n lib/librte_stack/rte_stack_lf.c | 31 ++\n lib/librte_stack/rte_stack_lf.h | 106 ++++++\n lib/librte_stack/rte_stack_lf_c11.h | 175 ++++++++++\n lib/librte_stack/rte_stack_lf_generic.h | 164 +++++++++\n lib/librte_stack/rte_stack_pvt.h | 34 ++\n lib/librte_stack/rte_stack_std.c | 26 ++\n lib/librte_stack/rte_stack_std.h | 121 +++++++\n lib/librte_stack/rte_stack_version.map | 9 +\n lib/meson.build | 2 +-\n mk/rte.app.mk | 1 +\n 30 files changed, 2133 insertions(+), 72 deletions(-)\n create mode 100644 app/test/test_stack.c\n create mode 100644 app/test/test_stack_perf.c\n create mode 100644 doc/guides/prog_guide/stack_lib.rst\n create mode 100644 lib/librte_stack/Makefile\n create mode 100644 lib/librte_stack/meson.build\n create mode 100644 lib/librte_stack/rte_stack.c\n create mode 100644 lib/librte_stack/rte_stack.h\n create mode 100644 lib/librte_stack/rte_stack_lf.c\n create mode 100644 lib/librte_stack/rte_stack_lf.h\n create mode 100644 lib/librte_stack/rte_stack_lf_c11.h\n create mode 100644 lib/librte_stack/rte_stack_lf_generic.h\n create mode 100644 lib/librte_stack/rte_stack_pvt.h\n create mode 100644 lib/librte_stack/rte_stack_std.c\n create mode 100644 lib/librte_stack/rte_stack_std.h\n create mode 100644 lib/librte_stack/rte_stack_version.map" }{ "id": 52235, "url": "