Re: [PATCH v11 0/8] iio: add Open Sensor Fusion UART support
From: Jonathan Cameron
Date: Sun Oct 18 2026 - 14:11:33 EST
On Sun, 18 Oct 2026 18:46:56 +0900
Kim Jinseob <kimjinseob88@xxxxxxxxx> wrote:
> 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?
If you have them ready go ahead and send the updated ones.
I'll mark this versions as superceeded in patchwork.
Thanks
Jonathan
>
> 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
> > >
> >