From patchwork Tue Feb 7 10:45:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 123213 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0BAAF41C2D; Tue, 7 Feb 2023 11:45:47 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 89F7440EF0; Tue, 7 Feb 2023 11:45:46 +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 29DD940042 for ; Tue, 7 Feb 2023 11:45:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675766744; 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=ApMewxeRT56JaIZAt9b4/azEWQTO+Hn5foXgSecf4GU=; b=IKGzqYPzVJsmWxGoPuwM9T9LVZP4VMFOwENZh8VJZGnowlNbleC6YdxZej5JVNFLyzYe7s 52E7IETbOG2qfqXnKS6I/js+TF4LglhPnjHrvR6QP/JhEMDCqONPvLDsm3AwUN3J9xAgtG WVDT5+yG6kw3r0PSjoTHsY8vvpSEU6w= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-657-Szj0sQVBPQ-90Bu76l1Jog-1; Tue, 07 Feb 2023 05:45:41 -0500 X-MC-Unique: Szj0sQVBPQ-90Bu76l1Jog-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 2260B3C0D18B; Tue, 7 Feb 2023 10:45:41 +0000 (UTC) Received: from dmarchan.redhat.com (ovpn-195-46.brq.redhat.com [10.40.195.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3CC84492B21; Tue, 7 Feb 2023 10:45:39 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, stephen@networkplumber.org, chenbo.xia@intel.com, jiayu.hu@intel.com, yuanx.wang@intel.com, xuan.ding@intel.com, mb@smartsharesystems.com Subject: [PATCH v6 0/9] Lock annotations Date: Tue, 7 Feb 2023 11:45:23 +0100 Message-Id: <20230207104532.2370869-1-david.marchand@redhat.com> In-Reply-To: <20220328121758.26632-1-david.marchand@redhat.com> References: <20220328121758.26632-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 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 vhost internals involves multiple locks to protect data access by multiple threads. This series uses clang thread safety checks [1] to catch issues during compilation: EAL spinlock, seqlock and rwlock are annotated and vhost code is instrumented so that clang can statically check correctness. Those annotations are quite heavy to maintain because the full path of code must be annotated (as can be seen in the vhost datapath code), but I think it is worth using. This has been tested against the whole tree and some fixes are already flying on the mailing list (see [2] for a list). If this first series is merged, I will prepare a followup series for EAL and other libraries. 1: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html 2: https://patchwork.dpdk.org/bundle/dmarchand/lock_fixes/?state=*&archive=both