[libcamera-devel] [PATCH v2 0/8] IPU3 Stability

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Mar 12 06:47:19 CET 2021


This series continues the investigation and resolution of stability
issues identified on the IPU3 platform and pipeline handler.

Patches [1/8] and [2/8] are split from a test patch provided to me by
Laurent, where I have added the commit messages.

These ensure that messages sent by the IPA are handled correctly and do
not race at stop() time

Patch [3/8] was identified by valgrind and fixes an issue related to
uninitialised accesses on the buffers.

Patch [4/8] extends the state machine checks of the Camera to ensure
that the pipeline handler does not queue requests out of state.

Patch [5/8] is techincally the only remaining patch from v1 of the IPU3
stability series but now makes this condtion a fatal error to catch
incorrect usages in pipeline handlers.

Patch [6/8] has already been posted separately and is key to the
resolution of the IPU3 IPA shutdown procedure fixes.

Patch [7/8] adds a guarantee that all requests have completed before
releasing buffers. This guarantee would fail before this series. It
may be helpful to add this assertion to a common call in the pipeline
handler base class, or to the CameraData as part of future developments.

Patch [8/8] adds further assertions that the FrameInfo can be found
during event handling from the IPA. This also would have failed before
this series.


Kieran Bingham (6):
  libcamera: buffer: Initialise status
  libcamera: camera: Validate requests are completed in Running state
  libcamera: v4l2_videodevice: Prevent queueing buffers without a cache
  libcamera: pipeline: ipu3: Stop IPA before stopping devices
  libcamera: pipeline: ipu3: Ensure no requests are pending at stop()
  libcamera: pipeline: ipu3: Fail if the FrameInfo can't be found

Laurent Pinchart (2):
  utils: ipc: proxy: Assert asynchronous calls execute in the running
    state
  utils: ipc: proxy: Process pending messages

 include/libcamera/buffer.h                     |  4 ++--
 src/libcamera/camera.cpp                       | 10 ++++++++--
 src/libcamera/pipeline/ipu3/ipu3.cpp           | 18 +++++++++++++++---
 src/libcamera/v4l2_videodevice.cpp             | 10 ++++++++++
 .../module_ipa_proxy.cpp.tmpl                  |  2 ++
 .../libcamera_templates/proxy_functions.tmpl   |  6 ++++--
 6 files changed, 41 insertions(+), 9 deletions(-)

-- 
2.25.1



More information about the libcamera-devel mailing list