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

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Mon Jul 19 05:21:32 CEST 2021


Hi Laurent,

On Mon, Jul 12, 2021 at 02:15:47AM +0300, Laurent Pinchart wrote:
> 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.

Ooh, that's convenient.

> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder 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