From: Steven Lariau <steven.lariau@arm.com> To: Gage Eads <gage.eads@intel.com>, Olivier Matz <olivier.matz@6wind.com> Cc: dev@dpdk.org, nd@arm.com, dharmik.thakkar@arm.com, Steven Lariau <steven.lariau@arm.com> Subject: [dpdk-dev] [PATCH 3/5] lib/stack: remove redundant orderings for list->len Date: Fri, 11 Sep 2020 16:29:36 +0100 Message-ID: <20200911152938.8019-4-steven.lariau@arm.com> (raw) In-Reply-To: <20200911152938.8019-1-steven.lariau@arm.com> The load-acquire of list->len on pop function is redundant. Only the CAS success needs to be load-acquire. It synchronizes with the store release in push, to ensure that the updated head is visible when the new length is visible. Without this, one thread in pop could see the increased length but the old list, which doesn't have enough items yet for pop to succeed. Signed-off-by: Steven Lariau <steven.lariau@arm.com> Reviewed-by: Dharmik Thakkar <dharmik.thakkar@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> --- lib/librte_stack/rte_stack_lf_c11.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/librte_stack/rte_stack_lf_c11.h b/lib/librte_stack/rte_stack_lf_c11.h index 82b7287f1..2bc639419 100644 --- a/lib/librte_stack/rte_stack_lf_c11.h +++ b/lib/librte_stack/rte_stack_lf_c11.h @@ -80,7 +80,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list, int success; /* Reserve num elements, if available */ - len = __atomic_load_n(&list->len, __ATOMIC_ACQUIRE); + len = __atomic_load_n(&list->len, __ATOMIC_RELAXED); while (1) { /* Does the list contain enough elements? */ @@ -91,7 +91,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list, if (__atomic_compare_exchange_n(&list->len, &len, len - num, 1, __ATOMIC_ACQUIRE, - __ATOMIC_ACQUIRE)) + __ATOMIC_RELAXED)) break; } -- 2.17.1
next prev parent reply other threads:[~2020-09-11 15:31 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-11 15:29 [dpdk-dev] [PATCH 0/5] lib/stack: improve lockfree C11 implementation Steven Lariau 2020-09-11 15:29 ` [dpdk-dev] [PATCH 1/5] lib/stack: fix inconsistent weak / strong cas Steven Lariau 2020-09-21 17:16 ` Eads, Gage 2020-09-11 15:29 ` [dpdk-dev] [PATCH 2/5] lib/stack: remove push acquire fence Steven Lariau 2020-09-21 17:16 ` Eads, Gage 2020-09-11 15:29 ` Steven Lariau [this message] 2020-09-21 17:16 ` [dpdk-dev] [PATCH 3/5] lib/stack: remove redundant orderings for list->len Eads, Gage 2020-09-11 15:29 ` [dpdk-dev] [PATCH 4/5] lib/stack: reload head when pop fails Steven Lariau 2020-09-21 17:16 ` Eads, Gage 2020-09-11 15:29 ` [dpdk-dev] [PATCH 5/5] lib/stack: remove pop cas release ordering Steven Lariau 2020-09-21 17:17 ` Eads, Gage 2020-09-25 14:27 ` David Marchand 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 0/5] lib/stack: improve lockfree C11 implementation Steven Lariau 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 1/5] lib/stack: fix inconsistent weak / strong cas Steven Lariau 2020-09-28 10:22 ` David Marchand 2020-09-28 15:58 ` Eads, Gage 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 2/5] lib/stack: remove push acquire fence Steven Lariau 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 3/5] lib/stack: remove redundant orderings for list->len Steven Lariau 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 4/5] lib/stack: reload head when pop fails Steven Lariau 2020-09-25 17:43 ` [dpdk-dev] [PATCH v2 5/5] lib/stack: remove pop cas release ordering Steven Lariau 2020-09-25 17:57 ` Eads, Gage 2020-09-30 19:14 ` [dpdk-dev] [PATCH v2 0/5] lib/stack: improve lockfree C11 implementation David Marchand
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200911152938.8019-4-steven.lariau@arm.com \ --to=steven.lariau@arm.com \ --cc=dev@dpdk.org \ --cc=dharmik.thakkar@arm.com \ --cc=gage.eads@intel.com \ --cc=nd@arm.com \ --cc=olivier.matz@6wind.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git