Re: [PATCH v11 0/8] iio: add Open Sensor Fusion UART support
From: Kim Jinseob
Date: Sun Oct 18 2026 - 05:47:15 EST
Hi Jonathan,
I investigated the review comments on the two pending OSF KUnit patches.
The revised Kconfig allows the tests to run when OSF is built as a
module, using the existing composite driver without exporting internal
symbols.
I validated the following configurations:
OSF=y, KUNIT=y
OSF=m, KUNIT=y
OSF=m, KUNIT=m
All configurations used the enabled KUnit test selector. The existing
16 core and 2 IIO tests passed, including actual module load/unload
testing.
I also added deferred mutex cleanup for the pending-session, receive
and IIO test fixtures, and strengthened the producer/configuration
synchronization. The relevant cleanup paths were validated, including
assertion-abort cases.
The unregister concurrency test depends on mainline commit
84bb0fc46ccf, which is not yet in jic23/testing. I therefore ran that
test on a separate integration tree containing the fix.
I have prepared and validated an updated, signed two-patch KUnit-only
series based on the already applied OSF driver patches.
Since you mentioned wanting to review the KUnit tests further, would
you prefer that I send the updated two-patch series now, or wait until
you have completed your review?
Thanks,
Jinseob
2026년 10월 18일 (일) 오전 9:02, Jonathan Cameron <jic23@xxxxxxxxxx>님이 작성:
>
> On Mon, 12 Oct 2026 08:13:32 +0900
> Jinseob Kim <kimjinseob88@xxxxxxxxx> wrote:
>
> > This series adds a UART/serdev receiver for the project's fixed OSF
> > Device-to-Host 0.0 protocol. Complete capability snapshots create IIO
> > accelerometer, gyroscope, magnetometer and temperature devices with RAW,
> > descriptor-derived SCALE and initialized buffered scans.
> >
> > The receiver validates the fixed OSF0 envelope, CRC and exact known
> > message lengths. Equivalent capability reports are idempotent; changes
> > to a bound supported inventory fault the session until explicit rebind.
> > IIO samples use host timestamps.
> >
> Hi Jinseob,
>
> I'm going to do something a little unusual which is more about the time
> I have available today and desire to look more closely at your unit tests
> to learn from them. So for now I'm just going to apply the driver (so
> patches 1-6) and leave the last two on list and in patchwork as still needing
> review. Hopefully I will get time to circle back to them later this
> kernel cycle! In general I'm keen to get broad testing into IIO so
> want to learn from what you have done there.
>
> Jonathan
>
> > Changes since v10:
> > - Move OSF under drivers/iio/sensorhubs/osf/ following review.
> > - Use the OSF GREEN compatible with the generic OSF fallback.
> > - Clarify complete capability-report snapshot semantics.
> > - Use designated decoded-frame initialization and drop decoded reserved
> > fields while retaining reserved wire-byte tolerance.
> > - Reuse stream reset and simplify core/serdev locking and lifecycle.
> > - Use IIO buffer-mode claims instead of a private buffer lock.
> > - Simplify scan storage and channel declarations.
> > - Fix KUnit worker/device/mutex/resource/completion lifetimes.
> > Generic IIO self-test extraction remains deferred.
> > - Synchronize KUnit fault observation and configuration completion with
> > completions and thread joins instead of short polling/deadline windows.
> >
> > The IIO buffer teardown serialization issue found during the v10 review
> > was fixed separately and is now in mainline as commit 84bb0fc46ccf
> > ("iio: buffer: serialize buffer teardown with mode claims").
> >
> > This series is based on the IIO testing snapshot fetched for this submission:
> > a22dc7ebb21a6bd4c8b63bc2c1dd46a24945aae7
> > Runtime validation used this testing base plus the eight OSF patches
> > and the exact mainline IIO core fix 84bb0fc46ccf6a545b8fdf57cda83770186ed8dd.
> > The core fix is not included in this series and must be present when
> > running the series on this testing base.
> >
> > Fresh validation of this source:
> > - GCC and Clang W=1 kernel builds; module builds.
> > - osf-core (16 tests) and osf-iio (2 tests), with KASAN, lockdep,
> > DEBUG_MUTEXES, DEBUG_LOCK_ALLOC, DEBUG_OBJECTS and DEBUG_OBJECTS_FREE.
> > - 200 production module load/unload cycles and 200 test-enriched module
> > load/unload cycles using identical driver/test C sources, exercising
> > 20,000 IIO buffer toggles, scan subsets, timestamps and unregister.
> > - DT binding/style/example/schema checks and IIO Sphinx build.
> > - Clean sequential application and relevant builds of all eight patches.
> > Physical board tests were not repeated for this revision.
> >
> > Canonical specification (fixed revision):
> > https://github.com/opensensorfusion/opensensorfusion-protocol/blob/ca9cdea1ae550c2b4d6f29f87877adae99470744/spec/osf-d2h-0.0.md
> >
> > The fixed public specification is maintained and adopted by the OSF
> > project. This does not imply Linux maintainer approval of the
> > specification or driver.
> >
> > Jinseob Kim (8):
> > dt-bindings: iio: add Open Sensor Fusion device
> > Documentation: iio: add Open Sensor Fusion driver overview
> > iio: osf: add protocol decoding
> > iio: osf: add validated stream parser
> > iio: osf: add UART transport and core receive path
> > iio: osf: add IIO devices from capability reports
> > iio: osf: add core KUnit tests
> > iio: osf: add IIO KUnit tests
> >
> > .../bindings/iio/opensensorfusion,osf.yaml | 55 +
> > .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> > Documentation/iio/index.rst | 1 +
> > Documentation/iio/open-sensor-fusion.rst | 81 ++
> > MAINTAINERS | 8 +
> > drivers/iio/Kconfig | 1 +
> > drivers/iio/Makefile | 1 +
> > drivers/iio/sensorhubs/Kconfig | 7 +
> > drivers/iio/sensorhubs/Makefile | 3 +
> > drivers/iio/sensorhubs/osf/Kconfig | 27 +
> > drivers/iio/sensorhubs/osf/Makefile | 7 +
> > drivers/iio/sensorhubs/osf/osf_core.c | 460 +++++++
> > drivers/iio/sensorhubs/osf/osf_core.h | 75 ++
> > drivers/iio/sensorhubs/osf/osf_core_test.c | 1056 +++++++++++++++++
> > drivers/iio/sensorhubs/osf/osf_iio.c | 288 +++++
> > drivers/iio/sensorhubs/osf/osf_iio.h | 22 +
> > drivers/iio/sensorhubs/osf/osf_iio_test.c | 386 ++++++
> > drivers/iio/sensorhubs/osf/osf_protocol.c | 215 ++++
> > drivers/iio/sensorhubs/osf/osf_protocol.h | 99 ++
> > drivers/iio/sensorhubs/osf/osf_serdev.c | 151 +++
> > drivers/iio/sensorhubs/osf/osf_stream.c | 230 ++++
> > drivers/iio/sensorhubs/osf/osf_stream.h | 53 +
> > 22 files changed, 3228 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/iio/opensensorfusion,osf.yaml
> > create mode 100644 Documentation/iio/open-sensor-fusion.rst
> > create mode 100644 drivers/iio/sensorhubs/Kconfig
> > create mode 100644 drivers/iio/sensorhubs/Makefile
> > create mode 100644 drivers/iio/sensorhubs/osf/Kconfig
> > create mode 100644 drivers/iio/sensorhubs/osf/Makefile
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_core.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_core.h
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_core_test.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_iio.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_iio.h
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_iio_test.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_protocol.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_protocol.h
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_serdev.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_stream.c
> > create mode 100644 drivers/iio/sensorhubs/osf/osf_stream.h
> >
> >
> > base-commit: a22dc7ebb21a6bd4c8b63bc2c1dd46a24945aae7
> >
>