From patchwork Fri Sep 24 17:25:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 13930 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id AEC6DBDC71 for ; Fri, 24 Sep 2021 17:24:43 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 19BC86918D; Fri, 24 Sep 2021 19:24:43 +0200 (CEST) Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 49DE4687DD for ; Fri, 24 Sep 2021 19:24:41 +0200 (CEST) Received: (Authenticated sender: jacopo@jmondi.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id CE2FD1BF208; Fri, 24 Sep 2021 17:24:40 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Fri, 24 Sep 2021 19:25:20 +0200 Message-Id: <20210924172525.160482-1-jacopo@jmondi.org> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 0/5] libcamera: control serializer fixes X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" This series has started from investigating an error triggered by running consecutive capture sessions with the IPU3 IPA module running in isolation. From there a few more fixes/improvements have lead me to be capable to running CTS with isolated IPA with a single failure (the flaky recording tests). Patch 1 is a small cleanup of the IPU3 IPA interface. Patches 2, 3 and 4 fix issues in the control serializer, most of them went not noticed as the IPA is seldom run isolated for the moment. Patch 5 is new and replaces "libcamera: control_serializer: Keep handles in sync" from v1 and represents the most relevant change. As the v1 version still allowed conflicts to happen, this new version adds a 'seed' to the ControlSerializer and partitions the handles numerical space on the two sides of the IPC boundary so that the Proxy and the ProxyWorker will never use the same handles. Thanks j Jacopo Mondi (5): libcamera: ipu3: Drop entityControls map ipa: proxy_worker: Reset ControlSerializer on worker libcamera: control_serializer: Use the right idmap libcamera: control_serializer: Serialize info::def() libcamera: control_serializer: Separate the handles space include/libcamera/controls.h | 1 + .../libcamera/internal/control_serializer.h | 8 +- include/libcamera/ipa/ipu3.mojom | 2 +- src/ipa/ipu3/ipu3.cpp | 6 +- src/libcamera/control_serializer.cpp | 120 +++++++++++++++--- src/libcamera/controls.cpp | 8 ++ src/libcamera/ipa_controls.cpp | 14 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +- test/serialization/control_serialization.cpp | 4 +- .../ipa_data_serializer_test.cpp | 6 +- .../module_ipa_proxy.cpp.tmpl | 3 +- .../module_ipa_proxy_worker.cpp.tmpl | 7 +- 12 files changed, 146 insertions(+), 35 deletions(-) --- 2.32.0