All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Cercueil <paul@crapouillou.net>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
	Jonathan Cameron <jic23@kernel.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Linus Walleij <linus.walleij@linaro.org>,
	Arnd Bergmann <arnd@arndb.de>, Len Brown <len.brown@intel.com>,
	Pavel Machek <pavel@ucw.cz>,
	list@opendingux.net, linux-iio@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org,
	linux-mmc@vger.kernel.org, linux-pm@vger.kernel.org,
	Jonathan Cameron <jonathan.cameron@huawei.com>
Subject: Re: [PATCH v2 1/6] PM: core: Remove DEFINE_UNIVERSAL_DEV_PM_OPS() macro
Date: Fri, 07 Jan 2022 17:39:27 +0000	[thread overview]
Message-ID: <R1PC5R.M6H5LAMRKZ9P@crapouillou.net> (raw)
In-Reply-To: <CAPDyKFpPOsoxBbamJWoAso_8cEb--Y1i4zDAnnTQ00EkSySVLQ@mail.gmail.com>



Le ven., janv. 7 2022 at 17:40:57 +0100, Ulf Hansson 
<ulf.hansson@linaro.org> a écrit :
> On Fri, 7 Jan 2022 at 17:37, Paul Cercueil <paul@crapouillou.net> 
> wrote:
>> 
>>  Hi Ulf,
>> 
>>  Le ven., janv. 7 2022 at 17:26:07 +0100, Ulf Hansson
>>  <ulf.hansson@linaro.org> a écrit :
>>  > On Wed, 5 Jan 2022 at 19:29, Paul Cercueil <paul@crapouillou.net>
>>  > wrote:
>>  >>
>>  >>  The deprecated UNIVERSAL_DEV_PM_OPS() macro uses the provided
>>  >> callbacks
>>  >>  for both runtime PM and system sleep, which is very likely to 
>> be a
>>  >>  mistake, as a system sleep can be triggered while a given 
>> device is
>>  >>  already PM-suspended, which would cause the suspend callback to 
>> be
>>  >>  called twice.
>>  >>
>>  >>  The amount of users of UNIVERSAL_DEV_PM_OPS() is also tiny (16
>>  >>  occurences) compared to the number of places where
>>  >>  SET_SYSTEM_SLEEP_PM_OPS() is used with 
>> pm_runtime_force_suspend()
>>  >> and
>>  >>  pm_runtime_force_resume(), which makes me think that none of 
>> these
>>  >> cases
>>  >>  are actually valid.
>>  >>
>>  >>  As this macro is currently unused, remove it before someone 
>> starts
>>  >> to
>>  >>  use it in yet another invalid case.
>>  >
>>  > I assume you refer to DEFINE_UNIVERSAL_DEV_PM_OPS here. Can you
>>  > perhaps make that more clear?
>> 
>>  I can.
>> 
>>  >>
>>  >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  >>  Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>>  >>  ---
>>  >>
>>  >>  Notes:
>>  >>      v2: No change
>>  >>
>>  >>   include/linux/pm.h | 19 ++++++-------------
>>  >>   1 file changed, 6 insertions(+), 13 deletions(-)
>>  >>
>>  >>  diff --git a/include/linux/pm.h b/include/linux/pm.h
>>  >>  index e1e9402180b9..31bbaafb06d2 100644
>>  >>  --- a/include/linux/pm.h
>>  >>  +++ b/include/linux/pm.h
>>  >>  @@ -366,6 +366,12 @@ static const struct dev_pm_ops name = { \
>>  >>          SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  >>   }
>>  >>
>>  >>  +/* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
>>  >>  +#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
>>  >>  +const struct dev_pm_ops __maybe_unused name = { \
>>  >>  +       SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  >>  +}
>>  >>  +
>>  >>   /*
>>  >>    * Use this for defining a set of PM operations to be used in 
>> all
>>  >> situations
>>  >>    * (system suspend, hibernation or runtime PM).
>>  >>  @@ -379,19 +385,6 @@ static const struct dev_pm_ops name = { \
>>  >>    * .resume_early(), to the same routines as .runtime_suspend() 
>> and
>>  >>    * .runtime_resume(), respectively (and analogously for
>>  >> hibernation).
>>  >>    */
>>  >>  -#define DEFINE_UNIVERSAL_DEV_PM_OPS(name, suspend_fn, 
>> resume_fn,
>>  >> idle_fn) \
>>  >>  -static const struct dev_pm_ops name = { \
>>  >>  -       SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  >>  -       RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
>>  >>  -}
>>  >>  -
>>  >>  -/* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
>>  >>  -#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
>>  >>  -const struct dev_pm_ops __maybe_unused name = { \
>>  >>  -       SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  >>  -}
>>  >>  -
>>  >>  -/* Deprecated. Use DEFINE_UNIVERSAL_DEV_PM_OPS() instead. */
>>  >
>>  > Shouldn't this macro be deprecated any more?
>> 
>>  I can only deprecate it if there is an alternative for it. The
>>  alternative is DEFINE_RUNTIME_DEV_PM_OPS() which is added in patch 
>> 4/6.
> 
> I don't think we need an immediate alternative to leave it 
> deprecated, do we?
> 
> My point is, a user can still combine the macros in a way so that it
> doesn't need to use the UNIVERSAL_DEV_PM_OPS.

