[dpdk-dev] [PATCH v2 5/5] lib/stack: remove pop cas release ordering

Eads, Gage gage.eads at intel.com
Fri Sep 25 19:57:22 CEST 2020



> -----Original Message-----
> From: Steven Lariau <steven.lariau at arm.com>
> Sent: Friday, September 25, 2020 12:44 PM
> To: Eads, Gage <gage.eads at intel.com>; Olivier Matz <olivier.matz at 6wind.com>
> Cc: dev at dpdk.org; nd at arm.com; Steven Lariau <steven.lariau at arm.com>
> Subject: [PATCH v2 5/5] lib/stack: remove pop cas release ordering
> 
> Replace the store-release by relaxed for the CAS success at the end of
> pop. Release isn't needed, because there is not write to data that need
> to be synchronized.
> The only preceding write is when the length is decreased, but the length
> CAS loop already ensures the right synchronization.
> The situation to avoid is when a thread sees the old length but the new
> list, that doesn't have enough items for pop to success.
> But the CAS success on length before the pop loop ensures any core reads
> and updates the latest length, preventing this situation.
> 
> The store-release is also used to make sure that the items are read
> before the head is updated, in order to prevent a core in pop to read an
> incorrect value because another core rewrites it with push.
> But this isn't needed, because items are read only when removed from the
> used list. Right after this, they are pushed to the free list, and the
> store-release in push makes sure the items are read before they are
> visible in the free list.
> 
> Signed-off-by: Steven Lariau <steven.lariau at arm.com>
> Reviewed-by: Dharmik Thakkar <dharmik.thakkar at arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>

Acked-by: Gage Eads <gage.eads at intel.com>

Thanks,
Gage


More information about the dev mailing list