From: "Kurt Borja" <kuurtb@gmail.com>
To: "Nuno Sá" <noname.nuno@gmail.com>,
"Kurt Borja" <kuurtb@gmail.com>,
"Andy Shevchenko" <andriy.shevchenko@intel.com>,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Michael Hennerich" <Michael.Hennerich@analog.com>,
"Jonathan Cameron" <jic23@kernel.org>,
"Benson Leung" <bleung@chromium.org>,
"Antoniu Miclaus" <antoniu.miclaus@analog.com>,
"Gwendal Grignou" <gwendal@chromium.org>,
"Shrikant Raskar" <raskar.shree97@gmail.com>,
"Per-Daniel Olsson" <perdaniel.olsson@axis.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Guenter Roeck" <groeck@chromium.org>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
chrome-platform@lists.linux.dev
Subject: Re: [PATCH v3 0/7] iio: core: Introduce cleanup.h support for mode locks
Date: Sun, 18 Jan 2026 10:19:09 -0500 [thread overview]
Message-ID: <DFRTDXTFAYGT.46CY6IJICG4W@gmail.com> (raw)
In-Reply-To: <363f81bfe996de839a43e9f6a355ed014cd3de8a.camel@gmail.com>
On Sun Jan 18, 2026 at 5:00 AM -05, Nuno Sá wrote:
> On Tue, 2026-01-06 at 03:06 -0500, Kurt Borja wrote:
>> Hi,
>>
>> In a recent driver review discussion [1], Andy Shevchenko suggested we
>> add cleanup.h support for the lock API:
>>
>> iio_device_claim_{direct,buffer_mode}().
>>
>> Which would allow some nice code simplification in many places. Some
>> examples are given as patches, but the last two are the biggest
>> differences.
>>
>> In this version I dropped the RFC tag, as the general feeling is to go
>> through with this after some modifications. Main one is the addition of
>> IIO_DEV_ACQUIRE_{BUFFER,CLAIM}_MODE() wrappers to avoid drivers using
>> the guard classes directly. I also added comments on the forbidden ways
>> to use this API but I definitely still take suggestions on this.
>>
>> For now I dropped iio_device_claim_buffer_mode() rename, as this point
>> is still being discussed. My suggestion based on the RFC discussion is
>> to do it, but in a separate patch (using coccinelle) and while we're at
>> it rename the whole API like this:
>>
>> iio_dev_mode_lock()
>> iio_dev_mode_direct_trylock()
>> iio_dev_mode_buffer_trylock()
>> iio_dev_mode_unlock()
>>
>> Let me know what you think and thanks for taking a look!
>>
>> Signed-off-by: Kurt Borja <kuurtb@gmail.com>
>> ---
>> v3:
>>
>> - Reword commit message of patch 1: infallible -> unconditional.
>>
>> - Drop "*strongly*" in __iio_dev_mode_lock() kernel-doc and be a bit
>> more clear on the function's intention.
>>
>> - Keep comment about inline functions and sparse markings, but drop
>> the __cond_acquires() part, as the new implementation makes it
>> unnecessary.
>>
>> - Implement iio_device_release_*() as macros around
>> __iio_dev_mode_unlock().
>>
>> - Rename iio_device_claim_buffer_mode() ->
>> iio_device_try_claim_buffer_mode() to avoid silently breaking
>> out-of-tree drivers.
>>
>> - Drop the `_` argument prefix in new macros, as there are no name
>> conflicts.
>>
>> - Drop "dummy" from IIO_DEV_ACQUIRE_DIRECT_MODE kernel-doc, as the
>> `claim` variable does store the error value.
>>
>> - Drop IIO_DEV_ACQUIRE_BUFFER_MODE() until a driver actually needs it.
>>
>> - Rename IIO_DEV_ACQUIRE_ERR() -> IIO_DEV_ACQUIRE_FAILED() to make the
>> name more clear.
>>
>> - Rename IIO_DEV_GUARD_ANY_MODE() -> IIO_DEV_GUARD_CURRENT_MODE() to
>> make the name more clear.
>>
>> - Add missing . in iio_device_release_direct() kernel-doc.
>>
>> NOTE: Andy suggested __iio_dev_mode_*() be exported into the IIO_CORE
>> namespace. However, this cannot be done because these functions
>> need to be called inline, so Sparse can see the __acquires() and
>> __releases() tags.
>>
>> Happy new year to everyone :)
>>
>> v2: https://lore.kernel.org/r/20251211-lock-impr-v2-0-6fb47bdaaf24@gmail.com
>>
>> - Add __iio_dev_mode_lock() (formerly iio_device_claim()) in the first
>> patch.
>>
>> - Added comments to make sure __iio_dev_mode_lock() is not used by
>> drivers to protect internal state, or in general.
>>
>> - Add patch which re-implements iio_device_claim_direct() using
>> __iio_dev_mode_lock().
>>
>> - Match iio_device_claim_buffer_mode() semantics by reimplementing it
>> in the same way as iio_device_claim_direct().
>>
>> - Guard classes now are prefixed with __priv__ to make sure drivers
>> don't use them directly.
>>
>> - Add IIO_DEV_ACQUIRE_{BUFFER,DIRECT}_MODE() documented wrappers
>>
>> - Avoid any function renames (for now).
>>
>> - Rename dummy variable `claim` instead of `busy` on vcnl4000 patch.
>>
>> - Avoid scoped guard in max30102.
>>
>> - Keep using iio_trigger_validate_own_device() insted of
>> iio_trigger_using_own() in opt4060.
>>
>> v1: https://lore.kernel.org/r/20251203-lock-impr-v1-0-b4a1fd639423@gmail.com
>>
>> ---
>> Kurt Borja (7):
>> iio: core: Add and export __iio_dev_mode_lock()
>> iio: core: Refactor iio_device_claim_direct() implementation
>> iio: core: Match iio_device_claim_*() semantics and implementation
>> iio: core: Add cleanup.h support for iio_device_claim_*()
>> iio: light: vcnl4000: Use IIO cleanup helpers
>> iio: health: max30102: Use IIO cleanup helpers
>> iio: light: opt4060: Use IIO cleanup helpers
>>
>> drivers/iio/adc/ade9000.c | 2 +-
>> .../common/cros_ec_sensors/cros_ec_sensors_core.c | 5 +-
>> drivers/iio/health/max30100.c | 8 +-
>> drivers/iio/health/max30102.c | 33 ++---
>> drivers/iio/industrialio-core.c | 86 +++---------
>> drivers/iio/light/opt4060.c | 52 +++-----
>> drivers/iio/light/vcnl4000.c | 49 +++----
>> include/linux/iio/iio.h | 145 +++++++++++++++++++--
>> 8 files changed, 196 insertions(+), 184 deletions(-)
>> ---
>> base-commit: fb2f4eb29a258145b0336601f00509cab6e93e7c
>> change-id: 20251130-lock-impr-6f22748c15e8
>
> Nothing to add from me...
>
> Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Thank you for your feedback, Nuno!
--
Thanks,
~ Kurt
prev parent reply other threads:[~2026-01-18 15:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-06 8:06 [PATCH v3 0/7] iio: core: Introduce cleanup.h support for mode locks Kurt Borja
2026-01-06 8:06 ` [PATCH v3 1/7] iio: core: Add and export __iio_dev_mode_lock() Kurt Borja
2026-01-16 20:18 ` Jonathan Cameron
2026-01-17 19:32 ` Kurt Borja
2026-01-06 8:06 ` [PATCH v3 2/7] iio: core: Refactor iio_device_claim_direct() implementation Kurt Borja
2026-01-16 21:51 ` David Lechner
[not found] ` <CAHp75Vei0q4bJrfuv28B+f-JOn2DGBkE3LT3UX8TiTnmUgDw_w@mail.gmail.com>
2026-01-17 19:45 ` Kurt Borja
2026-01-06 8:06 ` [PATCH v3 3/7] iio: core: Match iio_device_claim_*() semantics and implementation Kurt Borja
2026-01-06 8:06 ` [PATCH v3 4/7] iio: core: Add cleanup.h support for iio_device_claim_*() Kurt Borja
2026-01-16 20:29 ` Jonathan Cameron
2026-01-16 22:03 ` David Lechner
2026-01-18 15:23 ` Kurt Borja
2026-01-18 19:30 ` David Lechner
2026-01-06 8:07 ` [PATCH v3 6/7] iio: health: max30102: Use IIO cleanup helpers Kurt Borja
2026-01-06 8:07 ` [PATCH v3 7/7] iio: light: opt4060: " Kurt Borja
2026-01-16 20:33 ` [PATCH v3 0/7] iio: core: Introduce cleanup.h support for mode locks Jonathan Cameron
2026-01-17 19:42 ` Kurt Borja
2026-01-16 22:08 ` David Lechner
2026-01-17 19:44 ` Kurt Borja
2026-01-18 10:00 ` Nuno Sá
2026-01-18 15:19 ` Kurt Borja [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DFRTDXTFAYGT.46CY6IJICG4W@gmail.com \
--to=kuurtb@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=Michael.Hennerich@analog.com \
--cc=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=antoniu.miclaus@analog.com \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=dlechner@baylibre.com \
--cc=groeck@chromium.org \
--cc=gwendal@chromium.org \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=noname.nuno@gmail.com \
--cc=nuno.sa@analog.com \
--cc=perdaniel.olsson@axis.com \
--cc=raskar.shree97@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.