[RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS()

Raag Jadav posted 2 patches 2 years, 5 months ago
There is a newer version of this series
include/linux/pm.h         | 38 ++++++++++++++++++++++++--------------
include/linux/pm_runtime.h | 13 +++++++++----
2 files changed, 33 insertions(+), 18 deletions(-)
[RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS()
Posted by Raag Jadav 2 years, 5 months ago
Currently EXPORT_*_SIMPLE_DEV_PM_OPS() use EXPORT_*_DEV_PM_OPS() set of
macros to export dev_pm_ops symbol, which export the symbol in case
CONFIG_PM=y but don't take CONFIG_PM_SLEEP into consideration.

Since _SIMPLE_ variants of _PM_OPS() do not include runtime PM handles
and are only used in case CONFIG_PM_SLEEP=y, we should not be exporting
dev_pm_ops symbol for them in case CONFIG_PM_SLEEP=n.

This can be fixed by having two distinct set of export macros for both
_RUNTIME_ and _SIMPLE_ variants of _PM_OPS(), such that the export of
dev_pm_ops symbol used in each variant depends on CONFIG_PM and
CONFIG_PM_SLEEP respectively.

PS: This needs a few (~6) drivers to be updated with new set of macros,
which will be done in following versions if this is worth moving forward.

Raag Jadav (2):
  PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
  PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS()

 include/linux/pm.h         | 38 ++++++++++++++++++++++++--------------
 include/linux/pm_runtime.h | 13 +++++++++----
 2 files changed, 33 insertions(+), 18 deletions(-)

-- 
2.17.1
Re: [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS()
Posted by Andy Shevchenko 2 years, 5 months ago
On Wed, Sep 13, 2023 at 01:10:30PM +0530, Raag Jadav wrote:
> Currently EXPORT_*_SIMPLE_DEV_PM_OPS() use EXPORT_*_DEV_PM_OPS() set of
> macros to export dev_pm_ops symbol, which export the symbol in case
> CONFIG_PM=y but don't take CONFIG_PM_SLEEP into consideration.
> 
> Since _SIMPLE_ variants of _PM_OPS() do not include runtime PM handles
> and are only used in case CONFIG_PM_SLEEP=y, we should not be exporting
> dev_pm_ops symbol for them in case CONFIG_PM_SLEEP=n.
> 
> This can be fixed by having two distinct set of export macros for both
> _RUNTIME_ and _SIMPLE_ variants of _PM_OPS(), such that the export of
> dev_pm_ops symbol used in each variant depends on CONFIG_PM and
> CONFIG_PM_SLEEP respectively.

From my point of view this cleans up a bit the initial idea and
maybe a good stuff to apply. But I leave this to the maintainers
and Paul to decide.

-- 
With Best Regards,
Andy Shevchenko