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 DD118A034C; Thu, 28 Apr 2022 14:16:52 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B27904281B; Thu, 28 Apr 2022 14:16:52 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id D6C0140E50 for ; Thu, 28 Apr 2022 14:16:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651148211; 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: in-reply-to:in-reply-to:references:references; bh=015d6S7bxlZdwBfEN6jgca0J4fdgyL4zayEF7No6JWw=; b=A/lr+iF+KDjK6LuMHmqgDmK2dXcqO4Ax43GnYFr6YBzazfqPeI2eSqZ5aNJWf4qVpuI11i UAPj+CE4CWN2pJ+jZRrl5aQ1eIfpZsVO86JEhIdO/UESAbMNNzMcoHt+zOFiC3DUfZgfg+ aeU3kxTVDy4rijFLWoTOF0EJHVLD/Bs= Received: from mail-lj1-f197.google.com (mail-lj1-f197.google.com [209.85.208.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-436-oq1guW8iM_iAnY1yzsZhhw-1; Thu, 28 Apr 2022 08:16:50 -0400 X-MC-Unique: oq1guW8iM_iAnY1yzsZhhw-1 Received: by mail-lj1-f197.google.com with SMTP id l16-20020a2e5710000000b0024f0c34eff1so1775244ljb.10 for ; Thu, 28 Apr 2022 05:16:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=015d6S7bxlZdwBfEN6jgca0J4fdgyL4zayEF7No6JWw=; b=VF/3/HkHhp9CRKJ+nuLgLET4/v29wU4dMCpHT3TSDE2nZNSyKH6zC/R4/LiM7TXYve MszvGCH7L4vea2Zh4ndOx4qIf+TT9QywNPiElvNgo2j9ZiZ+aHFETWN+uRgTes6NQwGP 7tufDrXNhA3L+dSfTNtpUD+X17F9KR3uRH6TV4uyXi+cOKdLfOKpD4YuQxmH1e0ev15N 2ndEquYfXO5GnI29qYsWejLUUDLScBK7OY9OKDZqFJl1FkARLt9glYrHJKBFQMcjDJEy 9/VtOg7dN8kvEBZTNbwymgnW+iy96DIzbvNqZ0dWSZtfrt+L/P7YwFcIwa+BDtlf+T23 w3jw== X-Gm-Message-State: AOAM530oHW3I86zjcTQOEojEBtc4aeWG8PZ/YoPtImamBXivdAb/t7U0 wmCRyIU1I+HW53DOKkK60uKEXDeHRQcnVG93TCqJFAgTa+N7y6OSt+E95DXNtk4IkFwlWQPdpld ZhE9apNWRbbPIRQaj+TY= X-Received: by 2002:a05:6512:250d:b0:472:816:f613 with SMTP id be13-20020a056512250d00b004720816f613mr13942137lfb.265.1651148208060; Thu, 28 Apr 2022 05:16:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx9Rc5q09CFBpmPdHWzcklLLvj7ICB5UGggEJI5bBvnDJ4aneXqCRmOMUd+FfLpldtOk+YDUtoJC3H9fFvguac= X-Received: by 2002:a05:6512:250d:b0:472:816:f613 with SMTP id be13-20020a056512250d00b004720816f613mr13942117lfb.265.1651148207714; Thu, 28 Apr 2022 05:16:47 -0700 (PDT) MIME-Version: 1.0 References: <20220328121758.26632-1-david.marchand@redhat.com> <20220411110013.18624-1-david.marchand@redhat.com> <20220411110013.18624-2-david.marchand@redhat.com> <7ff5b0bc-47aa-2062-555a-c7b7dc84c3a0@redhat.com> In-Reply-To: <7ff5b0bc-47aa-2062-555a-c7b7dc84c3a0@redhat.com> From: David Marchand Date: Thu, 28 Apr 2022 14:16:36 +0200 Message-ID: Subject: Re: [RFC PATCH v3 1/8] eal: annotate spinlock and rwlock To: Maxime Coquelin Cc: dev , Stephen Hemminger , "Xia, Chenbo" , Jiayu Hu , "Wang, YuanX" , Xuan Ding , Ruifeng Wang , Jan Viktorin , David Christensen , Bruce Richardson , Konstantin Ananyev Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dmarchan@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" 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 On Thu, Apr 21, 2022 at 3:48 PM Maxime Coquelin wrote: > > Hi David, > > On 4/11/22 13:00, David Marchand wrote: > > clang offers some thread safety checks, statically verifying that locks > > are taken and released in the code. > > To use those checks, the full code leading to taking or releasing locks > > must be annotated with some attributes. > > > > Wrap those attributes into our own set of macros. > > > > rwlock and the "normal" spinlock are instrumented. > > > > A component may enable this check by setting annotate_locks = true > > in its meson.build. > > > > Note: those checks might be of interest out of DPDK, but it > > requires that the including application locks are annotated. > > On the other hand, applications out there might have been using > > those same checks. > > To be on the safe side, keep this instrumentation under a > > RTE_ANNOTATE_LOCKS internal build flag. > > > > Signed-off-by: David Marchand > > --- > > Changes since RFC v2: > > - fixed rwlock trylock, > > - instrumented _tm spinlocks, > > - aligned attribute names to clang, > > > > --- > > drivers/meson.build | 5 ++ > > lib/eal/arm/include/rte_rwlock.h | 4 ++ > > lib/eal/arm/include/rte_spinlock.h | 6 +++ > > lib/eal/include/generic/rte_rwlock.h | 27 +++++++++-- > > lib/eal/include/generic/rte_spinlock.h | 40 ++++++++++----- > > lib/eal/include/meson.build | 1 + > > lib/eal/include/rte_lock_annotations.h | 67 ++++++++++++++++++++++++++ > > lib/eal/ppc/include/rte_rwlock.h | 4 ++ > > lib/eal/ppc/include/rte_spinlock.h | 9 ++++ > > lib/eal/x86/include/rte_rwlock.h | 4 ++ > > lib/eal/x86/include/rte_spinlock.h | 9 ++++ > > lib/meson.build | 5 ++ > > 12 files changed, 164 insertions(+), 17 deletions(-) > > create mode 100644 lib/eal/include/rte_lock_annotations.h > > > > > Thanks for working on this. I think this lock annotation feature is very > useful, and will help to catch bugs when libs and drivers will adopt it. > Thanks for the review. We need some documentation about those annotations. I'll add this and post a non RFC series. -- David Marchand