DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: Gaetan Rivet <grive@u256.net>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	Nicolas Chautru <nicolas.chautru@intel.com>,
	Yipeng Wang <yipeng1.wang@intel.com>,
	Sameh Gobriel <sameh.gobriel@intel.com>,
	Vladimir Medvedkin <vladimir.medvedkin@intel.com>,
	Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	Anatoly Burakov <anatoly.burakov@intel.com>,
	Olivier Matz <olivier.matz@6wind.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Joyce Kong <joyce.kong@arm.com>,
	Erik Gabriel Carrillo <erik.g.carrillo@intel.com>,
	Liang Ma <liangma@liangbit.com>,
	Peter Mccarthy <peter.mccarthy@intel.com>,
	Jerin Jacob <jerinj@marvell.com>,
	Maciej Czekaj <mczekaj@marvell.com>,
	David Hunt <david.hunt@intel.com>,
	Ruifeng Wang <ruifeng.wang@arm.com>,
	Min Zhou <zhoumin@loongson.cn>,
	David Christensen <drc@linux.vnet.ibm.com>,
	Stanislaw Kardach <kda@semihalf.com>,
	david.marchand@redhat.com, stephen@networkplumber.org,
	mb@smartsharesystems.com,
	Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: [PATCH v2 0/4] eal: update public API to use stdatomic atomics
Date: Mon, 31 Jul 2023 22:03:50 -0700	[thread overview]
Message-ID: <1690866234-28365-1-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1690837661-27573-1-git-send-email-roretzla@linux.microsoft.com>

Update EAL public API to use standard C11 atomics. In accordance with
technical board discussion February 2023.
http://mails.dpdk.org/archives/dev/2023-February/263516.html

This initial series makes no attempt to adapt every use of builtin atomics
from GCC it intends only to adapt the public API of the EAL presented as
a compatibility surface to applications.

Further series will be submitted to adapt the rest of DPDK to use standard
atomics that are 'internal' and not do not straddle the EAL API.

The choice has been made to break these two changes apart to allow more
precise analysis of any potential performance impact this change or
subsequent changes may introduce.

Additionally, it is not possible to break the commits up per driver/lib as
both the provider and consumer of the APIs need to be changed in the same
commit to maintain non-broken build and function.

Finally, the first patch in this series is a duplication of Bruce Richardson
series https://patchwork.dpdk.org/project/dpdk/list/?series=29048 and is
only being provided to enable the CI run on this series. It is expected that
Bruce's series when committed will allow the build: require minimum c11 compiler
here to be dropped from this series.

v2:
  * remove volatile qualification from variables, structure fields and
    parameters that have been qualified _Atomic
  * restore removal of #include <rte_atomic.h> in rte_ring_core.h the ring
    library still uses other rte_atomic APIs and types that are not replaced
    by the standard or compiler intrinsics
  * add missing adaption to stdatomic in ring/rte_ring_c11_pvt.h

Tyler Retzlaff (4):
  build: require minimum c11 compiler
  devtools: forbid use of GCC atomic builtins
  eal: adapt rte pause APIs to use C11 atomics
  eal: adapt rte spinlock and rwlock APIs to use C11 atomics

 app/test-bbdev/test_bbdev_perf.c         | 123 ++++++++++++++++++++-----------
 app/test/test_func_reentrancy.c          |   8 +-
 app/test/test_mcslock.c                  |  12 +--
 app/test/test_mempool_perf.c             |   8 +-
 app/test/test_pflock.c                   |  12 +--
 app/test/test_pmd_perf.c                 |  10 +--
 app/test/test_ring_perf.c                |   8 +-
 app/test/test_rwlock.c                   |   8 +-
 app/test/test_spinlock.c                 |   8 +-
 app/test/test_stack_perf.c               |  12 +--
 app/test/test_ticketlock.c               |   8 +-
 app/test/test_timer.c                    |  16 ++--
 devtools/checkpatches.sh                 |   8 ++
 drivers/event/opdl/opdl_ring.c           |  47 ++++++------
 drivers/net/failsafe/meson.build         |   1 -
 drivers/net/thunderx/nicvf_rxtx.c        |   5 +-
 drivers/net/thunderx/nicvf_struct.h      |   2 +-
 lib/bpf/bpf_pkt.c                        |   4 +-
 lib/distributor/distributor_private.h    |   2 +-
 lib/distributor/rte_distributor_single.c |  44 +++++------
 lib/eal/arm/include/rte_pause_64.h       |  28 +++----
 lib/eal/common/eal_common_errno.c        |   1 +
 lib/eal/common/eal_memcfg.h              |   2 +-
 lib/eal/include/generic/rte_pause.h      |  52 ++++++-------
 lib/eal/include/generic/rte_rwlock.h     |  46 ++++++------
 lib/eal/include/generic/rte_spinlock.h   |  21 +++---
 lib/eal/include/rte_mcslock.h            |  12 +--
 lib/eal/include/rte_pflock.h             |  22 +++---
 lib/eal/include/rte_ticketlock.h         |   8 +-
 lib/eal/loongarch/include/rte_pause.h    |   2 -
 lib/eal/ppc/include/rte_pause.h          |   2 -
 lib/eal/riscv/include/rte_pause.h        |   2 -
 lib/eal/x86/include/rte_spinlock.h       |   2 +-
 lib/ring/rte_ring_c11_pvt.h              |  28 +++----
 lib/ring/rte_ring_core.h                 |   4 +-
 lib/ring/rte_ring_generic_pvt.h          |  19 +++--
 lib/ring/rte_ring_peek_elem_pvt.h        |   2 +-
 meson.build                              |   1 +
 38 files changed, 326 insertions(+), 274 deletions(-)

