DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net
Subject: [PATCH v2 00/20] Enable lock annotations on most libraries and drivers
Date: Fri, 24 Feb 2023 16:11:23 +0100	[thread overview]
Message-ID: <20230224151143.3274897-1-david.marchand@redhat.com> (raw)
In-Reply-To: <20230224081642.2566619-1-david.marchand@redhat.com>

This is a followup of the series that introduced lock annotations.
I reworked and made annotations work in what seemed the easier cases.
In most cases, I chose to convert inline wrappers around the EAL lock
API to simple macro: I did not see much value in those wrappers and this
is way simpler than adding __rte_*lock_function tags everywhere.

A list of libraries and drivers still need more work as their code have
non obvious locks handling. For those components, the check is opted
out.
I leave it to their respective maintainers to enable the checks later.

FreeBSD libc pthread API has lock annotations while Linux glibc has
none.
We could simply disable the check on FreeBSD, but having this check,
a few issues got raised in drivers that are built with FreeBSD.
For now, I went with a simple #ifdef FreeBSD for pthread mutex related
annotations in our code.

Maintainers, please review.


-- 
David Marchand

Changes since v1:
- annotate code relying on pthread mutexes for FreeBSD libc that
  put annotations on its pthread API,
- annotate Windows alarm code,


David Marchand (20):
  malloc: rework heap lock handling
  mem: rework malloc heap init
  mem: annotate shared memory config locks
  hash: annotate cuckoo hash lock
  graph: annotate graph lock
  drivers: inherit lock annotations for Intel drivers
  net/cxgbe: inherit lock annotations
  net/fm10k: annotate mailbox lock
  net/sfc: rework locking in proxy code
  net/sfc: inherit lock annotations
  net/virtio: annotate lock for guest announce
  raw/ifpga: inherit lock annotations
  vdpa/sfc: inherit lock annotations
  ipc: annotate pthread mutex
  ethdev: annotate pthread mutex
  net/failsafe: fix mutex locking
  net/failsafe: annotate pthread mutex
  net/hinic: annotate pthread mutex
  eal/windows: disable lock check on alarm code
  enable lock check

 .../prog_guide/env_abstraction_layer.rst      |   5 +-
 drivers/bus/dpaa/meson.build                  |   1 +
 drivers/common/cnxk/meson.build               |   1 +
 drivers/common/iavf/iavf_osdep.h              |  39 +----
 drivers/common/iavf/iavf_prototype.h          |   6 -
 drivers/common/idpf/base/idpf_osdep.h         |  26 +---
 drivers/common/mlx5/meson.build               |   1 +
 drivers/event/cnxk/meson.build                |   1 +
 drivers/meson.build                           |   2 +-
 drivers/net/bnx2x/meson.build                 |   1 +
 drivers/net/bnxt/meson.build                  |   1 +
 drivers/net/cnxk/meson.build                  |   1 +
 drivers/net/cxgbe/base/adapter.h              |  35 +----
 drivers/net/enic/meson.build                  |   1 +
 drivers/net/failsafe/failsafe_ether.c         |   3 +-
 drivers/net/failsafe/failsafe_flow.c          |  23 ++-
 drivers/net/failsafe/failsafe_ops.c           | 142 +++++++++++++-----
 drivers/net/failsafe/failsafe_private.h       |   6 +
 drivers/net/fm10k/fm10k_ethdev.c              |   2 +
 drivers/net/hinic/base/hinic_compat.h         |   6 +
 drivers/net/hns3/meson.build                  |   1 +
 drivers/net/i40e/base/i40e_osdep.h            |   8 +-
 drivers/net/i40e/base/i40e_prototype.h        |   5 -
 drivers/net/i40e/i40e_ethdev.c                |  24 ---
 drivers/net/ice/base/ice_osdep.h              |  26 +---
 drivers/net/mlx5/meson.build                  |   1 +
 drivers/net/sfc/sfc.h                         |  41 +----
 drivers/net/sfc/sfc_ev.c                      |   6 +-
 drivers/net/sfc/sfc_repr.c                    |  38 +----
 drivers/net/sfc/sfc_repr_proxy.c              |  59 ++++----
 drivers/net/virtio/virtio_ethdev.c            |   8 +-
 drivers/net/virtio/virtio_ethdev.h            |   7 +-
 drivers/raw/ifpga/afu_pmd_core.c              |  17 +--
 drivers/vdpa/sfc/sfc_vdpa.h                   |  41 +----
 drivers/vdpa/sfc/sfc_vdpa_ops.c               |  14 +-
 lib/eal/common/eal_common_mcfg.c              |  66 ++++----
 lib/eal/common/eal_common_memory.c            |  10 +-
 lib/eal/common/eal_common_proc.c              |   3 +
 lib/eal/common/malloc_heap.c                  |  55 +++++--
 lib/eal/common/malloc_heap.h                  |   3 +
 lib/eal/common/rte_malloc.c                   |  10 --
 lib/eal/freebsd/eal.c                         |  13 ++
 lib/eal/include/rte_eal_memconfig.h           |  63 ++++++--
 lib/eal/linux/eal.c                           |  13 ++
 lib/eal/version.map                           |   4 +
 lib/eal/windows/eal.c                         |  13 ++
 lib/eal/windows/eal_alarm.c                   |   2 +
 lib/ethdev/rte_flow.c                         |   8 +
 lib/graph/graph.c                             |  10 +-
 lib/graph/graph_private.h                     |  10 +-
 lib/hash/rte_cuckoo_hash.c                    |   8 +
 lib/ipsec/meson.build                         |   1 +
 lib/meson.build                               |   2 +-
 lib/timer/meson.build                         |   1 +
 lib/vhost/meson.build                         |   1 -
 55 files changed, 461 insertions(+), 434 deletions(-)

