Message ID | 20220808174107.38676-2-paul@crapouillou.net |
---|---|
State | Accepted |
Commit | 34e1ed189fab1b7533befb266b96051104c1deb6 |
Headers | show |
Series | mfd: Remove #ifdef guards for PM functions | expand |
On Mon, 8 Aug 2022 19:40:38 +0200 Paul Cercueil <paul@crapouillou.net> wrote: > Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere > outside pm.h and pm_runtime.h, so it is safe to update it. > > Before, this macro would take a few parameters to be used as sleep and > runtime callbacks. This made it unsuitable to use with different > callbacks, for instance the "noirq" ones. > > It is now semantically different: instead of creating a conditionally > exported dev_pm_ops structure, it only contains part of the definition. > > This macro should however never be used directly (hence the trailing > underscore). Instead, the following four macros are provided: > - EXPORT_DEV_PM_OPS(name) > - EXPORT_GPL_DEV_PM_OPS(name) > - EXPORT_NS_DEV_PM_OPS(name, ns) > - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > > For instance, it is now possible to conditionally export noirq > suspend/resume PM functions like this: > > EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > }; > > The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and > EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> Looks good to me and much nicer than me making the situation worse as I did in the proposal to have a macro that took even more callbacks as it's parameters. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > Cc: Jonathan Cameron <jic23@kernel.org> > Cc: Rafael J. Wysocki <rafael@kernel.org> > Cc: linux-pm <linux-pm@vger.kernel.org> > > include/linux/pm.h | 37 +++++++++++++++++++++++-------------- > include/linux/pm_runtime.h | 20 ++++++++++++-------- > 2 files changed, 35 insertions(+), 22 deletions(-) > > diff --git a/include/linux/pm.h b/include/linux/pm.h > index 871c9c49ec9d..93cd34f00822 100644 > --- a/include/linux/pm.h > +++ b/include/linux/pm.h > @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \ > } > > #ifdef CONFIG_PM > -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn, sec, ns) \ > - _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn); \ > - __EXPORT_SYMBOL(name, sec, ns) > +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ > + const struct dev_pm_ops name; \ > + __EXPORT_SYMBOL(name, sec, ns); \ > + const struct dev_pm_ops name > #else > -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn, sec, ns) \ > -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ > - resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn) > +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ > + static __maybe_unused const struct dev_pm_ops __static_##name > #endif > > +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "") > +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "") > +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns) > +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns) > + > /* > * Use this if you want to use the same suspend and resume callbacks for suspend > * to RAM and hibernation. > @@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ > _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL) > > #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "") > + EXPORT_DEV_PM_OPS(name) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "") > + EXPORT_GPL_DEV_PM_OPS(name) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns) > + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns) > + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ > + 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) \ > diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h > index 9e4d056967c6..ba2077d9e366 100644 > --- a/include/linux/pm_runtime.h > +++ b/include/linux/pm_runtime.h > @@ -40,17 +40,21 @@ > resume_fn, idle_fn) > > #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "", "") > + EXPORT_DEV_PM_OPS(name) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "_gpl", "") > + EXPORT_GPL_DEV_PM_OPS(name) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "", #ns) > + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "_gpl", #ns) > + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > > #ifdef CONFIG_PM > extern struct workqueue_struct *pm_wq;
On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> wrote: > > Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere > outside pm.h and pm_runtime.h, so it is safe to update it. > > Before, this macro would take a few parameters to be used as sleep and > runtime callbacks. This made it unsuitable to use with different > callbacks, for instance the "noirq" ones. > > It is now semantically different: instead of creating a conditionally > exported dev_pm_ops structure, it only contains part of the definition. > > This macro should however never be used directly (hence the trailing > underscore). Instead, the following four macros are provided: > - EXPORT_DEV_PM_OPS(name) > - EXPORT_GPL_DEV_PM_OPS(name) > - EXPORT_NS_DEV_PM_OPS(name, ns) > - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > > For instance, it is now possible to conditionally export noirq > suspend/resume PM functions like this: > > EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > }; > > The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and > EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> or please let me know if you need me to pick up this one. > --- > Cc: Jonathan Cameron <jic23@kernel.org> > Cc: Rafael J. Wysocki <rafael@kernel.org> > Cc: linux-pm <linux-pm@vger.kernel.org> > > include/linux/pm.h | 37 +++++++++++++++++++++++-------------- > include/linux/pm_runtime.h | 20 ++++++++++++-------- > 2 files changed, 35 insertions(+), 22 deletions(-) > > diff --git a/include/linux/pm.h b/include/linux/pm.h > index 871c9c49ec9d..93cd34f00822 100644 > --- a/include/linux/pm.h > +++ b/include/linux/pm.h > @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \ > } > > #ifdef CONFIG_PM > -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn, sec, ns) \ > - _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn); \ > - __EXPORT_SYMBOL(name, sec, ns) > +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ > + const struct dev_pm_ops name; \ > + __EXPORT_SYMBOL(name, sec, ns); \ > + const struct dev_pm_ops name > #else > -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn, sec, ns) \ > -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ > - resume_fn, runtime_suspend_fn, \ > - runtime_resume_fn, idle_fn) > +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ > + static __maybe_unused const struct dev_pm_ops __static_##name > #endif > > +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "") > +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "") > +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns) > +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns) > + > /* > * Use this if you want to use the same suspend and resume callbacks for suspend > * to RAM and hibernation. > @@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ > _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL) > > #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "") > + EXPORT_DEV_PM_OPS(name) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "") > + EXPORT_GPL_DEV_PM_OPS(name) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns) > + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ > + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ > + } > #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns) > + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ > + 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) \ > diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h > index 9e4d056967c6..ba2077d9e366 100644 > --- a/include/linux/pm_runtime.h > +++ b/include/linux/pm_runtime.h > @@ -40,17 +40,21 @@ > resume_fn, idle_fn) > > #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "", "") > + EXPORT_DEV_PM_OPS(name) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "_gpl", "") > + EXPORT_GPL_DEV_PM_OPS(name) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "", #ns) > + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ > - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ > - suspend_fn, resume_fn, idle_fn, "_gpl", #ns) > + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ > + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ > + } > > #ifdef CONFIG_PM > extern struct workqueue_struct *pm_wq; > -- > 2.35.1 >
Hi Rafael, Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki <rafael@kernel.org> a écrit : > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> > wrote: >> >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used >> anywhere >> outside pm.h and pm_runtime.h, so it is safe to update it. >> >> Before, this macro would take a few parameters to be used as sleep >> and >> runtime callbacks. This made it unsuitable to use with different >> callbacks, for instance the "noirq" ones. >> >> It is now semantically different: instead of creating a >> conditionally >> exported dev_pm_ops structure, it only contains part of the >> definition. >> >> This macro should however never be used directly (hence the trailing >> underscore). Instead, the following four macros are provided: >> - EXPORT_DEV_PM_OPS(name) >> - EXPORT_GPL_DEV_PM_OPS(name) >> - EXPORT_NS_DEV_PM_OPS(name, ns) >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) >> >> For instance, it is now possible to conditionally export noirq >> suspend/resume PM functions like this: >> >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) >> }; >> >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new >> macros. >> >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > or please let me know if you need me to pick up this one. Could you pick this one up then, and make a branch for Jonathan? Cheers, -Paul > >> --- >> Cc: Jonathan Cameron <jic23@kernel.org> >> Cc: Rafael J. Wysocki <rafael@kernel.org> >> Cc: linux-pm <linux-pm@vger.kernel.org> >> >> include/linux/pm.h | 37 >> +++++++++++++++++++++++-------------- >> include/linux/pm_runtime.h | 20 ++++++++++++-------- >> 2 files changed, 35 insertions(+), 22 deletions(-) >> >> diff --git a/include/linux/pm.h b/include/linux/pm.h >> index 871c9c49ec9d..93cd34f00822 100644 >> --- a/include/linux/pm.h >> +++ b/include/linux/pm.h >> @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \ >> } >> >> #ifdef CONFIG_PM >> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, >> runtime_suspend_fn, \ >> - runtime_resume_fn, idle_fn, sec, ns) >> \ >> - _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, >> runtime_suspend_fn, \ >> - runtime_resume_fn, idle_fn); \ >> - __EXPORT_SYMBOL(name, sec, ns) >> +#define _EXPORT_DEV_PM_OPS(name, sec, ns) >> \ >> + const struct dev_pm_ops name; >> \ >> + __EXPORT_SYMBOL(name, sec, ns); >> \ >> + const struct dev_pm_ops name >> #else >> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, >> runtime_suspend_fn, \ >> - runtime_resume_fn, idle_fn, sec, ns) \ >> -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, >> suspend_fn, \ >> - resume_fn, >> runtime_suspend_fn, \ >> - runtime_resume_fn, idle_fn) >> +#define _EXPORT_DEV_PM_OPS(name, sec, ns) >> \ >> + static __maybe_unused const struct dev_pm_ops >> __static_##name >> #endif >> >> +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "") >> +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, >> "_gpl", "") >> +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, >> "", #ns) >> +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) >> _EXPORT_DEV_PM_OPS(name, "_gpl", #ns) >> + >> /* >> * Use this if you want to use the same suspend and resume >> callbacks for suspend >> * to RAM and hibernation. >> @@ -399,13 +400,21 @@ static __maybe_unused >> _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ >> _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, >> NULL) >> >> #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ >> - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, >> NULL, "", "") >> + EXPORT_DEV_PM_OPS(name) = { \ >> + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ >> + } >> #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ >> - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, >> NULL, "_gpl", "") >> + EXPORT_GPL_DEV_PM_OPS(name) = { \ >> + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ >> + } >> #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, >> ns) \ >> - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, >> NULL, "", #ns) >> + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ >> + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ >> + } >> #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, >> resume_fn, ns) \ >> - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, >> NULL, "_gpl", #ns) >> + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ >> + 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) \ >> diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h >> index 9e4d056967c6..ba2077d9e366 100644 >> --- a/include/linux/pm_runtime.h >> +++ b/include/linux/pm_runtime.h >> @@ -40,17 +40,21 @@ >> resume_fn, idle_fn) >> >> #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, >> idle_fn) \ >> - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, >> pm_runtime_force_resume, \ >> - suspend_fn, resume_fn, idle_fn, "", "") >> + EXPORT_DEV_PM_OPS(name) = { \ >> + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ >> + } >> #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, >> idle_fn) \ >> - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, >> pm_runtime_force_resume, \ >> - suspend_fn, resume_fn, idle_fn, "_gpl", >> "") >> + EXPORT_GPL_DEV_PM_OPS(name) = { \ >> + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ >> + } >> #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, >> idle_fn, ns) \ >> - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, >> pm_runtime_force_resume, \ >> - suspend_fn, resume_fn, idle_fn, "", #ns) >> + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ >> + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ >> + } >> #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, >> resume_fn, idle_fn, ns) \ >> - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, >> pm_runtime_force_resume, \ >> - suspend_fn, resume_fn, idle_fn, "_gpl", >> #ns) >> + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ >> + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ >> + } >> >> #ifdef CONFIG_PM >> extern struct workqueue_struct *pm_wq; >> -- >> 2.35.1 >>
On Thu, 25 Aug 2022 23:42:53 +0100 Paul Cercueil <paul@crapouillou.net> wrote: > Hi Rafael, > > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki > <rafael@kernel.org> a écrit : > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> > > wrote: > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used > >> anywhere > >> outside pm.h and pm_runtime.h, so it is safe to update it. > >> > >> Before, this macro would take a few parameters to be used as sleep > >> and > >> runtime callbacks. This made it unsuitable to use with different > >> callbacks, for instance the "noirq" ones. > >> > >> It is now semantically different: instead of creating a > >> conditionally > >> exported dev_pm_ops structure, it only contains part of the > >> definition. > >> > >> This macro should however never be used directly (hence the trailing > >> underscore). Instead, the following four macros are provided: > >> - EXPORT_DEV_PM_OPS(name) > >> - EXPORT_GPL_DEV_PM_OPS(name) > >> - EXPORT_NS_DEV_PM_OPS(name, ns) > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > >> > >> For instance, it is now possible to conditionally export noirq > >> suspend/resume PM functions like this: > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > >> }; > >> > >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new > >> macros. > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> > > > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > > or please let me know if you need me to pick up this one. > > Could you pick this one up then, and make a branch for Jonathan? Hi Paul, Rafael, What happened to this in the end? I can't immediately find it on any of the pm git tree branches. At this stage in the cycle it would be great if this patch at least makes the merge window, so we can make use of it next cycle. Thanks, Jonathan
On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil <paul@crapouillou.net> wrote: > > Hi, > > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki > <rafael@kernel.org> a écrit : > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org> > > wrote: > >> > >> On Thu, 25 Aug 2022 23:42:53 +0100 > >> Paul Cercueil <paul@crapouillou.net> wrote: > >> > >> > Hi Rafael, > >> > > >> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki > >> > <rafael@kernel.org> a écrit : > >> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil > >> <paul@crapouillou.net> > >> > > wrote: > >> > >> > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not > >> used > >> > >> anywhere > >> > >> outside pm.h and pm_runtime.h, so it is safe to update it. > >> > >> > >> > >> Before, this macro would take a few parameters to be used as > >> sleep > >> > >> and > >> > >> runtime callbacks. This made it unsuitable to use with > >> different > >> > >> callbacks, for instance the "noirq" ones. > >> > >> > >> > >> It is now semantically different: instead of creating a > >> > >> conditionally > >> > >> exported dev_pm_ops structure, it only contains part of the > >> > >> definition. > >> > >> > >> > >> This macro should however never be used directly (hence the > >> trailing > >> > >> underscore). Instead, the following four macros are provided: > >> > >> - EXPORT_DEV_PM_OPS(name) > >> > >> - EXPORT_GPL_DEV_PM_OPS(name) > >> > >> - EXPORT_NS_DEV_PM_OPS(name, ns) > >> > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > >> > >> > >> > >> For instance, it is now possible to conditionally export noirq > >> > >> suspend/resume PM functions like this: > >> > >> > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > >> > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > >> > >> }; > >> > >> > >> > >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and > >> > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these > >> new > >> > >> macros. > >> > >> > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> > >> > > > >> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > >> > > > >> > > or please let me know if you need me to pick up this one. > >> > > >> > Could you pick this one up then, and make a branch for Jonathan? > >> > >> Hi Paul, Rafael, > >> > >> What happened to this in the end? I can't immediately find it on > >> any of the pm git tree branches. > >> > >> At this stage in the cycle it would be great if this patch at least > >> makes the merge window, so we can make use of it next cycle. > > > > I thought that this would go in along with the other patches in the > > series. > > > > I can apply it directly, though, if needed. > > > > Thanks! > > I think at this point Jonathan can just take it in his tree with his > own patchset. Then I'll rebase this patchset on v6.1-rc1. Sure. Jonathan, please go ahead and take the patch directly.
On Mon, 26 Sep 2022 15:35:35 +0200 "Rafael J. Wysocki" <rafael@kernel.org> wrote: > On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil <paul@crapouillou.net> wrote: > > > > Hi, > > > > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki > > <rafael@kernel.org> a écrit : > > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org> > > > wrote: > > >> > > >> On Thu, 25 Aug 2022 23:42:53 +0100 > > >> Paul Cercueil <paul@crapouillou.net> wrote: > > >> > > >> > Hi Rafael, > > >> > > > >> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki > > >> > <rafael@kernel.org> a écrit : > > >> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil > > >> <paul@crapouillou.net> > > >> > > wrote: > > >> > >> > > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not > > >> used > > >> > >> anywhere > > >> > >> outside pm.h and pm_runtime.h, so it is safe to update it. > > >> > >> > > >> > >> Before, this macro would take a few parameters to be used as > > >> sleep > > >> > >> and > > >> > >> runtime callbacks. This made it unsuitable to use with > > >> different > > >> > >> callbacks, for instance the "noirq" ones. > > >> > >> > > >> > >> It is now semantically different: instead of creating a > > >> > >> conditionally > > >> > >> exported dev_pm_ops structure, it only contains part of the > > >> > >> definition. > > >> > >> > > >> > >> This macro should however never be used directly (hence the > > >> trailing > > >> > >> underscore). Instead, the following four macros are provided: > > >> > >> - EXPORT_DEV_PM_OPS(name) > > >> > >> - EXPORT_GPL_DEV_PM_OPS(name) > > >> > >> - EXPORT_NS_DEV_PM_OPS(name, ns) > > >> > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > > >> > >> > > >> > >> For instance, it is now possible to conditionally export noirq > > >> > >> suspend/resume PM functions like this: > > >> > >> > > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > > >> > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > > >> > >> }; > > >> > >> > > >> > >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and > > >> > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these > > >> new > > >> > >> macros. > > >> > >> > > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> > > >> > > > > >> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > >> > > > > >> > > or please let me know if you need me to pick up this one. > > >> > > > >> > Could you pick this one up then, and make a branch for Jonathan? > > >> > > >> Hi Paul, Rafael, > > >> > > >> What happened to this in the end? I can't immediately find it on > > >> any of the pm git tree branches. > > >> > > >> At this stage in the cycle it would be great if this patch at least > > >> makes the merge window, so we can make use of it next cycle. > > > > > > I thought that this would go in along with the other patches in the > > > series. > > > > > > I can apply it directly, though, if needed. > > > > > > Thanks! > > > > I think at this point Jonathan can just take it in his tree with his > > own patchset. Then I'll rebase this patchset on v6.1-rc1. > > Sure. > > Jonathan, please go ahead and take the patch directly. Too late for me to take this for this cycle (I route via Greg KH so need to have things in place a little bit before the merge window). If Lee doesn't pick it up, I'll do an immutable branch after rc1 is out with just this patch on it, then anyone who wants it can pick it up. Thanks, Jonathan
Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron <jic23@kernel.org> a écrit : > On Mon, 26 Sep 2022 15:35:35 +0200 > "Rafael J. Wysocki" <rafael@kernel.org> wrote: > >> On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil >> <paul@crapouillou.net> wrote: >> > >> > Hi, >> > >> > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki >> > <rafael@kernel.org> a écrit : >> > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron >> <jic23@kernel.org> >> > > wrote: >> > >> >> > >> On Thu, 25 Aug 2022 23:42:53 +0100 >> > >> Paul Cercueil <paul@crapouillou.net> wrote: >> > >> >> > >> > Hi Rafael, >> > >> > >> > >> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki >> > >> > <rafael@kernel.org> a écrit : >> > >> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil >> > >> <paul@crapouillou.net> >> > >> > > wrote: >> > >> > >> >> > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was >> not >> > >> used >> > >> > >> anywhere >> > >> > >> outside pm.h and pm_runtime.h, so it is safe to update >> it. >> > >> > >> >> > >> > >> Before, this macro would take a few parameters to be >> used as >> > >> sleep >> > >> > >> and >> > >> > >> runtime callbacks. This made it unsuitable to use with >> > >> different >> > >> > >> callbacks, for instance the "noirq" ones. >> > >> > >> >> > >> > >> It is now semantically different: instead of creating a >> > >> > >> conditionally >> > >> > >> exported dev_pm_ops structure, it only contains part of >> the >> > >> > >> definition. >> > >> > >> >> > >> > >> This macro should however never be used directly (hence >> the >> > >> trailing >> > >> > >> underscore). Instead, the following four macros are >> provided: >> > >> > >> - EXPORT_DEV_PM_OPS(name) >> > >> > >> - EXPORT_GPL_DEV_PM_OPS(name) >> > >> > >> - EXPORT_NS_DEV_PM_OPS(name, ns) >> > >> > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) >> > >> > >> >> > >> > >> For instance, it is now possible to conditionally >> export noirq >> > >> > >> suspend/resume PM functions like this: >> > >> > >> >> > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { >> > >> > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) >> > >> > >> }; >> > >> > >> >> > >> > >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() >> and >> > >> > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use >> these >> > >> new >> > >> > >> macros. >> > >> > >> >> > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> >> > >> > > >> > >> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> >> > >> > > >> > >> > > or please let me know if you need me to pick up this one. >> > >> > >> > >> > Could you pick this one up then, and make a branch for >> Jonathan? >> > >> >> > >> Hi Paul, Rafael, >> > >> >> > >> What happened to this in the end? I can't immediately find >> it on >> > >> any of the pm git tree branches. >> > >> >> > >> At this stage in the cycle it would be great if this patch at >> least >> > >> makes the merge window, so we can make use of it next cycle. >> > > >> > > I thought that this would go in along with the other patches in >> the >> > > series. >> > > >> > > I can apply it directly, though, if needed. >> > > >> > > Thanks! >> > >> > I think at this point Jonathan can just take it in his tree with >> his >> > own patchset. Then I'll rebase this patchset on v6.1-rc1. >> >> Sure. >> >> Jonathan, please go ahead and take the patch directly. > > Too late for me to take this for this cycle (I route via Greg KH so > need to have things > in place a little bit before the merge window). If Lee doesn't pick > it up, I'll do an > immutable branch after rc1 is out with just this patch on it, then > anyone who wants > it can pick it up. Rafael or Lee, can you take it now? Or is it already too late? :( -Paul
On Sun, Oct 2, 2022 at 1:18 PM Paul Cercueil <paul@crapouillou.net> wrote: > > > > Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron > <jic23@kernel.org> a écrit : > > On Mon, 26 Sep 2022 15:35:35 +0200 > > "Rafael J. Wysocki" <rafael@kernel.org> wrote: > > > >> On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil > >> <paul@crapouillou.net> wrote: > >> > > >> > Hi, > >> > > >> > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki > >> > <rafael@kernel.org> a écrit : > >> > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron > >> <jic23@kernel.org> > >> > > wrote: > >> > >> > >> > >> On Thu, 25 Aug 2022 23:42:53 +0100 > >> > >> Paul Cercueil <paul@crapouillou.net> wrote: > >> > >> > >> > >> > Hi Rafael, > >> > >> > > >> > >> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki > >> > >> > <rafael@kernel.org> a écrit : > >> > >> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil > >> > >> <paul@crapouillou.net> > >> > >> > > wrote: > >> > >> > >> > >> > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It was > >> not > >> > >> used > >> > >> > >> anywhere > >> > >> > >> outside pm.h and pm_runtime.h, so it is safe to update > >> it. > >> > >> > >> > >> > >> > >> Before, this macro would take a few parameters to be > >> used as > >> > >> sleep > >> > >> > >> and > >> > >> > >> runtime callbacks. This made it unsuitable to use with > >> > >> different > >> > >> > >> callbacks, for instance the "noirq" ones. > >> > >> > >> > >> > >> > >> It is now semantically different: instead of creating a > >> > >> > >> conditionally > >> > >> > >> exported dev_pm_ops structure, it only contains part of > >> the > >> > >> > >> definition. > >> > >> > >> > >> > >> > >> This macro should however never be used directly (hence > >> the > >> > >> trailing > >> > >> > >> underscore). Instead, the following four macros are > >> provided: > >> > >> > >> - EXPORT_DEV_PM_OPS(name) > >> > >> > >> - EXPORT_GPL_DEV_PM_OPS(name) > >> > >> > >> - EXPORT_NS_DEV_PM_OPS(name, ns) > >> > >> > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) > >> > >> > >> > >> > >> > >> For instance, it is now possible to conditionally > >> export noirq > >> > >> > >> suspend/resume PM functions like this: > >> > >> > >> > >> > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { > >> > >> > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) > >> > >> > >> }; > >> > >> > >> > >> > >> > >> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() > >> and > >> > >> > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use > >> these > >> > >> new > >> > >> > >> macros. > >> > >> > >> > >> > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> > >> > >> > > > >> > >> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > >> > >> > > > >> > >> > > or please let me know if you need me to pick up this one. > >> > >> > > >> > >> > Could you pick this one up then, and make a branch for > >> Jonathan? > >> > >> > >> > >> Hi Paul, Rafael, > >> > >> > >> > >> What happened to this in the end? I can't immediately find > >> it on > >> > >> any of the pm git tree branches. > >> > >> > >> > >> At this stage in the cycle it would be great if this patch at > >> least > >> > >> makes the merge window, so we can make use of it next cycle. > >> > > > >> > > I thought that this would go in along with the other patches in > >> the > >> > > series. > >> > > > >> > > I can apply it directly, though, if needed. > >> > > > >> > > Thanks! > >> > > >> > I think at this point Jonathan can just take it in his tree with > >> his > >> > own patchset. Then I'll rebase this patchset on v6.1-rc1. > >> > >> Sure. > >> > >> Jonathan, please go ahead and take the patch directly. > > > > Too late for me to take this for this cycle (I route via Greg KH so > > need to have things > > in place a little bit before the merge window). If Lee doesn't pick > > it up, I'll do an > > immutable branch after rc1 is out with just this patch on it, then > > anyone who wants > > it can pick it up. > > Rafael or Lee, can you take it now? > > Or is it already too late? :( I've applied this patch as 6.1-rc material, thanks!
Le mar., oct. 4 2022 at 20:54:28 +0200, Rafael J. Wysocki <rafael@kernel.org> a écrit : > On Sun, Oct 2, 2022 at 1:18 PM Paul Cercueil <paul@crapouillou.net> > wrote: >> >> >> >> Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron >> <jic23@kernel.org> a écrit : >> > On Mon, 26 Sep 2022 15:35:35 +0200 >> > "Rafael J. Wysocki" <rafael@kernel.org> wrote: >> > >> >> On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil >> >> <paul@crapouillou.net> wrote: >> >> > >> >> > Hi, >> >> > >> >> > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki >> >> > <rafael@kernel.org> a écrit : >> >> > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron >> >> <jic23@kernel.org> >> >> > > wrote: >> >> > >> >> >> > >> On Thu, 25 Aug 2022 23:42:53 +0100 >> >> > >> Paul Cercueil <paul@crapouillou.net> wrote: >> >> > >> >> >> > >> > Hi Rafael, >> >> > >> > >> >> > >> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. >> Wysocki >> >> > >> > <rafael@kernel.org> a écrit : >> >> > >> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil >> >> > >> <paul@crapouillou.net> >> >> > >> > > wrote: >> >> > >> > >> >> >> > >> > >> Update the _EXPORT_DEV_PM_OPS() internal macro. It >> was >> >> not >> >> > >> used >> >> > >> > >> anywhere >> >> > >> > >> outside pm.h and pm_runtime.h, so it is safe to >> update >> >> it. >> >> > >> > >> >> >> > >> > >> Before, this macro would take a few parameters to be >> >> used as >> >> > >> sleep >> >> > >> > >> and >> >> > >> > >> runtime callbacks. This made it unsuitable to use >> with >> >> > >> different >> >> > >> > >> callbacks, for instance the "noirq" ones. >> >> > >> > >> >> >> > >> > >> It is now semantically different: instead of >> creating a >> >> > >> > >> conditionally >> >> > >> > >> exported dev_pm_ops structure, it only contains >> part of >> >> the >> >> > >> > >> definition. >> >> > >> > >> >> >> > >> > >> This macro should however never be used directly >> (hence >> >> the >> >> > >> trailing >> >> > >> > >> underscore). Instead, the following four macros are >> >> provided: >> >> > >> > >> - EXPORT_DEV_PM_OPS(name) >> >> > >> > >> - EXPORT_GPL_DEV_PM_OPS(name) >> >> > >> > >> - EXPORT_NS_DEV_PM_OPS(name, ns) >> >> > >> > >> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) >> >> > >> > >> >> >> > >> > >> For instance, it is now possible to conditionally >> >> export noirq >> >> > >> > >> suspend/resume PM functions like this: >> >> > >> > >> >> >> > >> > >> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { >> >> > >> > >> NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) >> >> > >> > >> }; >> >> > >> > >> >> >> > >> > >> The existing helper macros >> EXPORT_*_SIMPLE_DEV_PM_OPS() >> >> and >> >> > >> > >> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to >> use >> >> these >> >> > >> new >> >> > >> > >> macros. >> >> > >> > >> >> >> > >> > >> Signed-off-by: Paul Cercueil <paul@crapouillou.net> >> >> > >> > > >> >> > >> > > Acked-by: Rafael J. Wysocki >> <rafael.j.wysocki@intel.com> >> >> > >> > > >> >> > >> > > or please let me know if you need me to pick up this >> one. >> >> > >> > >> >> > >> > Could you pick this one up then, and make a branch for >> >> Jonathan? >> >> > >> >> >> > >> Hi Paul, Rafael, >> >> > >> >> >> > >> What happened to this in the end? I can't immediately >> find >> >> it on >> >> > >> any of the pm git tree branches. >> >> > >> >> >> > >> At this stage in the cycle it would be great if this >> patch at >> >> least >> >> > >> makes the merge window, so we can make use of it next >> cycle. >> >> > > >> >> > > I thought that this would go in along with the other >> patches in >> >> the >> >> > > series. >> >> > > >> >> > > I can apply it directly, though, if needed. >> >> > > >> >> > > Thanks! >> >> > >> >> > I think at this point Jonathan can just take it in his tree >> with >> >> his >> >> > own patchset. Then I'll rebase this patchset on v6.1-rc1. >> >> >> >> Sure. >> >> >> >> Jonathan, please go ahead and take the patch directly. >> > >> > Too late for me to take this for this cycle (I route via Greg KH >> so >> > need to have things >> > in place a little bit before the merge window). If Lee doesn't >> pick >> > it up, I'll do an >> > immutable branch after rc1 is out with just this patch on it, then >> > anyone who wants >> > it can pick it up. >> >> Rafael or Lee, can you take it now? >> >> Or is it already too late? :( > > I've applied this patch as 6.1-rc material, thanks! Awesome, thanks! -Paul
diff --git a/include/linux/pm.h b/include/linux/pm.h index 871c9c49ec9d..93cd34f00822 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \ } #ifdef CONFIG_PM -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ - runtime_resume_fn, idle_fn, sec, ns) \ - _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ - runtime_resume_fn, idle_fn); \ - __EXPORT_SYMBOL(name, sec, ns) +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ + const struct dev_pm_ops name; \ + __EXPORT_SYMBOL(name, sec, ns); \ + const struct dev_pm_ops name #else -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \ - runtime_resume_fn, idle_fn, sec, ns) \ -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ - resume_fn, runtime_suspend_fn, \ - runtime_resume_fn, idle_fn) +#define _EXPORT_DEV_PM_OPS(name, sec, ns) \ + static __maybe_unused const struct dev_pm_ops __static_##name #endif +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "") +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "") +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns) +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns) + /* * Use this if you want to use the same suspend and resume callbacks for suspend * to RAM and hibernation. @@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \ _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL) #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "") + EXPORT_DEV_PM_OPS(name) = { \ + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ + } #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "") + EXPORT_GPL_DEV_PM_OPS(name) = { \ + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ + } #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns) + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ + SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ + } #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \ - _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns) + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ + 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) \ diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index 9e4d056967c6..ba2077d9e366 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h @@ -40,17 +40,21 @@ resume_fn, idle_fn) #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ - suspend_fn, resume_fn, idle_fn, "", "") + EXPORT_DEV_PM_OPS(name) = { \ + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ + } #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \ - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ - suspend_fn, resume_fn, idle_fn, "_gpl", "") + EXPORT_GPL_DEV_PM_OPS(name) = { \ + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ + } #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ - suspend_fn, resume_fn, idle_fn, "", #ns) + EXPORT_NS_DEV_PM_OPS(name, ns) = { \ + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ + } #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \ - _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \ - suspend_fn, resume_fn, idle_fn, "_gpl", #ns) + EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \ + RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ + } #ifdef CONFIG_PM extern struct workqueue_struct *pm_wq;
Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere outside pm.h and pm_runtime.h, so it is safe to update it. Before, this macro would take a few parameters to be used as sleep and runtime callbacks. This made it unsuitable to use with different callbacks, for instance the "noirq" ones. It is now semantically different: instead of creating a conditionally exported dev_pm_ops structure, it only contains part of the definition. This macro should however never be used directly (hence the trailing underscore). Instead, the following four macros are provided: - EXPORT_DEV_PM_OPS(name) - EXPORT_GPL_DEV_PM_OPS(name) - EXPORT_NS_DEV_PM_OPS(name, ns) - EXPORT_NS_GPL_DEV_PM_OPS(name, ns) For instance, it is now possible to conditionally export noirq suspend/resume PM functions like this: EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = { NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) }; The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros. Signed-off-by: Paul Cercueil <paul@crapouillou.net> --- Cc: Jonathan Cameron <jic23@kernel.org> Cc: Rafael J. Wysocki <rafael@kernel.org> Cc: linux-pm <linux-pm@vger.kernel.org> include/linux/pm.h | 37 +++++++++++++++++++++++-------------- include/linux/pm_runtime.h | 20 ++++++++++++-------- 2 files changed, 35 insertions(+), 22 deletions(-)