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

Message ID 20230913074032.27927-1-raag.jadav@intel.com
Headers
Series Fix symbol export for _SIMPLE_ variants of _PM_OPS() |

Message

Raag Jadav Sept. 13, 2023, 7:40 a.m. UTC
  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(-)
  

Comments

Andy Shevchenko Sept. 13, 2023, 11:27 a.m. UTC | #1
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.