All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS()
@ 2023-09-13  7:40 Raag Jadav
  2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Raag Jadav @ 2023-09-13  7:40 UTC (permalink / raw)
  To: rafael.j.wysocki, len.brown, pavel, Jonathan.Cameron, paul,
	andriy.shevchenko
  Cc: linux-pm, linux-kernel, mallikarjunappa.sangannavar, bala.senthil,
	Raag Jadav

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [RFC v1 1/2] PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
  2023-09-13  7:40 [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Raag Jadav
@ 2023-09-13  7:40 ` Raag Jadav
  2023-09-13  9:23   ` kernel test robot
  2023-09-13  9:35   ` kernel test robot
  2023-09-13  7:40 ` [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS() Raag Jadav
  2023-09-13 11:27 ` [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Andy Shevchenko
  2 siblings, 2 replies; 7+ messages in thread
From: Raag Jadav @ 2023-09-13  7:40 UTC (permalink / raw)
  To: rafael.j.wysocki, len.brown, pavel, Jonathan.Cameron, paul,
	andriy.shevchenko
  Cc: linux-pm, linux-kernel, mallikarjunappa.sangannavar, bala.senthil,
	Raag Jadav

Introduce a new set of export macros for _SIMPLE_ variants of _PM_OPS(),
which export dev_pm_ops symbol only in case CONFIG_PM_SLEEP=y and discard
it otherwise.

Fixes: 34e1ed189fab ("PM: Improve EXPORT_*_DEV_PM_OPS macros")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
 include/linux/pm.h | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/include/linux/pm.h b/include/linux/pm.h
index 1400c37b29c7..ae9b4f26d56a 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -374,24 +374,39 @@ const struct dev_pm_ops name = { \
 	RUNTIME_PM_OPS(runtime_suspend_fn, runtime_resume_fn, idle_fn) \
 }
 
-#ifdef CONFIG_PM
-#define _EXPORT_DEV_PM_OPS(name, license, ns)				\
+#define _EXPORT_PM_OPS(name, license, ns)				\
 	const struct dev_pm_ops name;					\
 	__EXPORT_SYMBOL(name, license, ns);				\
 	const struct dev_pm_ops name
-#define EXPORT_PM_FN_GPL(name)		EXPORT_SYMBOL_GPL(name)
-#define EXPORT_PM_FN_NS_GPL(name, ns)	EXPORT_SYMBOL_NS_GPL(name, ns)
-#else
-#define _EXPORT_DEV_PM_OPS(name, license, ns)				\
+
+#define _PM_OPS(name, license, ns)					\
 	static __maybe_unused const struct dev_pm_ops __static_##name
+
+#ifdef CONFIG_PM
+#define _EXPORT_RUNTIME_PM_OPS(name, license, ns)	_EXPORT_PM_OPS(name, license, ns)
+#define EXPORT_PM_FN_GPL(name)				EXPORT_SYMBOL_GPL(name)
+#define EXPORT_PM_FN_NS_GPL(name, ns)			EXPORT_SYMBOL_NS_GPL(name, ns)
+#else
+#define _EXPORT_RUNTIME_PM_OPS(name, license, ns)	_PM_OPS(name, license, ns)
 #define EXPORT_PM_FN_GPL(name)
 #define EXPORT_PM_FN_NS_GPL(name, ns)
 #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)
+#ifdef CONFIG_PM_SLEEP
+#define _EXPORT_SIMPLE_PM_OPS(name, license, ns)	_EXPORT_PM_OPS(name, license, ns)
+#else
+#define _EXPORT_SIMPLE_PM_OPS(name, license, ns)	_PM_OPS(name, license, ns)
+#endif
+
+#define EXPORT_DEV_PM_OPS(name)				_EXPORT_RUNTIME_PM_OPS(name, "", "")
+#define EXPORT_GPL_DEV_PM_OPS(name)			_EXPORT_RUNTIME_PM_OPS(name, "GPL", "")
+#define EXPORT_NS_DEV_PM_OPS(name, ns)			_EXPORT_RUNTIME_PM_OPS(name, "", #ns)
+#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns)		_EXPORT_RUNTIME_PM_OPS(name, "GPL", #ns)
+
+#define EXPORT_SIMPLE_PM_OPS(name)			_EXPORT_SIMPLE_PM_OPS(name, "", "")
+#define EXPORT_GPL_SIMPLE_PM_OPS(name)			_EXPORT_SIMPLE_PM_OPS(name, "GPL", "")
+#define EXPORT_NS_DEV_SIMPLE_OPS(name, ns)		_EXPORT_SIMPLE_PM_OPS(name, "", #ns)
+#define EXPORT_NS_GPL_SIMPLE_PM_OPS(name, ns)		_EXPORT_SIMPLE_PM_OPS(name, "GPL", #ns)
 
 /*
  * Use this if you want to use the same suspend and resume callbacks for suspend
@@ -404,19 +419,19 @@ const struct dev_pm_ops name = { \
 	_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) = { \
+	EXPORT_SIMPLE_PM_OPS(name) = { \
 		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
 	}
 #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
-	EXPORT_GPL_DEV_PM_OPS(name) = { \
+	EXPORT_GPL_SIMPLE_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_NS_DEV_PM_OPS(name, ns) = { \
+	EXPORT_NS_SIMPLE_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_NS_GPL_DEV_PM_OPS(name, ns) = { \
+	EXPORT_NS_GPL_SIMPLE_PM_OPS(name, ns) = { \
 		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
 	}
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS()
  2023-09-13  7:40 [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Raag Jadav
  2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
@ 2023-09-13  7:40 ` Raag Jadav
  2023-09-13  9:45   ` kernel test robot
  2023-09-13 11:27 ` [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Andy Shevchenko
  2 siblings, 1 reply; 7+ messages in thread
From: Raag Jadav @ 2023-09-13  7:40 UTC (permalink / raw)
  To: rafael.j.wysocki, len.brown, pavel, Jonathan.Cameron, paul,
	andriy.shevchenko
  Cc: linux-pm, linux-kernel, mallikarjunappa.sangannavar, bala.senthil,
	Raag Jadav

Rename EXPORT_*_DEV_PM_OPS() macros to EXPORT_*_RUNTIME_PM_OPS()
and while at it, move them to pm_runtime.h.
This is done in conjunction with the introduction of
EXPORT_*_SIMPLE_PM_OPS() set of macros, to make things less confusing.
This makes both _RUNTIME_ and _SIMPLE_ variants of export macros more
distinguishable and self explanatory.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
 include/linux/pm.h         |  5 -----
 include/linux/pm_runtime.h | 13 +++++++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/linux/pm.h b/include/linux/pm.h
index ae9b4f26d56a..9c6c2322ae5f 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -398,11 +398,6 @@ const struct dev_pm_ops name = { \
 #define _EXPORT_SIMPLE_PM_OPS(name, license, ns)	_PM_OPS(name, license, ns)
 #endif
 
-#define EXPORT_DEV_PM_OPS(name)				_EXPORT_RUNTIME_PM_OPS(name, "", "")
-#define EXPORT_GPL_DEV_PM_OPS(name)			_EXPORT_RUNTIME_PM_OPS(name, "GPL", "")
-#define EXPORT_NS_DEV_PM_OPS(name, ns)			_EXPORT_RUNTIME_PM_OPS(name, "", #ns)
-#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns)		_EXPORT_RUNTIME_PM_OPS(name, "GPL", #ns)
-
 #define EXPORT_SIMPLE_PM_OPS(name)			_EXPORT_SIMPLE_PM_OPS(name, "", "")
 #define EXPORT_GPL_SIMPLE_PM_OPS(name)			_EXPORT_SIMPLE_PM_OPS(name, "GPL", "")
 #define EXPORT_NS_DEV_SIMPLE_OPS(name, ns)		_EXPORT_SIMPLE_PM_OPS(name, "", #ns)
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
index 7c9b35448563..0b73b00bd59f 100644
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -22,6 +22,11 @@
 					    usage_count */
 #define RPM_AUTO		0x08	/* Use autosuspend_delay */
 
+#define EXPORT_RUNTIME_PM_OPS(name)			_EXPORT_RUNTIME_PM_OPS(name, "", "")
+#define EXPORT_GPL_RUNTIME_PM_OPS(name)			_EXPORT_RUNTIME_PM_OPS(name, "GPL", "")
+#define EXPORT_NS_RUNTIME_PM_OPS(name, ns)		_EXPORT_RUNTIME_PM_OPS(name, "", #ns)
+#define EXPORT_NS_GPL_RUNTIME_PM_OPS(name, ns)		_EXPORT_RUNTIME_PM_OPS(name, "GPL", #ns)
+
 /*
  * Use this for defining a set of PM operations to be used in all situations
  * (system suspend, hibernation or runtime PM).
@@ -40,19 +45,19 @@
 			   resume_fn, idle_fn)
 
 #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
-	EXPORT_DEV_PM_OPS(name) = { \
+	EXPORT_RUNTIME_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_GPL_DEV_PM_OPS(name) = { \
+	EXPORT_GPL_RUNTIME_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_NS_DEV_PM_OPS(name, ns) = { \
+	EXPORT_NS_RUNTIME_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_NS_GPL_DEV_PM_OPS(name, ns) = { \
+	EXPORT_NS_GPL_RUNTIME_PM_OPS(name, ns) = { \
 		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
 	}
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [RFC v1 1/2] PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
  2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
@ 2023-09-13  9:23   ` kernel test robot
  2023-09-13  9:35   ` kernel test robot
  1 sibling, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-09-13  9:23 UTC (permalink / raw)
  To: Raag Jadav; +Cc: oe-kbuild-all

Hi Raag,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.6-rc1 next-20230913]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Raag-Jadav/PM-Introduce-export-macros-for-_SIMPLE_-variants-of-_PM_OPS/20230913-154244
base:   linus/master
patch link:    https://lore.kernel.org/r/20230913074032.27927-2-raag.jadav%40intel.com
patch subject: [RFC v1 1/2] PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
config: openrisc-randconfig-r006-20230913 (https://download.01.org/0day-ci/archive/20230913/202309131731.unx0PbdR-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230913/202309131731.unx0PbdR-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309131731.unx0PbdR-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:25,
                    from include/linux/acpi.h:14,
                    from drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:59:
   include/linux/pm.h:430:9: warning: data definition has no type or storage class
     430 |         EXPORT_NS_SIMPLE_PM_OPS(name, ns) = { \
         |         ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:430:9: error: type defaults to 'int' in declaration of 'EXPORT_NS_SIMPLE_PM_OPS' [-Werror=implicit-int]
     430 |         EXPORT_NS_SIMPLE_PM_OPS(name, ns) = { \
         |         ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: warning: parameter names (without types) in function declaration
>> drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: error: function 'EXPORT_NS_SIMPLE_PM_OPS' is initialized like a variable
   include/linux/pm.h:313:9: error: field name not in record or union initializer
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:313:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:57:
   include/linux/kernel.h:59:33: error: invalid initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:313:20: note: in expansion of macro 'pm_sleep_ptr'
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:313:20: note: in expansion of macro 'pm_sleep_ptr'
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:314:9: error: field name not in record or union initializer
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:314:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:314:19: note: in expansion of macro 'pm_sleep_ptr'
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:314:19: note: in expansion of macro 'pm_sleep_ptr'
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c:2858:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
    2858 | EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:315:9: error: field name not in record or union initializer
     315 |         .freeze = pm_sleep_ptr(suspend_fn), \
         |         ^


vim +/EXPORT_NS_SIMPLE_PM_OPS +2858 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c

d3f770582aeb11 Lorenzo Bianconi 2017-04-27  2857  
2b059449b5a3d2 Jonathan Cameron 2022-06-04 @2858  EXPORT_NS_SIMPLE_DEV_PM_OPS(st_lsm6dsx_pm_ops, st_lsm6dsx_suspend,
2b059449b5a3d2 Jonathan Cameron 2022-06-04  2859  			    st_lsm6dsx_resume, IIO_LSM6DSX);
d3f770582aeb11 Lorenzo Bianconi 2017-04-27  2860  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFC v1 1/2] PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
  2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
  2023-09-13  9:23   ` kernel test robot
@ 2023-09-13  9:35   ` kernel test robot
  1 sibling, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-09-13  9:35 UTC (permalink / raw)
  To: Raag Jadav; +Cc: oe-kbuild-all

Hi Raag,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.6-rc1 next-20230913]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Raag-Jadav/PM-Introduce-export-macros-for-_SIMPLE_-variants-of-_PM_OPS/20230913-154244
base:   linus/master
patch link:    https://lore.kernel.org/r/20230913074032.27927-2-raag.jadav%40intel.com
patch subject: [RFC v1 1/2] PM: Introduce export macros for _SIMPLE_ variants of _PM_OPS()
config: arc-randconfig-r004-20230913 (https://download.01.org/0day-ci/archive/20230913/202309131742.496HslJs-lkp@intel.com/config)
compiler: arc-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230913/202309131742.496HslJs-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309131742.496HslJs-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:25,
                    from drivers/iio/humidity/hts221_core.c:12:
>> include/linux/pm.h:430:9: warning: data definition has no type or storage class
     430 |         EXPORT_NS_SIMPLE_PM_OPS(name, ns) = { \
         |         ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:430:9: error: type defaults to 'int' in declaration of 'EXPORT_NS_SIMPLE_PM_OPS' [-Werror=implicit-int]
     430 |         EXPORT_NS_SIMPLE_PM_OPS(name, ns) = { \
         |         ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iio/humidity/hts221_core.c:678:1: warning: parameter names (without types) in function declaration
   drivers/iio/humidity/hts221_core.c:678:1: error: function 'EXPORT_NS_SIMPLE_PM_OPS' is initialized like a variable
   include/linux/pm.h:313:9: error: field name not in record or union initializer
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:313:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/iio/humidity/hts221_core.c:10:
   include/linux/kernel.h:59:33: error: invalid initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:313:20: note: in expansion of macro 'pm_sleep_ptr'
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:313:20: note: in expansion of macro 'pm_sleep_ptr'
     313 |         .suspend = pm_sleep_ptr(suspend_fn), \
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:314:9: error: field name not in record or union initializer
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:314:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:314:19: note: in expansion of macro 'pm_sleep_ptr'
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:314:19: note: in expansion of macro 'pm_sleep_ptr'
     314 |         .resume = pm_sleep_ptr(resume_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:315:9: error: field name not in record or union initializer
     315 |         .freeze = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:315:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     315 |         .freeze = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:315:19: note: in expansion of macro 'pm_sleep_ptr'
     315 |         .freeze = pm_sleep_ptr(suspend_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:315:19: note: in expansion of macro 'pm_sleep_ptr'
     315 |         .freeze = pm_sleep_ptr(suspend_fn), \
         |                   ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:316:9: error: field name not in record or union initializer
     316 |         .thaw = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:316:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     316 |         .thaw = pm_sleep_ptr(resume_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:316:17: note: in expansion of macro 'pm_sleep_ptr'
     316 |         .thaw = pm_sleep_ptr(resume_fn), \
         |                 ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:316:17: note: in expansion of macro 'pm_sleep_ptr'
     316 |         .thaw = pm_sleep_ptr(resume_fn), \
         |                 ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:317:9: error: field name not in record or union initializer
     317 |         .poweroff = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:317:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     317 |         .poweroff = pm_sleep_ptr(suspend_fn), \
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:317:21: note: in expansion of macro 'pm_sleep_ptr'
     317 |         .poweroff = pm_sleep_ptr(suspend_fn), \
         |                     ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:317:21: note: in expansion of macro 'pm_sleep_ptr'
     317 |         .poweroff = pm_sleep_ptr(suspend_fn), \
         |                     ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:318:9: error: field name not in record or union initializer
     318 |         .restore = pm_sleep_ptr(resume_fn),
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/pm.h:318:9: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
     318 |         .restore = pm_sleep_ptr(resume_fn),
         |         ^
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/kernel.h:59:33: warning: excess elements in scalar initializer
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:318:20: note: in expansion of macro 'pm_sleep_ptr'
     318 |         .restore = pm_sleep_ptr(resume_fn),
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:59:33: note: (near initialization for 'EXPORT_NS_SIMPLE_PM_OPS')
      59 | #define PTR_IF(cond, ptr)       ((cond) ? (ptr) : NULL)
         |                                 ^
   include/linux/pm.h:476:28: note: in expansion of macro 'PTR_IF'
     476 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr))
         |                            ^~~~~~
   include/linux/pm.h:318:20: note: in expansion of macro 'pm_sleep_ptr'
     318 |         .restore = pm_sleep_ptr(resume_fn),
         |                    ^~~~~~~~~~~~
   include/linux/pm.h:431:17: note: in expansion of macro 'SYSTEM_SLEEP_PM_OPS'
     431 |                 SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
         |                 ^~~~~~~~~~~~~~~~~~~
   drivers/iio/humidity/hts221_core.c:678:1: note: in expansion of macro 'EXPORT_NS_SIMPLE_DEV_PM_OPS'
     678 | EXPORT_NS_SIMPLE_DEV_PM_OPS(hts221_pm_ops, hts221_suspend, hts221_resume,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
..


vim +430 include/linux/pm.h

   410	
   411	/*
   412	 * Use this if you want to use the same suspend and resume callbacks for suspend
   413	 * to RAM and hibernation.
   414	 *
   415	 * If the underlying dev_pm_ops struct symbol has to be exported, use
   416	 * EXPORT_SIMPLE_DEV_PM_OPS() or EXPORT_GPL_SIMPLE_DEV_PM_OPS() instead.
   417	 */
   418	#define DEFINE_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
   419		_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL)
   420	
   421	#define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
   422		EXPORT_SIMPLE_PM_OPS(name) = { \
   423			SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
   424		}
   425	#define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
   426		EXPORT_GPL_SIMPLE_PM_OPS(name) = { \
   427			SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
   428		}
   429	#define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
 > 430		EXPORT_NS_SIMPLE_PM_OPS(name, ns) = { \
   431			SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
   432		}
   433	#define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
   434		EXPORT_NS_GPL_SIMPLE_PM_OPS(name, ns) = { \
   435			SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
   436		}
   437	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS()
  2023-09-13  7:40 ` [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS() Raag Jadav
@ 2023-09-13  9:45   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-09-13  9:45 UTC (permalink / raw)
  To: Raag Jadav; +Cc: oe-kbuild-all

Hi Raag,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.6-rc1 next-20230913]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Raag-Jadav/PM-Introduce-export-macros-for-_SIMPLE_-variants-of-_PM_OPS/20230913-154244
base:   linus/master
patch link:    https://lore.kernel.org/r/20230913074032.27927-3-raag.jadav%40intel.com
patch subject: [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS()
config: riscv-randconfig-r005-20230913 (https://download.01.org/0day-ci/archive/20230913/202309131701.zgcZGf8F-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230913/202309131701.zgcZGf8F-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309131701.zgcZGf8F-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/mfd/cs42l43.c:1180:1: warning: data definition has no type or storage class
    1180 | EXPORT_NS_GPL_DEV_PM_OPS(cs42l43_pm_ops, MFD_CS42L43) = {
         | ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/mfd/cs42l43.c:1180:1: error: type defaults to 'int' in declaration of 'EXPORT_NS_GPL_DEV_PM_OPS' [-Werror=implicit-int]
>> drivers/mfd/cs42l43.c:1180:1: warning: parameter names (without types) in function declaration
>> drivers/mfd/cs42l43.c:1180:1: error: function 'EXPORT_NS_GPL_DEV_PM_OPS' is initialized like a variable
>> drivers/mfd/cs42l43.c:1180:57: error: invalid initializer
    1180 | EXPORT_NS_GPL_DEV_PM_OPS(cs42l43_pm_ops, MFD_CS42L43) = {
         |                                                         ^
   drivers/mfd/cs42l43.c:1180:57: note: (near initialization for 'EXPORT_NS_GPL_DEV_PM_OPS')
   drivers/mfd/cs42l43.c:1138:12: warning: 'cs42l43_runtime_resume' defined but not used [-Wunused-function]
    1138 | static int cs42l43_runtime_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~~~~
   drivers/mfd/cs42l43.c:1124:12: warning: 'cs42l43_runtime_suspend' defined but not used [-Wunused-function]
    1124 | static int cs42l43_runtime_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/mfd/cs42l43.c:1106:12: warning: 'cs42l43_resume' defined but not used [-Wunused-function]
    1106 | static int cs42l43_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~
   drivers/mfd/cs42l43.c:1076:12: warning: 'cs42l43_suspend' defined but not used [-Wunused-function]
    1076 | static int cs42l43_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +1180 drivers/mfd/cs42l43.c

ace6d14481386ec Charles Keepax 2023-08-04  1179  
ace6d14481386ec Charles Keepax 2023-08-04 @1180  EXPORT_NS_GPL_DEV_PM_OPS(cs42l43_pm_ops, MFD_CS42L43) = {
ace6d14481386ec Charles Keepax 2023-08-04  1181  	SET_SYSTEM_SLEEP_PM_OPS(cs42l43_suspend, cs42l43_resume)
ace6d14481386ec Charles Keepax 2023-08-04  1182  	SET_RUNTIME_PM_OPS(cs42l43_runtime_suspend, cs42l43_runtime_resume, NULL)
ace6d14481386ec Charles Keepax 2023-08-04  1183  };
ace6d14481386ec Charles Keepax 2023-08-04  1184  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS()
  2023-09-13  7:40 [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Raag Jadav
  2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
  2023-09-13  7:40 ` [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS() Raag Jadav
@ 2023-09-13 11:27 ` Andy Shevchenko
  2 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2023-09-13 11:27 UTC (permalink / raw)
  To: Raag Jadav
  Cc: rafael.j.wysocki, len.brown, pavel, Jonathan.Cameron, paul,
	linux-pm, linux-kernel, mallikarjunappa.sangannavar, bala.senthil

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



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-09-13 11:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-13  7:40 [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Raag Jadav
2023-09-13  7:40 ` [RFC v1 1/2] PM: Introduce export macros " Raag Jadav
2023-09-13  9:23   ` kernel test robot
2023-09-13  9:35   ` kernel test robot
2023-09-13  7:40 ` [RFC v1 2/2] PM: Update EXPORT_*_DEV_PM_OPS() to EXPORT_*_RUNTIME_PM_OPS() Raag Jadav
2023-09-13  9:45   ` kernel test robot
2023-09-13 11:27 ` [RFC v1 0/2] Fix symbol export for _SIMPLE_ variants of _PM_OPS() Andy Shevchenko

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.