-- 
1.8.3.1


  parent reply	other threads:[~2023-08-01  5:04 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-31 21:07 [PATCH " Tyler Retzlaff
2023-07-31 21:07 ` [PATCH 1/4] build: require minimum c11 compiler Tyler Retzlaff
2023-07-31 21:07 ` [PATCH 2/4] devtools: forbid use of GCC atomic builtins Tyler Retzlaff
2023-07-31 21:07 ` [PATCH 3/4] eal: adapt rte pause APIs to use C11 atomics Tyler Retzlaff
2023-07-31 21:07 ` [PATCH 4/4] eal: adapt rte spinlock and rwlock " Tyler Retzlaff
2023-08-01  5:03 ` Tyler Retzlaff [this message]
2023-08-01  5:03   ` [PATCH v2 1/4] build: require minimum c11 compiler Tyler Retzlaff
2023-08-01  5:03   ` [PATCH v2 2/4] devtools: forbid use of GCC atomic builtins Tyler Retzlaff
2023-08-01  5:03   ` [PATCH v2 3/4] eal: adapt rte pause APIs to use C11 atomics Tyler Retzlaff
2023-08-01  5:03   ` [PATCH v2 4/4] eal: adapt rte spinlock and rwlock " Tyler Retzlaff
2023-08-01  7:33   ` [PATCH v2 0/4] eal: update public API to use stdatomic atomics Morten Brørup
2023-08-01 17:07   ` Tyler Retzlaff
2023-08-02  5:13 ` [PATCH v3 " Tyler Retzlaff
2023-08-02  5:13   ` [PATCH v3 1/4] build: require minimum c11 compiler Tyler Retzlaff
2023-08-02  5:13   ` [PATCH v3 2/4] devtools: forbid use of GCC atomic builtins Tyler Retzlaff
2023-08-02  5:13   ` [PATCH v3 3/4] eal: adapt rte pause APIs to use C11 atomics Tyler Retzlaff
2023-08-02  5:13   ` [PATCH v3 4/4] eal: adapt rte spinlock and rwlock " Tyler Retzlaff
2023-08-02  5:31 ` [PATCH v4 0/4] eal: update public API to use stdatomic atomics Tyler Retzlaff
2023-08-02  5:31   ` [PATCH v4 1/4] build: require minimum c11 compiler Tyler Retzlaff
2023-08-02  5:31   ` [PATCH v4 2/4] devtools: forbid use of GCC atomic builtins Tyler Retzlaff
2023-08-02  5:31   ` [PATCH v4 3/4] eal: adapt rte pause APIs to use C11 atomics Tyler Retzlaff
2023-08-02  5:31   ` [PATCH v4 4/4] eal: adapt rte spinlock and rwlock " Tyler Retzlaff

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=1690866234-28365-1-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=anatoly.burakov@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=david.hunt@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=drc@linux.vnet.ibm.com \
    --cc=erik.g.carrillo@intel.com \
    --cc=grive@u256.net \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jerinj@marvell.com \
    --cc=joyce.kong@arm.com \
    --cc=kda@semihalf.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=liangma@liangbit.com \
    --cc=mb@smartsharesystems.com \
    --cc=mczekaj@marvell.com \
    --cc=nicolas.chautru@intel.com \
    --cc=olivier.matz@6wind.com \
    --cc=peter.mccarthy@intel.com \
    --cc=ruifeng.wang@arm.com \
    --cc=sameh.gobriel@intel.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    --cc=vladimir.medvedkin@intel.com \
    --cc=yipeng1.wang@intel.com \
    --cc=zhoumin@loongson.cn \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).