-- 
2.39.2


  parent reply	other threads:[~2023-02-24 15:12 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-24  8:16 [PATCH 00/14] " David Marchand
2023-02-24  8:16 ` [PATCH 01/14] malloc: rework heap lock handling David Marchand
2023-02-24  8:16 ` [PATCH 02/14] mem: rework malloc heap init David Marchand
2023-02-24  8:16 ` [PATCH 03/14] mem: annotate shared memory config locks David Marchand
2023-02-24  8:16 ` [PATCH 04/14] hash: annotate cuckoo hash lock David Marchand
2023-02-24  8:16 ` [PATCH 05/14] graph: annotate graph lock David Marchand
2023-02-24  8:16 ` [PATCH 06/14] drivers: inherit lock annotations for Intel drivers David Marchand
2023-02-24  8:16 ` [PATCH 07/14] net/cxgbe: inherit lock annotations David Marchand
2023-02-24  8:16 ` [PATCH 08/14] net/fm10k: annotate mailbox lock David Marchand
2023-02-24  8:16 ` [PATCH 09/14] net/sfc: rework locking in proxy code David Marchand
2023-02-24  8:16 ` [PATCH 10/14] net/sfc: inherit lock annotations David Marchand
2023-02-24  8:16 ` [PATCH 11/14] net/virtio: annotate lock for guest announce David Marchand
2023-02-24  8:16 ` [PATCH 12/14] raw/ifpga: inherit lock annotations David Marchand
2023-02-24  8:16 ` [PATCH 13/14] vdpa/sfc: " David Marchand
2023-02-24  8:16 ` [PATCH 14/14] enable lock check David Marchand
2023-02-24 15:11 ` David Marchand [this message]
2023-02-24 15:11   ` [PATCH v2 01/20] malloc: rework heap lock handling David Marchand
2023-02-24 15:11   ` [PATCH v2 02/20] mem: rework malloc heap init David Marchand
2023-02-24 15:11   ` [PATCH v2 03/20] mem: annotate shared memory config locks David Marchand
2023-02-24 15:11   ` [PATCH v2 04/20] hash: annotate cuckoo hash lock David Marchand
2023-02-24 15:11   ` [PATCH v2 05/20] graph: annotate graph lock David Marchand
2023-02-24 15:11   ` [PATCH v2 06/20] drivers: inherit lock annotations for Intel drivers David Marchand
2023-02-24 15:11   ` [PATCH v2 07/20] net/cxgbe: inherit lock annotations David Marchand
2023-02-24 15:11   ` [PATCH v2 08/20] net/fm10k: annotate mailbox lock David Marchand
2023-02-24 15:11   ` [PATCH v2 09/20] net/sfc: rework locking in proxy code David Marchand
2023-02-24 15:11   ` [PATCH v2 10/20] net/sfc: inherit lock annotations David Marchand
2023-02-24 15:11   ` [PATCH v2 11/20] net/virtio: annotate lock for guest announce David Marchand
2023-02-27  2:05     ` Xia, Chenbo
2023-02-27  8:24       ` David Marchand
2023-02-27 16:28         ` Maxime Coquelin
2023-02-28  2:45           ` Xia, Chenbo
2023-03-02  9:26           ` David Marchand
2023-03-02  9:28             ` Maxime Coquelin
2023-03-02 12:35               ` David Marchand
2023-02-24 15:11   ` [PATCH v2 12/20] raw/ifpga: inherit lock annotations David Marchand
2023-02-27  6:29     ` Xu, Rosen
2023-02-27  7:15       ` Huang, Wei
2023-02-24 15:11   ` [PATCH v2 13/20] vdpa/sfc: " David Marchand
2023-02-24 15:11   ` [PATCH v2 14/20] ipc: annotate pthread mutex David Marchand
2023-02-24 15:11   ` [PATCH v2 15/20] ethdev: " David Marchand
2023-02-24 15:11   ` [PATCH v2 16/20] net/failsafe: fix mutex locking David Marchand
2023-02-24 15:35     ` Gaëtan Rivet
2023-02-24 15:11   ` [PATCH v2 17/20] net/failsafe: annotate pthread mutex David Marchand
2023-02-24 15:11   ` [PATCH v2 18/20] net/hinic: " David Marchand
2023-02-24 15:11   ` [PATCH v2 19/20] eal/windows: disable lock check on alarm code David Marchand
2023-02-24 15:11   ` [PATCH v2 20/20] enable lock check David Marchand
2023-02-27  2:32     ` Xia, Chenbo
2023-02-24 15:58   ` [PATCH v2 00/20] Enable lock annotations on most libraries and drivers Gaëtan Rivet
2023-02-25 10:16     ` David Marchand
2023-02-27 16:12       ` Gaëtan Rivet
2023-03-02  8:52         ` David Marchand
2023-04-03 10:52           ` David Marchand
2023-04-03 15:03             ` Tyler Retzlaff
2023-04-03 15:36             ` Tyler Retzlaff
2023-04-04  7:45               ` David Marchand
2023-04-04 12:48 ` [PATCH v3 00/16] " David Marchand
2023-04-04 12:48   ` [PATCH v3 01/16] malloc: rework heap destroy David Marchand
2023-04-04 12:48   ` [PATCH v3 02/16] mem: rework malloc heap init David Marchand
2023-04-04 12:48   ` [PATCH v3 03/16] mem: annotate shared memory config locks David Marchand
2023-04-04 12:48   ` [PATCH v3 04/16] hash: annotate cuckoo hash lock David Marchand
2023-04-04 12:48   ` [PATCH v3 05/16] graph: annotate graph lock David Marchand
2023-04-04 12:48   ` [PATCH v3 06/16] drivers: inherit lock annotations for Intel drivers David Marchand
2023-04-04 12:48   ` [PATCH v3 07/16] net/cxgbe: inherit lock annotations David Marchand
2023-04-04 12:48   ` [PATCH v3 08/16] net/fm10k: annotate mailbox lock David Marchand
2023-04-04 12:48   ` [PATCH v3 09/16] net/sfc: rework locking in proxy code David Marchand
2023-04-04 12:48   ` [PATCH v3 10/16] net/sfc: inherit lock annotations David Marchand
2023-04-04 12:48   ` [PATCH v3 11/16] net/virtio: rework guest announce notify helper David Marchand
2023-04-04 12:48   ` [PATCH v3 12/16] raw/ifpga: inherit lock annotations David Marchand
2023-04-04 12:48   ` [PATCH v3 13/16] vdpa/sfc: " David Marchand
2023-04-04 12:48   ` [PATCH v3 14/16] net/failsafe: fix mutex locking David Marchand
2023-04-04 12:48   ` [PATCH v3 15/16] eal/windows: disable lock check on alarm code David Marchand
2023-04-04 16:08     ` Tyler Retzlaff
2023-04-04 21:02     ` Dmitry Kozlyuk
2023-04-04 12:48   ` [PATCH v3 16/16] enable lock check David Marchand
2023-04-11  3:21     ` Sachin Saxena (OSS)
2023-04-23 20:09   ` [PATCH v3 00/16] Enable lock annotations on most libraries and drivers Thomas Monjalon

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=20230224151143.3274897-1-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /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).