lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240803164428.50fdd15c@jic23-huawei>
Date: Sat, 3 Aug 2024 16:44:28 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: Denis Benato <benato.denis96@...il.com>
Cc: Lars-Peter Clausen <lars@...afoo.de>, Jagath Jog J
 <jagathjog1996@...il.com>, linux-iio@...r.kernel.org,
 linux-kernel@...r.kernel.org, "Luke D . Jones" <luke@...nes.dev>, Jonathan
 LoBue <jlobue10@...il.com>
Subject: Re: [PATCH v2 2/2] iio: bmi323: suspend and resume triggering on
 relevant pm operations

On Sat, 27 Jul 2024 14:30:34 +0200
Denis Benato <benato.denis96@...il.com> wrote:

> Prevent triggers from stop working after the device has entered sleep:
> use iio_device_suspend_triggering and iio_device_resume_triggering helpers.

Hi Denis,

I'd got it into my head this was about main suspend / resume, but
it's runtime PM. I assume the s2idle uses only that level which is
interesting.

Anyhow, solution seems safe. We might be able to do something nicer
in the long run as potentially we could have the trigger driver
notified when all consumers have entered this state at which point it
could stop generating triggers at all.

Anyhow, that's a job for when we actually care about it.

Applied to the togreg branch of iio.git and pushed out as testing
for 0-day to poke at it.

For now I'm not keen to see this pushed into drivers where we don't
know if anyone is running into this particular situation.  We can
reevaluate that if we start getting lots of reports of this.

I'm also not going to rush this in as a fix. We can consider backporting
it once it's been in mainline for a bit and no side effects have
shown up.

Thanks,

Jonathan

> 
> Signed-off-by: Denis Benato <benato.denis96@...il.com>
> ---
>  drivers/iio/imu/bmi323/bmi323.h      |  1 +
>  drivers/iio/imu/bmi323/bmi323_core.c | 23 +++++++++++++++++++++++
>  drivers/iio/imu/bmi323/bmi323_i2c.c  |  1 +
>  drivers/iio/imu/bmi323/bmi323_spi.c  |  1 +
>  4 files changed, 26 insertions(+)
> 
> diff --git a/drivers/iio/imu/bmi323/bmi323.h b/drivers/iio/imu/bmi323/bmi323.h
> index dff126d41658..209bccb1f335 100644
> --- a/drivers/iio/imu/bmi323/bmi323.h
> +++ b/drivers/iio/imu/bmi323/bmi323.h
> @@ -205,5 +205,6 @@
>  struct device;
>  int bmi323_core_probe(struct device *dev);
>  extern const struct regmap_config bmi323_regmap_config;
> +extern const struct dev_pm_ops bmi323_core_pm_ops;
>  
>  #endif
> diff --git a/drivers/iio/imu/bmi323/bmi323_core.c b/drivers/iio/imu/bmi323/bmi323_core.c
> index d708d1fe3e42..4b2b211a3e88 100644
> --- a/drivers/iio/imu/bmi323/bmi323_core.c
> +++ b/drivers/iio/imu/bmi323/bmi323_core.c
> @@ -2121,6 +2121,29 @@ int bmi323_core_probe(struct device *dev)
>  }
>  EXPORT_SYMBOL_NS_GPL(bmi323_core_probe, IIO_BMI323);
>  
> +#if defined(CONFIG_PM)
> +static int bmi323_core_runtime_suspend(struct device *dev)
> +{
> +	struct iio_dev *indio_dev = dev_get_drvdata(dev);
> +
> +	return iio_device_suspend_triggering(indio_dev);
> +}
> +
> +static int bmi323_core_runtime_resume(struct device *dev)
> +{
> +	struct iio_dev *indio_dev = dev_get_drvdata(dev);
> +
> +	return iio_device_resume_triggering(indio_dev);
> +}
> +
> +#endif
> +
> +const struct dev_pm_ops bmi323_core_pm_ops = {
> +	SET_RUNTIME_PM_OPS(bmi323_core_runtime_suspend,
> +			   bmi323_core_runtime_resume, NULL)
> +};
> +EXPORT_SYMBOL_NS_GPL(bmi323_core_pm_ops, IIO_BMI323);
> +
>  MODULE_DESCRIPTION("Bosch BMI323 IMU driver");
>  MODULE_AUTHOR("Jagath Jog J <jagathjog1996@...il.com>");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/iio/imu/bmi323/bmi323_i2c.c b/drivers/iio/imu/bmi323/bmi323_i2c.c
> index 52140bf05765..057342f4f816 100644
> --- a/drivers/iio/imu/bmi323/bmi323_i2c.c
> +++ b/drivers/iio/imu/bmi323/bmi323_i2c.c
> @@ -128,6 +128,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_i2c_match);
>  static struct i2c_driver bmi323_i2c_driver = {
>  	.driver = {
>  		.name = "bmi323",
> +		.pm = pm_ptr(&bmi323_core_pm_ops),
>  		.of_match_table = bmi323_of_i2c_match,
>  		.acpi_match_table = bmi323_acpi_match,
>  	},
> diff --git a/drivers/iio/imu/bmi323/bmi323_spi.c b/drivers/iio/imu/bmi323/bmi323_spi.c
> index 7b1e8127d0dd..487d4ee05246 100644
> --- a/drivers/iio/imu/bmi323/bmi323_spi.c
> +++ b/drivers/iio/imu/bmi323/bmi323_spi.c
> @@ -79,6 +79,7 @@ MODULE_DEVICE_TABLE(of, bmi323_of_spi_match);
>  static struct spi_driver bmi323_spi_driver = {
>  	.driver = {
>  		.name = "bmi323",
> +		.pm = pm_ptr(&bmi323_core_pm_ops),
>  		.of_match_table = bmi323_of_spi_match,
>  	},
>  	.probe = bmi323_spi_probe,


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