On Sat, Apr 11, 2020 at 1:10 AM Honnappa Nagarahalli <[email protected]> wrote: > > <snip> > > > Subject: RE: [PATCH v3 3/9] ring: introduce RTS ring mode > > > > > > Introduce relaxed tail sync (RTS) mode for MT ring synchronization. > > > > Aim to reduce stall times in case when ring is used on overcommited > > > > cpus (multiple active threads on the same cpu). > > > > The main difference from original MP/MC algorithm is that tail value > > > > is increased not by every thread that finished enqueue/dequeue, but > > > > only by the last one. > > > > That allows threads to avoid spinning on ring tail value, leaving > > > > actual tail value change to the last thread in the update queue. > > > > > > > > check-abi.sh reports what I believe is a false-positive about ring > > > > cons/prod changes. As a workaround, devtools/libabigail.abignore is > > > > updated to suppress *struct ring* related errors. > > > This can be removed from the commit message. > > > > > > > > > > > Signed-off-by: Konstantin Ananyev <[email protected]> > > > > --- > > > > devtools/libabigail.abignore | 7 + > > > > lib/librte_ring/Makefile | 5 +- > > > > lib/librte_ring/meson.build | 5 +- > > > > lib/librte_ring/rte_ring.c | 100 +++++++- > > > > lib/librte_ring/rte_ring.h | 110 ++++++++- > > > > lib/librte_ring/rte_ring_elem.h | 86 ++++++- > > > > lib/librte_ring/rte_ring_rts.h | 316 +++++++++++++++++++++++++ > > > > lib/librte_ring/rte_ring_rts_elem.h | 205 ++++++++++++++++ > > > > lib/librte_ring/rte_ring_rts_generic.h | 210 ++++++++++++++++ > > > > 9 files changed, 1015 insertions(+), 29 deletions(-) create mode > > > > 100644 lib/librte_ring/rte_ring_rts.h create mode 100644 > > > > lib/librte_ring/rte_ring_rts_elem.h > > > > create mode 100644 lib/librte_ring/rte_ring_rts_generic.h > > > > > > > > diff --git a/devtools/libabigail.abignore > > > > b/devtools/libabigail.abignore index a59df8f13..cd86d89ca 100644 > > > > --- a/devtools/libabigail.abignore > > > > +++ b/devtools/libabigail.abignore > > > > @@ -11,3 +11,10 @@ > > > > type_kind = enum > > > > name = rte_crypto_asym_xform_type > > > > changed_enumerators = > > RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END > > > > +; Ignore updates of ring prod/cons > > > > +[suppress_type] > > > > + type_kind = struct > > > > + name = rte_ring > > > > +[suppress_type] > > > > + type_kind = struct > > > > + name = rte_event_ring > > > Does this block the reporting of these structures forever? > > > > Till we'll have a fix in libabigail, then we can remove these lines. > > I don't know any better alternative. > David, does this block all issues in the future for rte_ring library?
These two "suppression rules" make libabigail consider as harmless any change on the structures rte_ring and rte_event_ring. With those suppression rules, you won't get any complaint from libabigail (if this is what you call issues :-)). Reviews on those structures must be extra careful, as we are blind with those rules in place. -- David Marchand

