From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
sakari.ailus@linux.intel.com,
christoph.muellner@theobroma-systems.com, martink@posteo.de,
mfuzzey@parkeon.com, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 08/10] iio: accel: mma8452: use pm_ptr() and direct runtime PM calls
Date: Thu, 07 May 2026 08:16:40 +0530 [thread overview]
Message-ID: <4719ED48-6731-4319-8724-35F174C199B8@gmail.com> (raw)
In-Reply-To: <20260506190654.598dca87@jic23-huawei>
On 6 May 2026 11:36:54 pm IST, Jonathan Cameron <jic23@kernel.org> wrote:
>On Tue, 5 May 2026 23:16:38 +0530
>Sanjay Chitroda <sanjayembeddedse@gmail.com> wrote:
>
>> From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>>
>> Use pm_ptr() together with DEFINE_RUNTIME_DEV_PM_OPS() so the PM ops
>> pointer is automatically handled when CONFIG_PM is enabled or disabled.
>>
>> Switch to direct PM runtime calls and drop
>> mma8452_set_runtime_pm_state() wrapper, which is no longer needed.
>> This follows modern kernel power-management conventions.
>>
>> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>
>Hi Sanjay,
>
>The cleanup you have in here has made what i think are two nasty race
>conditions much more obvious. I think we need to fix those
>(and that fix needs to go at the start of this series)
>
>Thanks for you work on this driver - this problem has been
>there a long time!
>
>Jonathan
>
Hi Jonathan,
Thank you for your review and kind words.
Your guidance and feedback are very motivating and help contributors stay consistent and improve their work.
It is an honor to collaborate and learn from experienced maintainers like you.
Also, I would like to know if there are any opportunities in other IIO drivers or within the kernel framework where contributions would be helpful, especially around fixes, resource management, power management, or general code cleanup and coding style improvements. I would be glad to work on such areas and continue contributing.
Thanks,
Sanjay Chitroda
>> ---
>> Changes in v3:
>> - Use direct PM runtime calls and drop redundant wrapper along with CONFIG_PM
>> - Link to v2: https://lore.kernel.org/all/20260422165643.2148195-6-sanjayembedded@gmail.com/
>> Changes in v2:
>> - Use DEFINE_RUNTIME_DEV_PM_OPS to address review comment and resolve 0-day bot warning
>> - Link to v1: https://lore.kernel.org/all/20260414192045.3598010-1-sanjayembedded@gmail.com/
>> ---
>> drivers/iio/accel/mma8452.c | 55 +++++++++++++------------------------
>> 1 file changed, 19 insertions(+), 36 deletions(-)
>>
>> diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
>> index 2cd24b1543af..5ab981481599 100644
>
>
>> static ssize_t mma8452_show_int_plus_micros(char *buf, const int (*vals)[2],
>> @@ -974,6 +953,7 @@ static int mma8452_write_event_config(struct iio_dev *indio_dev,
>> bool state)
>> {
>> struct mma8452_data *data = iio_priv(indio_dev);
>> + struct device *dev = &data->client->dev;
>> int val, ret;
>> const struct mma8452_event_regs *ev_regs;
>>
>> @@ -981,8 +961,11 @@ static int mma8452_write_event_config(struct iio_dev *indio_dev,
>> if (ret)
>> return ret;
>>
>> - ret = mma8452_set_runtime_pm_state(data->client, state);
>This smells like the same bug as below.
>> - if (ret)
>> + if (state)
>> + ret = pm_runtime_resume_and_get(dev);
>> + else
>> + ret = pm_runtime_put_autosuspend(dev);
>> + if (ret < 0)
>> return ret;
>>
>> switch (dir) {
>> @@ -1452,10 +1435,15 @@ static int mma8452_data_rdy_trigger_set_state(struct iio_trigger *trig,
>> {
>> struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
>> struct mma8452_data *data = iio_priv(indio_dev);
>> + struct device *dev = &data->client->dev;
>> +
>> int reg, ret;
>>
>> - ret = mma8452_set_runtime_pm_state(data->client, state);
>
>This functions makes me very suspicious and I think has a nasty existing
>race condition. If the auto suspend were to suspend immediately
>vddio would be powered down. Unless they supplies have odd naming on this
>device that means the bus would be down before the write that follows.
>
>As such I think this needs s rewrite to makes sure we only call
>pm_runtime_put_autosuspend() after the bus writes in this function are done.
>
>I think that is safe to do without testing as all it will do is delay
>when the power gets turned off a tiny bit.
>
While in-corporating direct PM runtime call; I also observed that this is against the expectation and design as per my knowledge.
However, I assume that thisust be well tested and something which I may not aware specific to driver. So I done changes as per requirement and waited for input from reviewer and potentially guidance on the same.
Now, this is clear issue and will handle same in next series.
>> - if (ret)
>> + if (state)
>> + ret = pm_runtime_resume_and_get(dev);
>> + else
>> + ret = pm_runtime_put_autosuspend(dev);
>> + if (ret < 0)
>> return ret;
>>
>> reg = i2c_smbus_read_byte_data(data->client, MMA8452_CTRL_REG4);
>> @@ -1738,7 +1726,6 @@ static void mma8452_remove(struct i2c_client *client)
>> regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs);
>> }
>
next prev parent reply other threads:[~2026-05-07 2:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-05 17:46 [PATCH v3 00/10] iio: accel: mma8452: improve coding style, pm and resource cleanup Sanjay Chitroda
2026-05-05 17:46 ` [PATCH v3 01/10] iio: accel: mma8452: handle I2C read error(s) in mma8452_read() Sanjay Chitroda
2026-05-05 17:46 ` [PATCH v3 02/10] iio: accel: mma8452: switch to non-devm request_threaded_irq() Sanjay Chitroda
2026-05-06 17:47 ` Jonathan Cameron
2026-05-05 17:46 ` [PATCH v3 03/10] iio: accel: mma8452: cleanup codestyle warning Sanjay Chitroda
2026-05-06 9:24 ` Joshua Crofts
2026-05-06 17:53 ` Jonathan Cameron
2026-05-05 17:46 ` [PATCH v3 04/10] iio: accel: mma8452: sort headers alphabetically Sanjay Chitroda
2026-05-06 9:29 ` Joshua Crofts
2026-05-05 17:46 ` [PATCH v3 05/10] iio: accel: mma8452: Use dev_err_probe() Sanjay Chitroda
2026-05-05 18:45 ` Joshua Crofts
2026-05-06 9:22 ` Andy Shevchenko
2026-05-06 9:27 ` Joshua Crofts
2026-05-06 9:37 ` Andy Shevchenko
2026-05-05 17:46 ` [PATCH v3 06/10] iio: accel: mma8452: convert to bulk regulator usage Sanjay Chitroda
2026-05-05 22:34 ` Joshua Crofts
2026-05-06 9:31 ` Andy Shevchenko
2026-05-05 17:46 ` [PATCH v3 07/10] iio: accel: mma8452: use local struct device Sanjay Chitroda
2026-05-06 9:19 ` Joshua Crofts
2026-05-07 2:17 ` Sanjay Chitroda
2026-05-06 9:34 ` Andy Shevchenko
2026-05-05 17:46 ` [PATCH v3 08/10] iio: accel: mma8452: use pm_ptr() and direct runtime PM calls Sanjay Chitroda
2026-05-06 9:42 ` Andy Shevchenko
2026-05-06 18:06 ` Jonathan Cameron
2026-05-07 2:46 ` Sanjay Chitroda [this message]
2026-05-05 17:46 ` [PATCH v3 09/10] iio: accel: mma8452: Use IIO cleanup helpers Sanjay Chitroda
2026-05-05 17:46 ` [PATCH v3 10/10] iio: accel: mma8452: use guard() to release mutexes Sanjay Chitroda
2026-05-06 9:46 ` Andy Shevchenko
2026-05-06 9:24 ` [PATCH v3 00/10] iio: accel: mma8452: improve coding style, pm and resource cleanup Andy Shevchenko
2026-05-07 2:12 ` Sanjay Chitroda
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=4719ED48-6731-4319-8724-35F174C199B8@gmail.com \
--to=sanjayembeddedse@gmail.com \
--cc=andy@kernel.org \
--cc=christoph.muellner@theobroma-systems.com \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martink@posteo.de \
--cc=mfuzzey@parkeon.com \
--cc=nuno.sa@analog.com \
--cc=sakari.ailus@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox