From: "Kurt Borja" <kuurtb@gmail.com>
To: "David Lechner" <dlechner@baylibre.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: "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 v2 2/7] iio: core: Refactor iio_device_claim_direct() implementation
Date: Sat, 27 Dec 2025 12:58:42 -0500 [thread overview]
Message-ID: <DF97040MFVN2.18VE8M36CAX80@gmail.com> (raw)
In-Reply-To: <6ad0f764-91f2-4946-81cd-9363ec87722a@baylibre.com>
On Tue Dec 23, 2025 at 12:20 PM -05, David Lechner wrote:
> On 12/11/25 8:45 PM, Kurt Borja wrote:
>> In order to eventually unify the locking API, implement
>> iio_device_claim_direct() fully inline, with the use of
>> __iio_dev_mode_lock(), which takes care of sparse annotations.
>>
>> Signed-off-by: Kurt Borja <kuurtb@gmail.com>
>> ---
...
>> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
>> index aecda887d833..76398dbfa5ca 100644
>> --- a/include/linux/iio/iio.h
>> +++ b/include/linux/iio/iio.h
>> @@ -664,30 +664,42 @@ int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp);
>>
>> void __iio_dev_mode_lock(struct iio_dev *indio_dev) __acquires(indio_dev);
>> void __iio_dev_mode_unlock(struct iio_dev *indio_dev) __releases(indio_dev);
>> -bool __iio_device_claim_direct(struct iio_dev *indio_dev);
>> -void __iio_device_release_direct(struct iio_dev *indio_dev);
>>
>> -/*
>> - * Helper functions that allow claim and release of direct mode
>> - * in a fashion that doesn't generate many false positives from sparse.
>> - * Note this must remain static inline in the header so that sparse
>> - * can see the __acquire() marking. Revisit when sparse supports
>> - * __cond_acquires()
>
> I think we should leave a comment that says these functions need to stay
> as static inline so that sparse works. Although I'm wondering how sparse
I'll keep that part!
> could still work since __acquire() and __release() are removed here. IIRC
> it was a bit finicky about that.
Now __iio_dev_mode_{lock,unlock}() are declared with __acquires() and
__releases() tags. These are then used conditionally in
iio_device_claim_direct().
I did test every driver with `make C=2` and it seems to work in the same
way.
...
>> +/**
>> + * iio_device_release_direct - Releases claim on direct mode
>> + * @indio_dev: the iio_dev associated with the device
>> + *
>> + * Release the claim. Device is no longer guaranteed to stay
>> + * in direct mode.
>> + *
>> + * Use with iio_device_claim_direct()
>> + */
>> static inline void iio_device_release_direct(struct iio_dev *indio_dev)
>
> It could make more sense to make this:
>
> #define iio_device_release_direct __iio_dev_mode_unlock
>
> To make it clear that the auto cleanup functions that come later
> don't call iio_device_release_direct() but rather call
> __iio_dev_mode_unlock() directly.
>
> Otherwise, someone could be tempted to modify the iio_device_release_direct()
> function and the changes would not have an effect when auto cleanup is used.
>
> (Same applies to the release buffer mode function.)
>
Agree. I'll implement it like this.
--
~ Kurt
next prev parent reply other threads:[~2025-12-27 17:58 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-12 2:45 [PATCH v2 0/7] iio: core: Introduce cleanup.h support for mode locks Kurt Borja
2025-12-12 2:45 ` [PATCH v2 1/7] iio: core: Add and export __iio_dev_mode_lock() Kurt Borja
2025-12-12 18:21 ` Andy Shevchenko
2025-12-22 22:50 ` Kurt Borja
2025-12-23 17:19 ` David Lechner
2025-12-27 17:51 ` Kurt Borja
2025-12-27 18:13 ` David Lechner
2025-12-12 2:45 ` [PATCH v2 2/7] iio: core: Refactor iio_device_claim_direct() implementation Kurt Borja
2025-12-12 18:23 ` Andy Shevchenko
2025-12-23 17:20 ` David Lechner
2025-12-27 17:58 ` Kurt Borja [this message]
2025-12-12 2:45 ` [PATCH v2 3/7] iio: core: Match iio_device_claim_*() semantics and implementation Kurt Borja
2025-12-12 18:27 ` Andy Shevchenko
2025-12-27 14:47 ` Jonathan Cameron
2025-12-27 18:14 ` Kurt Borja
2025-12-27 18:24 ` David Lechner
2025-12-27 18:44 ` Kurt Borja
2026-01-11 11:33 ` Jonathan Cameron
2026-01-13 10:38 ` Nuno Sá
2025-12-12 2:45 ` [PATCH v2 4/7] iio: core: Add cleanup.h support for iio_device_claim_*() Kurt Borja
2025-12-23 17:23 ` David Lechner
2025-12-27 14:53 ` Jonathan Cameron
2025-12-27 18:08 ` Kurt Borja
2025-12-27 18:04 ` Kurt Borja
2025-12-27 18:20 ` David Lechner
2025-12-12 2:45 ` [PATCH v2 5/7] iio: light: vcnl4000: Use IIO cleanup helpers Kurt Borja
2025-12-12 2:45 ` [PATCH v2 6/7] iio: health: max30102: " Kurt Borja
2025-12-12 2:45 ` [PATCH v2 7/7] iio: light: opt4060: " Kurt Borja
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=DF97040MFVN2.18VE8M36CAX80@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=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.