[{"id":21770,"web_url":"https://patchwork.libcamera.org/comment/21770/","msgid":"<Ybdlvhs0II826oey@pendragon.ideasonboard.com>","date":"2021-12-13T15:24:46","subject":"Re: [libcamera-devel] [PATCH 2/2] test: fence: Signal fence once","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Mon, Dec 13, 2021 at 03:51:43PM +0100, Jacopo Mondi wrote:\n> The unit test associates a fence with a framebuffer and makes sure\n> the fence is correctly signalled.\n> \n> Once a fence is correctly signalled, it is released by the core, and the\n> underlying file descriptor closed.\n> \n> The unit test however tries to write on the fence file descriptor every\n> time the designated Request is queued, and error which is now visible\n\ns/and/an/\n\n> as the return value of the fence signalling write() is checked.\n> \n> Fix that by associating a fence with a framebuffer only once.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  test/fence.cpp | 6 ++++--\n>  1 file changed, 4 insertions(+), 2 deletions(-)\n> \n> diff --git a/test/fence.cpp b/test/fence.cpp\n> index d2865398784e..524db2a10757 100644\n> --- a/test/fence.cpp\n> +++ b/test/fence.cpp\n> @@ -56,6 +56,7 @@ private:\n>  \tStream *stream_;\n>  \n>  \tbool expectedCompletionResult_ = true;\n> +\tbool setFence_ = true;\n>  \n>  \tunsigned int completedRequest_;\n>  \n> @@ -193,7 +194,7 @@ void FenceTest::requestRequeue(Request *request)\n>  \n>  \trequest->reuse();\n>  \n> -\tif (cookie == signalledRequestId_) {\n> +\tif (cookie == signalledRequestId_ && setFence_) {\n>  \t\t/*\n>  \t\t * The second time this request is queued add a fence to it.\n>  \t\t *\n> @@ -257,6 +258,7 @@ void FenceTest::signalFence()\n>  \tif (ret != sizeof(value))\n>  \t\tcerr << \"Failed to signal fence\" << endl;\n>  \n> +\tsetFence_ = false;\n>  \tdispatcher_->processEvents();\n>  }\n>  \n> @@ -316,7 +318,7 @@ int FenceTest::run()\n>  \tTimer timer;\n>  \ttimer.start(1000);\n>  \twhile (timer.isRunning() && expectedCompletionResult_) {\n> -\t\tif (completedRequest_ == signalledRequestId_)\n> +\t\tif (completedRequest_ == signalledRequestId_ && setFence_)\n\nA bit of a hack, but I suppose it works. The test is hard to read,\nthere's room for improvement (and possibly a race condition or two), but\nthat's not urgent.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nTested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  \t\t\t/*\n>  \t\t\t * signalledRequestId_ has just completed and it has\n>  \t\t\t * been re-queued with a fence. Start the timer to","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 6AD95BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Dec 2021 15:25:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D0E056088B;\n\tMon, 13 Dec 2021 16:25:18 +0100 (CET)","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 C98CE60868\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Dec 2021 16:25:17 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3BCE051C;\n\tMon, 13 Dec 2021 16:25:17 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"VyTkYdkO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1639409117;\n\tbh=HVARJwx24SvSCPiTjQlUoIxDTywTyAJqfgibxm3Zv/k=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=VyTkYdkOKdB6/4pNnneZcWlvmuEPtSPShS3ZcScnMLJvjPlhD8OAqGEffoxnnsKV6\n\tPXMj1BZrms0wOAGBjLU4HHo3RiHDt6N/5bRXKkq7+/6il+LWaHzOaTR+ktZ7A+QD+F\n\tI/9oVvx35ezvBfzLAUOsxy7bS79TH4So+4UXxtfs=","Date":"Mon, 13 Dec 2021 17:24:46 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<Ybdlvhs0II826oey@pendragon.ideasonboard.com>","References":"<20211213145143.218734-1-jacopo@jmondi.org>\n\t<20211213145143.218734-3-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211213145143.218734-3-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 2/2] test: fence: Signal fence once","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21772,"web_url":"https://patchwork.libcamera.org/comment/21772/","msgid":"<22b081fd-a6bf-563d-ebc3-326c40d7ee20@ideasonboard.com>","date":"2021-12-13T15:42:14","subject":"Re: [libcamera-devel] [PATCH 2/2] test: fence: Signal fence once","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 12/13/21 8:54 PM, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Mon, Dec 13, 2021 at 03:51:43PM +0100, Jacopo Mondi wrote:\n>> The unit test associates a fence with a framebuffer and makes sure\n>> the fence is correctly signalled.\n>>\n>> Once a fence is correctly signalled, it is released by the core, and the\n>> underlying file descriptor closed.\n>>\n>> The unit test however tries to write on the fence file descriptor every\n>> time the designated Request is queued, and error which is now visible\n> s/and/an/\n>\n>> as the return value of the fence signalling write() is checked.\n>>\n>> Fix that by associating a fence with a framebuffer only once.\n>>\n>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>> ---\n>>   test/fence.cpp | 6 ++++--\n>>   1 file changed, 4 insertions(+), 2 deletions(-)\n>>\n>> diff --git a/test/fence.cpp b/test/fence.cpp\n>> index d2865398784e..524db2a10757 100644\n>> --- a/test/fence.cpp\n>> +++ b/test/fence.cpp\n>> @@ -56,6 +56,7 @@ private:\n>>   \tStream *stream_;\n>>   \n>>   \tbool expectedCompletionResult_ = true;\n>> +\tbool setFence_ = true;\n>>   \n>>   \tunsigned int completedRequest_;\n>>   \n>> @@ -193,7 +194,7 @@ void FenceTest::requestRequeue(Request *request)\n>>   \n>>   \trequest->reuse();\n>>   \n>> -\tif (cookie == signalledRequestId_) {\n>> +\tif (cookie == signalledRequestId_ && setFence_) {\n>>   \t\t/*\n>>   \t\t * The second time this request is queued add a fence to it.\n>>   \t\t *\n>> @@ -257,6 +258,7 @@ void FenceTest::signalFence()\n>>   \tif (ret != sizeof(value))\n>>   \t\tcerr << \"Failed to signal fence\" << endl;\n>>   \n>> +\tsetFence_ = false;\n>>   \tdispatcher_->processEvents();\n>>   }\n>>   \n>> @@ -316,7 +318,7 @@ int FenceTest::run()\n>>   \tTimer timer;\n>>   \ttimer.start(1000);\n>>   \twhile (timer.isRunning() && expectedCompletionResult_) {\n>> -\t\tif (completedRequest_ == signalledRequestId_)\n>> +\t\tif (completedRequest_ == signalledRequestId_ && setFence_)\n> A bit of a hack, but I suppose it works. The test is hard to read,\n> there's room for improvement (and possibly a race condition or two), but\n> that's not urgent.\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n>\n>>   \t\t\t/*\n>>   \t\t\t * signalledRequestId_ has just completed and it has\n>>   \t\t\t * been re-queued with a fence. Start the timer to","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 00A7EBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Dec 2021 15:42:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 58CB76088E;\n\tMon, 13 Dec 2021 16:42:23 +0100 (CET)","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 93F0760868\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Dec 2021 16:42:21 +0100 (CET)","from [IPv6:2401:4900:1f3e:37a3:270b:b541:a3a9:933b] (unknown\n\t[IPv6:2401:4900:1f3e:37a3:270b:b541:a3a9:933b])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id AF05651C;\n\tMon, 13 Dec 2021 16:42:19 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"XPIJc7Av\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1639410141;\n\tbh=jNhZqKWmwv4fSEwyzHc0pwiB6yefwGLaqRxSrlBYDnM=;\n\th=Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=XPIJc7AvsMX7bbFI75eZXR/+IgP6C8zEbaj/Os4FMUSEQfzgInUnCrX0CQx3wUmSD\n\tzMl/3XOQ50DHTHp2UXuyUP8sRW/esCIW7tXLOjsXl7hNzEn8snN5CMgIqgvCrMh6Gu\n\t+25mTALoGp3GwqoRA3adtKKpFlb20r/WD8nUdo/Q=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tJacopo Mondi <jacopo@jmondi.org>","References":"<20211213145143.218734-1-jacopo@jmondi.org>\n\t<20211213145143.218734-3-jacopo@jmondi.org>\n\t<Ybdlvhs0II826oey@pendragon.ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<22b081fd-a6bf-563d-ebc3-326c40d7ee20@ideasonboard.com>","Date":"Mon, 13 Dec 2021 21:12:14 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<Ybdlvhs0II826oey@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH 2/2] test: fence: Signal fence once","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]