{"id":11710,"url":"https://patchwork.libcamera.org/api/1.1/covers/11710/?format=json","web_url":"https://patchwork.libcamera.org/cover/11710/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20210325134231.1400051-3-kieran.bingham@ideasonboard.com>","date":"2021-03-25T13:42:20","name":"[libcamera-devel,v3,00/11] IPU3 Debug Improvements","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/1.1/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/11710/mbox/","series":[{"id":1833,"url":"https://patchwork.libcamera.org/api/1.1/series/1833/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1833","date":"2021-03-25T13:42:20","name":"IPU3 Debug Improvements","version":3,"mbox":"https://patchwork.libcamera.org/series/1833/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/11710/comments/","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 EB7E0C32E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Mar 2021 13:42:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1F90568D84;\n\tThu, 25 Mar 2021 14:42:41 +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 CACCD6084F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Mar 2021 14:42:36 +0100 (CET)","from Q.local (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net\n\t[86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D96128F0;\n\tThu, 25 Mar 2021 14:42:35 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"mLZZ5UD0\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1616679756;\n\tbh=D5YZwtGXBunjyQzPUm+FMkCYzZefho2Kq0DASagpSfI=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=mLZZ5UD0fbLTBIFw71JSYS77FpeCVxCiinxEt/efvgrmoNp5L/a4bBT69nSQaFyjq\n\toXYzuTyiy/BxoQV1fKWiLSCwb+Trsw+SEwNsGKIg4H4PAqZ33/cZLVFCdkh5UIy+Rw\n\tAy7HzQMzrFVt1W3GDkgHc9ZPyxMQW+5PxTqcHWJ8=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Thu, 25 Mar 2021 13:42:20 +0000","Message-Id":"<20210325134231.1400051-3-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.25.1","In-Reply-To":"<20210325134231.1400051-1-kieran.bingham@ideasonboard.com>","References":"<20210325134231.1400051-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH v3 00/11] IPU3 Debug Improvements","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>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Ok, so this is only partially a v3. Some of these patches were part of\nthe other series at v2, so this one got bumped.\n\nAnyway, here's the remainder of my current patches that were developed\nwhile investigating the reliability of the IPU3. Many of which I believe\nare worthy for integration and discussion.\n\nThey're somewhat of an unrelated bunch, but rather than post\nindividually, they may as well be grouped together in the form of\n'general fixups and improvements', and hopefully these help towards\nimproving general maintenance, but they're not specifically IPU3.\n\n...\n\nThe IPC Proxy is extended to have a state machine to go further than\nsimply tracking a running_ boolean.\n\nThe Request object is no longer friends with a buffer, and is extended\nto support sequence numbers, and printing as a string. The request\ncanary is promoted away from RFC as I feel it has real benefit, but it\ncan still be considered optional.\n\nThe Camera class now validates requests are completed in the correct\nstate, and adds an assertion to guarantee that all pipeline handlers\ncomplete all requests when they are stopped. The state machine\nvalidation is also extended to report which function was responsible for\nthe call in the event of a failed state check, as this is key\ninformation for determining what failure occured.\n\nFinally, some improvements to the IPU3 Frames class tidy things up and\nadd guarantees to ensure we correctly match resources with a FrameInfo\nwhen required.\n\n\nKieran Bingham (11):\n  utils: ipc: proxy: Track IPA with a state machine\n  libcamera: buffer: Break friendship with Request\n  libcamera: request: Provide a sequence number\n  libcamera: request: Add a toString()\n  libcamera: request: A request canary\n  libcamera: camera: Validate requests are completed in Running state\n  libcamera: camera: Report function which fails access control\n  libcamera: camera: Extend with a Stopping state\n  libcamera: camera: Assert pipelines complete all requests\n  libcamera: pipeline: ipu3: frames: Fail if the FrameInfo can't be\n    found\n  libcamera: pipeline: ipu3: frames: Use the request sequence\n\n include/libcamera/buffer.h                    |  1 -\n include/libcamera/internal/pipeline_handler.h |  5 +-\n include/libcamera/request.h                   |  7 ++\n src/libcamera/camera.cpp                      | 77 +++++++++++++------\n src/libcamera/pipeline/ipu3/frames.cpp        | 10 +--\n src/libcamera/pipeline/ipu3/frames.h          |  1 -\n src/libcamera/pipeline_handler.cpp            | 19 +++++\n src/libcamera/request.cpp                     | 68 +++++++++++++---\n .../module_ipa_proxy.cpp.tmpl                 |  8 +-\n .../module_ipa_proxy.h.tmpl                   |  8 +-\n .../libcamera_templates/proxy_functions.tmpl  |  7 +-\n 11 files changed, 165 insertions(+), 46 deletions(-)"}