* [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.