[{"id":25644,"web_url":"https://patchwork.libcamera.org/comment/25644/","msgid":"<166695018601.3974115.8907587910211475503@Monstersaurus>","date":"2022-10-28T09:43:06","subject":"Re: [libcamera-devel] [PATCH v5 02/10] ipa: add missing\n\tthread-safety annotations","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Nicholas Roth via libcamera-devel (2022-10-28 04:17:18)\n> From: Nicholas Roth <nicholas@rothemail.net>\n> \n> The raspberrypi IPA is missing thread-safety annotations, which breaks\n> the build.\n> \n> Add required thread-safety annotations.\n> \n> ../src/ipa/raspberrypi/controller/metadata.h:108:31: error: mutex\n>   'mutex_' is still held at the end of function [-Werror,-Wthread-safety-analysis]\n>         void lock() { mutex_.lock(); }\n>                                      ^\n> ../src/ipa/raspberrypi/controller/metadata.h:108:23: note: mutex\n>   acquired here\n>         void lock() { mutex_.lock(); }\n>                              ^\n> ../src/ipa/raspberrypi/controller/metadata.h:109:25: error: releasing\n>   mutex 'mutex_' that was not held [-Werror,-Wthread-safety-analysis]\n>         void unlock() { mutex_.unlock(); }\n>                                ^\n> \n> Signed-off-by: Nicholas Roth <nicholas@rothemail.net>\n\nFrom Jacopo on v1\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nFrom Me\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nNaush - any objections or concerns on this patch?\n\n\n\n> ---\n>  src/ipa/raspberrypi/controller/metadata.h | 8 +++++---\n>  1 file changed, 5 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/raspberrypi/controller/metadata.h\n> index 0f7ebfaf..870b6e26 100644\n> --- a/src/ipa/raspberrypi/controller/metadata.h\n> +++ b/src/ipa/raspberrypi/controller/metadata.h\n> @@ -13,9 +13,11 @@\n>  #include <mutex>\n>  #include <string>\n>  \n> +#include <libcamera/base/thread_annotations.h>\n> +\n>  namespace RPiController {\n>  \n> -class Metadata\n> +class LIBCAMERA_TSA_CAPABILITY(\"mutex\") Metadata\n>  {\n>  public:\n>         Metadata() = default;\n> @@ -103,8 +105,8 @@ public:\n>          * locks with the standard lock classes.\n>          * e.g. std::lock_guard<RPiController::Metadata> lock(metadata)\n>          */\n> -       void lock() { mutex_.lock(); }\n> -       void unlock() { mutex_.unlock(); }\n> +       void lock() LIBCAMERA_TSA_ACQUIRE() { mutex_.lock(); }\n> +       void unlock() LIBCAMERA_TSA_RELEASE() { mutex_.unlock(); }\n>  \n>  private:\n>         mutable std::mutex mutex_;\n> -- \n> 2.34.1\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3FABDBD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 28 Oct 2022 09:43:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 944D162FC0;\n\tFri, 28 Oct 2022 11:43:09 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7FEB962F41\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Oct 2022 11:43:08 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0750D6BE;\n\tFri, 28 Oct 2022 11:43:07 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666950189;\n\tbh=IXsliV1ebjp4/O8f0hSd7nAfnHUCWRegPw1OiUPPQdY=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=mfpogS6SFoYV9OIoClBtZaFsb8LkcbIKQM+6iED0zF8l0qDVeBoVUhfiUrvI3/x01\n\tuOH5/SMnOz9eX6lk0ZmJhyzirnUx0KLCH9E+NwsyyqN/CKRXbUAv2Q6gRgnimlKa1x\n\tZ6JqWioH98ljovPZzd5VlD83DwPMlPrHvTMUso5X3MkRARxjEtPMr9iLp33Veqi5D2\n\t+jfd9MQktjcHaSZBCFllyneCLp88Q+ZcKWUoGoTRRMwWmcG1d1mjWIKMm0LKCDbwVR\n\tUJuM2si02dyllxZul7Jy53t44XgVuABJyMsk/3+tolNVabC8Mzkoxnvj/hSTkOwRUp\n\tn6vZ5/RoeZ2tQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1666950188;\n\tbh=IXsliV1ebjp4/O8f0hSd7nAfnHUCWRegPw1OiUPPQdY=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=sD/ie1Sl5xtbNe9InaZ4EIaA3+S1EcZvYKUfsZA0nb6SplzjyOPONZo8TC3eJNnsM\n\tXwGEI3RH5hoMCB8UFKO5Xnzti82zR6Gnomg+ab2nDvsv/Hf5xIRzBRAXfMlKwB+soo\n\tdI6FnASJ6O0bpFHy4cBMadayI9P1XIL/PLFbh/rI="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"sD/ie1Sl\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20221028031726.4849-3-nicholas@rothemail.net>","References":"<20221027224135.348115-1-nicholas@rothemail.net>\n\t<20221028031726.4849-1-nicholas@rothemail.net>\n\t<20221028031726.4849-3-nicholas@rothemail.net>","To":"libcamera-devel@lists.libcamera.org,\n\tNaushir Patuck <naush@raspberrypi.com>, ","Date":"Fri, 28 Oct 2022 10:43:06 +0100","Message-ID":"<166695018601.3974115.8907587910211475503@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 02/10] ipa: add missing\n\tthread-safety annotations","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"nicholas@rothemail.net","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25645,"web_url":"https://patchwork.libcamera.org/comment/25645/","msgid":"<CAEmqJPpVrP2Y-1vbj9yodAh-r+SdYdEbbMAUCTbA1yto=0Avwg@mail.gmail.com>","date":"2022-10-28T09:44:07","subject":"Re: [libcamera-devel] [PATCH v5 02/10] ipa: add missing\n\tthread-safety annotations","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Fri, 28 Oct 2022 at 10:43, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Nicholas Roth via libcamera-devel (2022-10-28 04:17:18)\n> > From: Nicholas Roth <nicholas@rothemail.net>\n> >\n> > The raspberrypi IPA is missing thread-safety annotations, which breaks\n> > the build.\n> >\n> > Add required thread-safety annotations.\n> >\n> > ../src/ipa/raspberrypi/controller/metadata.h:108:31: error: mutex\n> >   'mutex_' is still held at the end of function\n> [-Werror,-Wthread-safety-analysis]\n> >         void lock() { mutex_.lock(); }\n> >                                      ^\n> > ../src/ipa/raspberrypi/controller/metadata.h:108:23: note: mutex\n> >   acquired here\n> >         void lock() { mutex_.lock(); }\n> >                              ^\n> > ../src/ipa/raspberrypi/controller/metadata.h:109:25: error: releasing\n> >   mutex 'mutex_' that was not held [-Werror,-Wthread-safety-analysis]\n> >         void unlock() { mutex_.unlock(); }\n> >                                ^\n> >\n> > Signed-off-by: Nicholas Roth <nicholas@rothemail.net>\n>\n> From Jacopo on v1\n>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n>\n> From Me\n>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n> Naush - any objections or concerns on this patch?\n>\n\nNope, all looks fine:\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n\n>\n>\n>\n> > ---\n> >  src/ipa/raspberrypi/controller/metadata.h | 8 +++++---\n> >  1 file changed, 5 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/ipa/raspberrypi/controller/metadata.h\n> b/src/ipa/raspberrypi/controller/metadata.h\n> > index 0f7ebfaf..870b6e26 100644\n> > --- a/src/ipa/raspberrypi/controller/metadata.h\n> > +++ b/src/ipa/raspberrypi/controller/metadata.h\n> > @@ -13,9 +13,11 @@\n> >  #include <mutex>\n> >  #include <string>\n> >\n> > +#include <libcamera/base/thread_annotations.h>\n> > +\n> >  namespace RPiController {\n> >\n> > -class Metadata\n> > +class LIBCAMERA_TSA_CAPABILITY(\"mutex\") Metadata\n> >  {\n> >  public:\n> >         Metadata() = default;\n> > @@ -103,8 +105,8 @@ public:\n> >          * locks with the standard lock classes.\n> >          * e.g. std::lock_guard<RPiController::Metadata> lock(metadata)\n> >          */\n> > -       void lock() { mutex_.lock(); }\n> > -       void unlock() { mutex_.unlock(); }\n> > +       void lock() LIBCAMERA_TSA_ACQUIRE() { mutex_.lock(); }\n> > +       void unlock() LIBCAMERA_TSA_RELEASE() { mutex_.unlock(); }\n> >\n> >  private:\n> >         mutable std::mutex mutex_;\n> > --\n> > 2.34.1\n> >\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 26168BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 28 Oct 2022 09:44:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CB29E62FC5;\n\tFri, 28 Oct 2022 11:44:25 +0200 (CEST)","from mail-qt1-x829.google.com (mail-qt1-x829.google.com\n\t[IPv6:2607:f8b0:4864:20::829])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A389E62F41\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Oct 2022 11:44:24 +0200 (CEST)","by mail-qt1-x829.google.com with SMTP id w29so3124281qtv.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Oct 2022 02:44:24 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666950265;\n\tbh=4TWsE9IQjuTINWlO0g9LXW7xs0wAnF2bStaoW3NVbug=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=gCtCbXMUWnnctl7KIf522j6O94gstX2ddeOsRGHyQQyAOQqaJMYsnFlUliDvrrQaF\n\tg3feL11+G2XTZhE8baKP8doH1eESiz62WEdEC+tCjbg3dco7bQ7QG3+qmVpnTQ9eQg\n\tIBMIz53qn19+qj/YieWGeNdtXaHjEjPeJaN/mAaSv4mBjZ1ozvSbh4ZQByRZ7psTs9\n\tvQt7fZn4NVmJdsYj7irsY18eVlgfi7nZ461lVXHWvjpTZUiqIVjgrFf25gK5wTm7al\n\t0ECMxq8R77+TIzuql3fNOg3f3uZ7WOWPUB6v+z8VgyeEYe2wvF59bVnkYsFDAPWgd0\n\tMZdXQHlr/XVrQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Ui8+XNjcCvxdWcM5zSYBQSNgp7pG4lUxSQ0YO+3AIvg=;\n\tb=PJn3SFTHdDwdPoirRFJH2V1wZLKwuY8ugnmwKQMzJoGKU5oh2LvFXtSR8pzC8pIbj7\n\tmUtS86rV5sFaVUSjINs6SbFasFEO2EUzWr3UNIxGYNltvalWJljsBdvrOXQrnokGVJZp\n\tPSHW7SXXVfcbWiQSrNZKyFbWqIDvRXsDQEa/FwTdRyfIW5JMllFs0MN+BNdQjEF9AULk\n\txV0AflqN/qhR3gfQVWfeQJE3FH3W0LnyUhmAV0hy6GlMUPKV2Rdo9HGzRmwsUY22P5Q4\n\tH6ZdsxyD4+NgTObUt3iPdc/KpiZFNOBw2YNzb6vy8at7D8Z8c1CJ4wKepYYpsmuwseAw\n\tyn9w=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"PJn3SFTH\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Ui8+XNjcCvxdWcM5zSYBQSNgp7pG4lUxSQ0YO+3AIvg=;\n\tb=Y8XSoZbNPWko05vCtxphy8HCuztWs3DUT/nDdc4zl6S6JTU6ar7P5B7TgVd+tftmM8\n\twpvnv1J1zFBnWiebWfwg7Hak9vr1ZJShP2T2lDKDcQpdWuvkdPTyALGcnc6aK7Sejqrv\n\tUmzkN80J21wi9m7LVua/Ey3Nx0Nh6jBLOxfSEgucEVa8DBqQhWRFvnaX/JV7tKL2C4cH\n\tzLV3rLaBpHoRblUt1WPu9S157qhF5sOItZnPFheiZgUKjPc81Ixltj0E026KKQwWGnxt\n\thzbQ9pZYrAMIqWligZ6dK5OFWi+l1dO2x2ZIlCkHvu+Fbi47s4tjhngKHfuSAS1F2TtL\n\tJChQ==","X-Gm-Message-State":"ACrzQf3ruH7AUe+Y9oS+OGuxQ3E0t45SNYR5d6lRU8fvomje6/jHiayx\n\tlGV6LE8OB2xcpUXZkTRXeOwR+A9e681f0i7ASFKFdDzMPHA=","X-Google-Smtp-Source":"AMsMyM5quahj/4yixG7xFmqwf3KIV+m6ULWfzFt/okTB/3qgCG9wigaY8woCKn5HdkPALkFqm/niKof63V1oseiZ6Os=","X-Received":"by 2002:a05:622a:1a02:b0:39c:b9f9:36d0 with SMTP id\n\tf2-20020a05622a1a0200b0039cb9f936d0mr45743696qtb.174.1666950263619;\n\tFri, 28 Oct 2022 02:44:23 -0700 (PDT)","MIME-Version":"1.0","References":"<20221027224135.348115-1-nicholas@rothemail.net>\n\t<20221028031726.4849-1-nicholas@rothemail.net>\n\t<20221028031726.4849-3-nicholas@rothemail.net>\n\t<166695018601.3974115.8907587910211475503@Monstersaurus>","In-Reply-To":"<166695018601.3974115.8907587910211475503@Monstersaurus>","Date":"Fri, 28 Oct 2022 10:44:07 +0100","Message-ID":"<CAEmqJPpVrP2Y-1vbj9yodAh-r+SdYdEbbMAUCTbA1yto=0Avwg@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000005257cb05ec151a8b\"","Subject":"Re: [libcamera-devel] [PATCH v5 02/10] ipa: add missing\n\tthread-safety annotations","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"nicholas@rothemail.net, libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]