* [PATCH 0/5] use rte atomic thread fence @ 2023-11-02 3:04 Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 1/5] distributor: " Tyler Retzlaff ` (7 more replies) 0 siblings, 8 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Replace use of __atomic_thread_fence with __rte_atomic_thread_fence. It may be appropriate to use rte_atomic_thread_fence instead but it will be up to maintainers to evaluate and make the change if appropriate. Tyler Retzlaff (5): distributor: use rte atomic thread fence eal: use rte atomic thread fence hash: use rte atomic thread fence ring: use rte atomic thread fence stack: use rte atomic thread fence lib/distributor/rte_distributor.c | 2 +- lib/eal/common/eal_common_trace.c | 2 +- lib/hash/rte_cuckoo_hash.c | 10 +++++----- lib/ring/rte_ring_c11_pvt.h | 4 ++-- lib/stack/rte_stack_lf_c11.h | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/5] distributor: use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff @ 2023-11-02 3:04 ` Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 2/5] eal: " Tyler Retzlaff ` (6 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Use __rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> --- lib/distributor/rte_distributor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/distributor/rte_distributor.c b/lib/distributor/rte_distributor.c index 2ecb95c..848cf85 100644 --- a/lib/distributor/rte_distributor.c +++ b/lib/distributor/rte_distributor.c @@ -187,7 +187,7 @@ } /* Sync with distributor to acquire retptrs */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); for (i = 0; i < RTE_DIST_BURST_SIZE; i++) /* Switch off the return bit first */ buf->retptr64[i] = 0; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 2/5] eal: use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 1/5] distributor: " Tyler Retzlaff @ 2023-11-02 3:04 ` Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 3/5] hash: " Tyler Retzlaff ` (5 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Use __rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> --- lib/eal/common/eal_common_trace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c index 6ad87fc..4a09cbf 100644 --- a/lib/eal/common/eal_common_trace.c +++ b/lib/eal/common/eal_common_trace.c @@ -526,7 +526,7 @@ rte_trace_mode rte_trace_mode_get(void) /* Add the trace point at tail */ STAILQ_INSERT_TAIL(&tp_list, tp, next); - __atomic_thread_fence(rte_memory_order_release); + __rte_atomic_thread_fence(rte_memory_order_release); /* All Good !!! */ return 0; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 3/5] hash: use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 1/5] distributor: " Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 2/5] eal: " Tyler Retzlaff @ 2023-11-02 3:04 ` Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 4/5] ring: " Tyler Retzlaff ` (4 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Use __rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> --- lib/hash/rte_cuckoo_hash.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/hash/rte_cuckoo_hash.c b/lib/hash/rte_cuckoo_hash.c index b2cf60d..ca350ed 100644 --- a/lib/hash/rte_cuckoo_hash.c +++ b/lib/hash/rte_cuckoo_hash.c @@ -871,7 +871,7 @@ struct rte_hash * /* The store to sig_current should not * move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + __rte_atomic_thread_fence(rte_memory_order_release); } /* Need to swap current/alt sig to allow later @@ -903,7 +903,7 @@ struct rte_hash * /* The store to sig_current should not * move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + __rte_atomic_thread_fence(rte_memory_order_release); } curr_bkt->sig_current[curr_slot] = sig; @@ -1396,7 +1396,7 @@ struct rte_hash * /* The loads of sig_current in search_one_bucket * should not move below the load from tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); /* Re-read the table change counter to check if the * table has changed during search. If yes, re-do * the search. @@ -1625,7 +1625,7 @@ struct rte_hash * /* The store to sig_current should * not move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + __rte_atomic_thread_fence(rte_memory_order_release); } last_bkt->sig_current[i] = NULL_SIGNATURE; rte_atomic_store_explicit(&last_bkt->key_idx[i], @@ -2216,7 +2216,7 @@ struct rte_hash * /* The loads of sig_current in compare_signatures * should not move below the load from tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); /* Re-read the table change counter to check if the * table has changed during search. If yes, re-do * the search. -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 4/5] ring: use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff ` (2 preceding siblings ...) 2023-11-02 3:04 ` [PATCH 3/5] hash: " Tyler Retzlaff @ 2023-11-02 3:04 ` Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 5/5] stack: " Tyler Retzlaff ` (3 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Use __rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> --- lib/ring/rte_ring_c11_pvt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ring/rte_ring_c11_pvt.h b/lib/ring/rte_ring_c11_pvt.h index 5c10ad8..38a003d 100644 --- a/lib/ring/rte_ring_c11_pvt.h +++ b/lib/ring/rte_ring_c11_pvt.h @@ -68,7 +68,7 @@ n = max; /* Ensure the head is read before tail */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); /* load-acquire synchronize with store-release of ht->tail * in update_tail. @@ -145,7 +145,7 @@ n = max; /* Ensure the head is read before tail */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); /* this load-acquire synchronize with store-release of ht->tail * in update_tail. -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 5/5] stack: use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff ` (3 preceding siblings ...) 2023-11-02 3:04 ` [PATCH 4/5] ring: " Tyler Retzlaff @ 2023-11-02 3:04 ` Tyler Retzlaff 2023-11-02 7:42 ` [PATCH 0/5] " Morten Brørup ` (2 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-02 3:04 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, Tyler Retzlaff Use __rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> --- lib/stack/rte_stack_lf_c11.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/stack/rte_stack_lf_c11.h b/lib/stack/rte_stack_lf_c11.h index 9cb6998..0f86434 100644 --- a/lib/stack/rte_stack_lf_c11.h +++ b/lib/stack/rte_stack_lf_c11.h @@ -110,7 +110,7 @@ * elements are properly ordered with respect to the head * pointer read. */ - __atomic_thread_fence(rte_memory_order_acquire); + __rte_atomic_thread_fence(rte_memory_order_acquire); rte_prefetch0(old_head.top); -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH 0/5] use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff ` (4 preceding siblings ...) 2023-11-02 3:04 ` [PATCH 5/5] stack: " Tyler Retzlaff @ 2023-11-02 7:42 ` Morten Brørup 2023-11-08 17:04 ` Thomas Monjalon 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff 7 siblings, 0 replies; 19+ messages in thread From: Morten Brørup @ 2023-11-02 7:42 UTC (permalink / raw) To: Tyler Retzlaff, dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang > From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com] > Sent: Thursday, 2 November 2023 04.04 > > Replace use of __atomic_thread_fence with __rte_atomic_thread_fence. > > It may be appropriate to use rte_atomic_thread_fence instead but it > will be up to maintainers to evaluate and make the change if > appropriate. > > Tyler Retzlaff (5): > distributor: use rte atomic thread fence > eal: use rte atomic thread fence > hash: use rte atomic thread fence > ring: use rte atomic thread fence > stack: use rte atomic thread fence > > lib/distributor/rte_distributor.c | 2 +- > lib/eal/common/eal_common_trace.c | 2 +- > lib/hash/rte_cuckoo_hash.c | 10 +++++----- > lib/ring/rte_ring_c11_pvt.h | 4 ++-- > lib/stack/rte_stack_lf_c11.h | 2 +- > 5 files changed, 10 insertions(+), 10 deletions(-) > > -- > 1.8.3.1 Series-acked-by: Morten Brørup <mb@smartsharesystems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/5] use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff ` (5 preceding siblings ...) 2023-11-02 7:42 ` [PATCH 0/5] " Morten Brørup @ 2023-11-08 17:04 ` Thomas Monjalon 2023-11-08 18:49 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff 7 siblings, 1 reply; 19+ messages in thread From: Thomas Monjalon @ 2023-11-08 17:04 UTC (permalink / raw) To: Tyler Retzlaff Cc: dev, Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang 02/11/2023 04:04, Tyler Retzlaff: > Replace use of __atomic_thread_fence with __rte_atomic_thread_fence. > > It may be appropriate to use rte_atomic_thread_fence instead but it > will be up to maintainers to evaluate and make the change if appropriate. I don't understand the use of __rte_atomic_thread_fence which is supposed to be EAL-internal only, isn't it? On x86, we have this: static __rte_always_inline void rte_atomic_thread_fence(rte_memory_order memorder) { if (memorder == rte_memory_order_seq_cst) rte_smp_mb(); else __rte_atomic_thread_fence(memorder); } This is skipped if you use __rte_atomic_thread_fence() directly. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/5] use rte atomic thread fence 2023-11-08 17:04 ` Thomas Monjalon @ 2023-11-08 18:49 ` Tyler Retzlaff 2024-02-14 22:40 ` Thomas Monjalon 0 siblings, 1 reply; 19+ messages in thread From: Tyler Retzlaff @ 2023-11-08 18:49 UTC (permalink / raw) To: Thomas Monjalon Cc: dev, Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang On Wed, Nov 08, 2023 at 06:04:47PM +0100, Thomas Monjalon wrote: > 02/11/2023 04:04, Tyler Retzlaff: > > Replace use of __atomic_thread_fence with __rte_atomic_thread_fence. > > > > It may be appropriate to use rte_atomic_thread_fence instead but it > > will be up to maintainers to evaluate and make the change if appropriate. > > I don't understand the use of __rte_atomic_thread_fence > which is supposed to be EAL-internal only, isn't it? > > On x86, we have this: > static __rte_always_inline void > rte_atomic_thread_fence(rte_memory_order memorder) > { > if (memorder == rte_memory_order_seq_cst) > rte_smp_mb(); > else > __rte_atomic_thread_fence(memorder); > } > > This is skipped if you use __rte_atomic_thread_fence() directly. correct. that is on purpose because the original code was skipping condition by using __atomic_thread_fence directly. this series intends no functional change which is why the replacements are __rte_atomic_thread_fence instead of to rte_atomic_thread_fence. i would encourage the maintainers to evaluate whether the code can use rte_atomic_thread_fence directly without functional regression. ty ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/5] use rte atomic thread fence 2023-11-08 18:49 ` Tyler Retzlaff @ 2024-02-14 22:40 ` Thomas Monjalon 0 siblings, 0 replies; 19+ messages in thread From: Thomas Monjalon @ 2024-02-14 22:40 UTC (permalink / raw) To: Tyler Retzlaff Cc: dev, Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, david.marchand, Morten Brørup 08/11/2023 19:49, Tyler Retzlaff: > On Wed, Nov 08, 2023 at 06:04:47PM +0100, Thomas Monjalon wrote: > > 02/11/2023 04:04, Tyler Retzlaff: > > > Replace use of __atomic_thread_fence with __rte_atomic_thread_fence. > > > > > > It may be appropriate to use rte_atomic_thread_fence instead but it > > > will be up to maintainers to evaluate and make the change if appropriate. > > > > I don't understand the use of __rte_atomic_thread_fence > > which is supposed to be EAL-internal only, isn't it? > > > > On x86, we have this: > > static __rte_always_inline void > > rte_atomic_thread_fence(rte_memory_order memorder) > > { > > if (memorder == rte_memory_order_seq_cst) > > rte_smp_mb(); > > else > > __rte_atomic_thread_fence(memorder); > > } > > > > This is skipped if you use __rte_atomic_thread_fence() directly. > > correct. that is on purpose because the original code was skipping > condition by using __atomic_thread_fence directly. There is chance that it was not skipping on purpose. > this series intends no functional change which is why the replacements > are __rte_atomic_thread_fence instead of to rte_atomic_thread_fence. We should take this opportunity to simplify the code, I mean we should avoid having 3 functions for the same thing. > i would encourage the maintainers to evaluate whether the code can use > rte_atomic_thread_fence directly without functional regression. Let's do the change so the maintainers can review what is changed. Note it should have no impact if not using rte_memory_order_seq_cst. If we discover later that something is broken, we have time to fix it. Note: lib/eal/include/rte_mcslock.h should not use __rte_atomic_thread_fence() and lib/lpm/rte_lpm.c should not use __atomic_thread_fence(). Can we replace and discourage all occurrences of __atomic_thread_fence() and __rte_atomic_thread_fence()? It would be simpler to recommend only rte_atomic_thread_fence(). Also in another patch, it would be nice to replace __ATOMIC_* with rte_memory_order_*, at least when used in rte_atomic_thread_fence(). ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 0/6] use rte atomic thread fence 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff ` (6 preceding siblings ...) 2023-11-08 17:04 ` Thomas Monjalon @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 1/6] distributor: " Tyler Retzlaff ` (6 more replies) 7 siblings, 7 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Replace use of __atomic_thread_fence with rte_atomic_thread_fence. Notes: The rest of lib/lpm will be converted to rte_atomic in a separate series (to be submitted soon). There are existing checkpatches checks that catch use of both __atomic_thread_fence and __rte_atomic_thread_fence in new submissions. v2: * change series to use rte_atomic_thread_fence instead of __rte_atomic_thread_fence (internal) * also change __atomic_thread_fence in lib/lpm Tyler Retzlaff (6): distributor: use rte atomic thread fence eal: use rte atomic thread fence hash: use rte atomic thread fence ring: use rte atomic thread fence stack: use rte atomic thread fence lpm: use rte atomic thread fence lib/distributor/rte_distributor.c | 2 +- lib/eal/common/eal_common_trace.c | 2 +- lib/eal/include/rte_mcslock.h | 4 ++-- lib/hash/rte_cuckoo_hash.c | 10 +++++----- lib/lpm/rte_lpm.c | 4 ++-- lib/ring/rte_ring_c11_pvt.h | 4 ++-- lib/stack/rte_stack_lf_c11.h | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 1/6] distributor: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 2/6] eal: " Tyler Retzlaff ` (5 subsequent siblings) 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/distributor/rte_distributor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/distributor/rte_distributor.c b/lib/distributor/rte_distributor.c index 2ecb95c..e842dc9 100644 --- a/lib/distributor/rte_distributor.c +++ b/lib/distributor/rte_distributor.c @@ -187,7 +187,7 @@ } /* Sync with distributor to acquire retptrs */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); for (i = 0; i < RTE_DIST_BURST_SIZE; i++) /* Switch off the return bit first */ buf->retptr64[i] = 0; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 2/6] eal: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 1/6] distributor: " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 3/6] hash: " Tyler Retzlaff ` (4 subsequent siblings) 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Update rte_mcslock.h to use rte_atomic_thread_fence instead of directly using internal __rte_atomic_thread_fence Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/eal/common/eal_common_trace.c | 2 +- lib/eal/include/rte_mcslock.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c index 6ad87fc..918f49b 100644 --- a/lib/eal/common/eal_common_trace.c +++ b/lib/eal/common/eal_common_trace.c @@ -526,7 +526,7 @@ rte_trace_mode rte_trace_mode_get(void) /* Add the trace point at tail */ STAILQ_INSERT_TAIL(&tp_list, tp, next); - __atomic_thread_fence(rte_memory_order_release); + rte_atomic_thread_fence(rte_memory_order_release); /* All Good !!! */ return 0; diff --git a/lib/eal/include/rte_mcslock.h b/lib/eal/include/rte_mcslock.h index 2ca967f..0aeb1a0 100644 --- a/lib/eal/include/rte_mcslock.h +++ b/lib/eal/include/rte_mcslock.h @@ -83,7 +83,7 @@ * store to prev->next. Otherwise it will cause a deadlock. Need a * store-load barrier. */ - __rte_atomic_thread_fence(rte_memory_order_acq_rel); + rte_atomic_thread_fence(rte_memory_order_acq_rel); /* If the lock has already been acquired, it first atomically * places the node at the end of the queue and then proceeds * to spin on me->locked until the previous lock holder resets @@ -117,7 +117,7 @@ * while-loop first. This has the potential to cause a * deadlock. Need a load barrier. */ - __rte_atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); /* More nodes added to the queue by other CPUs. * Wait until the next pointer is set. */ -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 3/6] hash: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 1/6] distributor: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 2/6] eal: " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 4/6] ring: " Tyler Retzlaff ` (3 subsequent siblings) 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/hash/rte_cuckoo_hash.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/hash/rte_cuckoo_hash.c b/lib/hash/rte_cuckoo_hash.c index 7045675..9cf9464 100644 --- a/lib/hash/rte_cuckoo_hash.c +++ b/lib/hash/rte_cuckoo_hash.c @@ -878,7 +878,7 @@ struct rte_hash * /* The store to sig_current should not * move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + rte_atomic_thread_fence(rte_memory_order_release); } /* Need to swap current/alt sig to allow later @@ -910,7 +910,7 @@ struct rte_hash * /* The store to sig_current should not * move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + rte_atomic_thread_fence(rte_memory_order_release); } curr_bkt->sig_current[curr_slot] = sig; @@ -1403,7 +1403,7 @@ struct rte_hash * /* The loads of sig_current in search_one_bucket * should not move below the load from tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); /* Re-read the table change counter to check if the * table has changed during search. If yes, re-do * the search. @@ -1632,7 +1632,7 @@ struct rte_hash * /* The store to sig_current should * not move above the store to tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_release); + rte_atomic_thread_fence(rte_memory_order_release); } last_bkt->sig_current[i] = NULL_SIGNATURE; rte_atomic_store_explicit(&last_bkt->key_idx[i], @@ -2223,7 +2223,7 @@ struct rte_hash * /* The loads of sig_current in compare_signatures * should not move below the load from tbl_chng_cnt. */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); /* Re-read the table change counter to check if the * table has changed during search. If yes, re-do * the search. -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 4/6] ring: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff ` (2 preceding siblings ...) 2024-02-15 6:50 ` [PATCH v2 3/6] hash: " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 5/6] stack: " Tyler Retzlaff ` (2 subsequent siblings) 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/ring/rte_ring_c11_pvt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ring/rte_ring_c11_pvt.h b/lib/ring/rte_ring_c11_pvt.h index 5c10ad8..629b2d9 100644 --- a/lib/ring/rte_ring_c11_pvt.h +++ b/lib/ring/rte_ring_c11_pvt.h @@ -68,7 +68,7 @@ n = max; /* Ensure the head is read before tail */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); /* load-acquire synchronize with store-release of ht->tail * in update_tail. @@ -145,7 +145,7 @@ n = max; /* Ensure the head is read before tail */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); /* this load-acquire synchronize with store-release of ht->tail * in update_tail. -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 5/6] stack: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff ` (3 preceding siblings ...) 2024-02-15 6:50 ` [PATCH v2 4/6] ring: " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 6/6] lpm: " Tyler Retzlaff 2024-02-18 3:23 ` [PATCH v2 0/6] " fengchengwen 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/stack/rte_stack_lf_c11.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/stack/rte_stack_lf_c11.h b/lib/stack/rte_stack_lf_c11.h index 9cb6998..60d46e9 100644 --- a/lib/stack/rte_stack_lf_c11.h +++ b/lib/stack/rte_stack_lf_c11.h @@ -110,7 +110,7 @@ * elements are properly ordered with respect to the head * pointer read. */ - __atomic_thread_fence(rte_memory_order_acquire); + rte_atomic_thread_fence(rte_memory_order_acquire); rte_prefetch0(old_head.top); -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 6/6] lpm: use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff ` (4 preceding siblings ...) 2024-02-15 6:50 ` [PATCH v2 5/6] stack: " Tyler Retzlaff @ 2024-02-15 6:50 ` Tyler Retzlaff 2024-02-18 3:23 ` [PATCH v2 0/6] " fengchengwen 6 siblings, 0 replies; 19+ messages in thread From: Tyler Retzlaff @ 2024-02-15 6:50 UTC (permalink / raw) To: dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas, Tyler Retzlaff Use rte_atomic_thread_fence instead of directly using __atomic_thread_fence builtin gcc intrinsic Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> --- lib/lpm/rte_lpm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lpm/rte_lpm.c b/lib/lpm/rte_lpm.c index 363058e..9633d63 100644 --- a/lib/lpm/rte_lpm.c +++ b/lib/lpm/rte_lpm.c @@ -1116,7 +1116,7 @@ struct rte_lpm * * Prevent the free of the tbl8 group from hoisting. */ i_lpm->lpm.tbl24[tbl24_index].valid = 0; - __atomic_thread_fence(__ATOMIC_RELEASE); + rte_atomic_thread_fence(rte_memory_order_release); status = tbl8_free(i_lpm, tbl8_group_start); } else if (tbl8_recycle_index > -1) { /* Update tbl24 entry. */ @@ -1132,7 +1132,7 @@ struct rte_lpm * */ __atomic_store(&i_lpm->lpm.tbl24[tbl24_index], &new_tbl24_entry, __ATOMIC_RELAXED); - __atomic_thread_fence(__ATOMIC_RELEASE); + rte_atomic_thread_fence(rte_memory_order_release); status = tbl8_free(i_lpm, tbl8_group_start); } #undef group_idx -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 0/6] use rte atomic thread fence 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff ` (5 preceding siblings ...) 2024-02-15 6:50 ` [PATCH v2 6/6] lpm: " Tyler Retzlaff @ 2024-02-18 3:23 ` fengchengwen 2024-02-18 12:18 ` Thomas Monjalon 6 siblings, 1 reply; 19+ messages in thread From: fengchengwen @ 2024-02-18 3:23 UTC (permalink / raw) To: Tyler Retzlaff, dev Cc: Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, thomas Series-acked-by: Chengwen Feng <fengchengwen@huawei.com> On 2024/2/15 14:50, Tyler Retzlaff wrote: > Replace use of __atomic_thread_fence with rte_atomic_thread_fence. > > Notes: > > The rest of lib/lpm will be converted to rte_atomic in a separate > series (to be submitted soon). > > There are existing checkpatches checks that catch use of both > __atomic_thread_fence and __rte_atomic_thread_fence in new > submissions. > > v2: > * change series to use rte_atomic_thread_fence instead of > __rte_atomic_thread_fence (internal) > * also change __atomic_thread_fence in lib/lpm > > Tyler Retzlaff (6): > distributor: use rte atomic thread fence > eal: use rte atomic thread fence > hash: use rte atomic thread fence > ring: use rte atomic thread fence > stack: use rte atomic thread fence > lpm: use rte atomic thread fence > > lib/distributor/rte_distributor.c | 2 +- > lib/eal/common/eal_common_trace.c | 2 +- > lib/eal/include/rte_mcslock.h | 4 ++-- > lib/hash/rte_cuckoo_hash.c | 10 +++++----- > lib/lpm/rte_lpm.c | 4 ++-- > lib/ring/rte_ring_c11_pvt.h | 4 ++-- > lib/stack/rte_stack_lf_c11.h | 2 +- > 7 files changed, 14 insertions(+), 14 deletions(-) > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 0/6] use rte atomic thread fence 2024-02-18 3:23 ` [PATCH v2 0/6] " fengchengwen @ 2024-02-18 12:18 ` Thomas Monjalon 0 siblings, 0 replies; 19+ messages in thread From: Thomas Monjalon @ 2024-02-18 12:18 UTC (permalink / raw) To: Tyler Retzlaff Cc: dev, Bruce Richardson, David Hunt, Honnappa Nagarahalli, Jerin Jacob, Konstantin Ananyev, Sameh Gobriel, Sunil Kumar Kori, Vladimir Medvedkin, Yipeng Wang, mb, fengchengwen > > Replace use of __atomic_thread_fence with rte_atomic_thread_fence. > > > > Notes: > > > > The rest of lib/lpm will be converted to rte_atomic in a separate > > series (to be submitted soon). > > > > There are existing checkpatches checks that catch use of both > > __atomic_thread_fence and __rte_atomic_thread_fence in new > > submissions. > > > > v2: > > * change series to use rte_atomic_thread_fence instead of > > __rte_atomic_thread_fence (internal) > > * also change __atomic_thread_fence in lib/lpm > > > > Tyler Retzlaff (6): > > distributor: use rte atomic thread fence > > eal: use rte atomic thread fence > > hash: use rte atomic thread fence > > ring: use rte atomic thread fence > > stack: use rte atomic thread fence > > lpm: use rte atomic thread fence > > Series-acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> Squashed and applied, thanks. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-02-18 12:18 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-11-02 3:04 [PATCH 0/5] use rte atomic thread fence Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 1/5] distributor: " Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 2/5] eal: " Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 3/5] hash: " Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 4/5] ring: " Tyler Retzlaff 2023-11-02 3:04 ` [PATCH 5/5] stack: " Tyler Retzlaff 2023-11-02 7:42 ` [PATCH 0/5] " Morten Brørup 2023-11-08 17:04 ` Thomas Monjalon 2023-11-08 18:49 ` Tyler Retzlaff 2024-02-14 22:40 ` Thomas Monjalon 2024-02-15 6:50 ` [PATCH v2 0/6] " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 1/6] distributor: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 2/6] eal: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 3/6] hash: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 4/6] ring: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 5/6] stack: " Tyler Retzlaff 2024-02-15 6:50 ` [PATCH v2 6/6] lpm: " Tyler Retzlaff 2024-02-18 3:23 ` [PATCH v2 0/6] " fengchengwen 2024-02-18 12:18 ` Thomas Monjalon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).