Ok. I'll leave it deprecated in that patch then.

Cheers,
-Paul

>>  >>   #define UNIVERSAL_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> idle_fn)
>>  >> \
>>  >>   const struct dev_pm_ops __maybe_unused name = { \
>>  >>          SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  >>  --
> 
> Kind regards
> Uffe



  reply	other threads:[~2022-01-07 17:39 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-05 18:29 [PATCH v2 0/6] DEV_PM_OPS macros rework v2 Paul Cercueil
2022-01-05 18:29 ` [PATCH v2 1/6] PM: core: Remove DEFINE_UNIVERSAL_DEV_PM_OPS() macro Paul Cercueil
2022-01-07 16:26   ` Ulf Hansson
2022-01-07 16:37     ` Paul Cercueil
2022-01-07 16:40       ` Ulf Hansson
2022-01-07 17:39         ` Paul Cercueil [this message]
2022-01-05 18:29 ` [PATCH v2 2/6] PM: core: Remove static qualifier in DEFINE_SIMPLE_DEV_PM_OPS macro Paul Cercueil
2022-01-07 16:26   ` Ulf Hansson
2022-01-05 18:29 ` [PATCH v2 3/6] PM: core: Add EXPORT[_GPL]_SIMPLE_DEV_PM_OPS macros Paul Cercueil
2022-01-07 16:33   ` Ulf Hansson
2022-01-07 16:43     ` Paul Cercueil
2022-01-07 17:11       ` Ulf Hansson
2022-01-05 18:29 ` [PATCH v2 4/6] PM: runtime: Add DEFINE_RUNTIME_DEV_PM_OPS() macro Paul Cercueil
2022-01-05 18:29 ` [PATCH v2 5/6] PM: runtime: Add EXPORT[_GPL]_RUNTIME_DEV_PM_OPS macros Paul Cercueil
2022-01-05 18:29 ` [PATCH v2 6/6] iio: pressure: bmp280: Use new PM macros Paul Cercueil
2022-01-06 13:42   ` Jonathan Cameron

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=R1PC5R.M6H5LAMRKZ9P@crapouillou.net \
    --to=paul@crapouillou.net \
    --cc=arnd@arndb.de \
    --cc=jic23@kernel.org \
    --cc=jonathan.cameron@huawei.com \
    --cc=lars@metafoo.de \
    --cc=len.brown@intel.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=list@opendingux.net \
    --cc=pavel@ucw.cz \
    --cc=rafael@kernel.org \
    --cc=ulf.hansson@linaro.org \
    /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.