From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7026641D5F; Fri, 24 Feb 2023 16:12:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 61381410DD; Fri, 24 Feb 2023 16:11:58 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 57D7F40693 for ; Fri, 24 Feb 2023 16:11:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677251515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q7lmGsnNQhgHhcTc66sR1DQiiYURGzlLUa4nu+fkgU0=; b=fI7eRmqKKJLoN5en21RtkWwrX06tPVwuIpPYOj2SBR0wiVAtSJ6Rb2Swynkl608bh57+w3 +59ISF5TnR0j5kUmyQ7uJmC9yxo95YCYMrShao36RMudycPVUb2UTQj8ZVsl4mDQbnpiux EdESR3FWLjUwz6HJ1sfb4KgG8+nK0Z8= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-21-84gdtr9JNPiZeewiAm8Paw-1; Fri, 24 Feb 2023 10:11:51 -0500 X-MC-Unique: 84gdtr9JNPiZeewiAm8Paw-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B8E4E95D600; Fri, 24 Feb 2023 15:11:50 +0000 (UTC) Received: from dmarchan.redhat.com (unknown [10.45.224.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0E6D1492B12; Fri, 24 Feb 2023 15:11:49 +0000 (UTC) From: David Marchand 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 Message-Id: <20230224151143.3274897-1-david.marchand@redhat.com> In-Reply-To: <20230224081642.2566619-1-david.marchand@redhat.com> References: <20230224081642.2566619-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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