[libcamera-devel] [PATCH 3/3] libcamera: ipa_manager: Allow forcing IPA module isolation

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jul 12 01:15:47 CEST 2021


For test purpose it's useful to run open-source IPA modules in
isolation. This can already be done by deleting the corresponding
signature file, but that method can be inconvenient. Add a way to force
IPA module isolation through a new LIBCAMERA_IPA_FORCE_ISOLATION
environment variable.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 Documentation/environment_variables.rst | 5 +++++
 src/libcamera/ipa_manager.cpp           | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/Documentation/environment_variables.rst b/Documentation/environment_variables.rst
index d392fd26b87a..1e85befd538a 100644
--- a/Documentation/environment_variables.rst
+++ b/Documentation/environment_variables.rst
@@ -24,6 +24,11 @@ LIBCAMERA_IPA_CONFIG_PATH
 
    Example value: ``${HOME}/.libcamera/share/ipa:/opt/libcamera/vendor/share/ipa``
 
+LIBCAMERA_IPA_FORCE_ISOLATION
+   When set to a non-empty string, force process isolation of all IPA modules.
+
+   Example value: ``1``
+
 LIBCAMERA_IPA_MODULE_PATH
    Define custom search locations for IPA modules (`more <IPA module_>`__).
 
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index 9533c8fadea6..028b2ce21779 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -276,6 +276,14 @@ IPAModule *IPAManager::module(PipelineHandler *pipe, uint32_t minVersion,
 bool IPAManager::isSignatureValid([[maybe_unused]] IPAModule *ipa) const
 {
 #if HAVE_IPA_PUBKEY
+	char *force = utils::secure_getenv("LIBCAMERA_IPA_FORCE_ISOLATION");
+	if (force && force[0] != '\0') {
+		LOG(IPAManager, Debug)
+			<< "Isolation of IPA module " << ipa->path()
+			<< " forced through environment variable";
+		return false;
+	}
+
 	File file{ ipa->path() };
 	if (!file.open(File::ReadOnly))
 		return false;
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list