Message ID | 20230722115310.27681-5-paul@crapouillou.net |
---|---|
State | New |
Headers | show |
Series | i2c: Use new PM macros | expand |
Hi Paul, kernel test robot noticed the following build errors: [auto build test ERROR on wsa/i2c/for-next] [also build test ERROR on brgl/gpio/for-next krzk/for-next linus/master v6.5-rc2 next-20230721] [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/Paul-Cercueil/i2c-au1550-Remove-ifdef-guards-for-PM-related-functions/20230722-200209 base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next patch link: https://lore.kernel.org/r/20230722115310.27681-5-paul%40crapouillou.net patch subject: [PATCH v2 21/22] i2c: virtio: Remove #ifdef guards for PM related functions config: nios2-randconfig-r005-20230722 (https://download.01.org/0day-ci/archive/20230722/202307222129.Q7WjPurG-lkp@intel.com/config) compiler: nios2-linux-gcc (GCC) 12.3.0 reproduce: (https://download.01.org/0day-ci/archive/20230722/202307222129.Q7WjPurG-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/202307222129.Q7WjPurG-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/i2c/busses/i2c-virtio.c:270:10: error: 'struct virtio_driver' has no member named 'freeze' 270 | .freeze = pm_sleep_ptr(virtio_i2c_freeze), | ^~~~~~ In file included from include/linux/cpumask.h:10, from include/linux/smp.h:13, from include/linux/lockdep.h:14, from include/linux/spinlock.h:63, from include/linux/mmzone.h:8, from include/linux/gfp.h:7, from include/linux/slab.h:16, from include/linux/resource_ext.h:11, from include/linux/acpi.h:13, from drivers/i2c/busses/i2c-virtio.c:11: >> include/linux/kernel.h:58:33: error: initialization of 'const struct virtio_device_id *' from incompatible pointer type 'int (*)(struct virtio_device *)' [-Werror=incompatible-pointer-types] 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:270:35: note: in expansion of macro 'pm_sleep_ptr' 270 | .freeze = pm_sleep_ptr(virtio_i2c_freeze), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: note: (near initialization for 'virtio_i2c_driver.id_table') 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:270:35: note: in expansion of macro 'pm_sleep_ptr' 270 | .freeze = pm_sleep_ptr(virtio_i2c_freeze), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: warning: initialized field overwritten [-Woverride-init] 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:270:35: note: in expansion of macro 'pm_sleep_ptr' 270 | .freeze = pm_sleep_ptr(virtio_i2c_freeze), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: note: (near initialization for 'virtio_i2c_driver.id_table') 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:270:35: note: in expansion of macro 'pm_sleep_ptr' 270 | .freeze = pm_sleep_ptr(virtio_i2c_freeze), | ^~~~~~~~~~~~ >> drivers/i2c/busses/i2c-virtio.c:271:10: error: 'struct virtio_driver' has no member named 'restore' 271 | .restore = pm_sleep_ptr(virtio_i2c_restore), | ^~~~~~~ >> include/linux/kernel.h:58:33: error: initialization of 'const unsigned int *' from incompatible pointer type 'int (*)(struct virtio_device *)' [-Werror=incompatible-pointer-types] 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:271:35: note: in expansion of macro 'pm_sleep_ptr' 271 | .restore = pm_sleep_ptr(virtio_i2c_restore), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: note: (near initialization for 'virtio_i2c_driver.feature_table') 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:271:35: note: in expansion of macro 'pm_sleep_ptr' 271 | .restore = pm_sleep_ptr(virtio_i2c_restore), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: warning: initialized field overwritten [-Woverride-init] 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:271:35: note: in expansion of macro 'pm_sleep_ptr' 271 | .restore = pm_sleep_ptr(virtio_i2c_restore), | ^~~~~~~~~~~~ include/linux/kernel.h:58:33: note: (near initialization for 'virtio_i2c_driver.feature_table') 58 | #define PTR_IF(cond, ptr) ((cond) ? (ptr) : NULL) | ^ include/linux/pm.h:452:28: note: in expansion of macro 'PTR_IF' 452 | #define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) | ^~~~~~ drivers/i2c/busses/i2c-virtio.c:271:35: note: in expansion of macro 'pm_sleep_ptr' 271 | .restore = pm_sleep_ptr(virtio_i2c_restore), | ^~~~~~~~~~~~ cc1: some warnings being treated as errors vim +270 drivers/i2c/busses/i2c-virtio.c 260 261 static struct virtio_driver virtio_i2c_driver = { 262 .feature_table = features, 263 .feature_table_size = ARRAY_SIZE(features), 264 .id_table = id_table, 265 .probe = virtio_i2c_probe, 266 .remove = virtio_i2c_remove, 267 .driver = { 268 .name = "i2c_virtio", 269 }, > 270 .freeze = pm_sleep_ptr(virtio_i2c_freeze), > 271 .restore = pm_sleep_ptr(virtio_i2c_restore), 272 }; 273 module_virtio_driver(virtio_i2c_driver); 274
Hi Paul, kernel test robot noticed the following build errors: [auto build test ERROR on wsa/i2c/for-next] [also build test ERROR on brgl/gpio/for-next krzk/for-next linus/master v6.5-rc2 next-20230721] [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/Paul-Cercueil/i2c-au1550-Remove-ifdef-guards-for-PM-related-functions/20230722-200209 base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next patch link: https://lore.kernel.org/r/20230722115310.27681-5-paul%40crapouillou.net patch subject: [PATCH v2 21/22] i2c: virtio: Remove #ifdef guards for PM related functions config: i386-randconfig-r015-20230722 (https://download.01.org/0day-ci/archive/20230722/202307222246.K1GYOGCB-lkp@intel.com/config) compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a) reproduce: (https://download.01.org/0day-ci/archive/20230722/202307222246.K1GYOGCB-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/202307222246.K1GYOGCB-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/i2c/busses/i2c-virtio.c:270:3: error: field designator 'freeze' does not refer to any field in type 'struct virtio_driver' .freeze = pm_sleep_ptr(virtio_i2c_freeze), ^ >> drivers/i2c/busses/i2c-virtio.c:271:3: error: field designator 'restore' does not refer to any field in type 'struct virtio_driver' .restore = pm_sleep_ptr(virtio_i2c_restore), ^ 2 errors generated. vim +270 drivers/i2c/busses/i2c-virtio.c 260 261 static struct virtio_driver virtio_i2c_driver = { 262 .feature_table = features, 263 .feature_table_size = ARRAY_SIZE(features), 264 .id_table = id_table, 265 .probe = virtio_i2c_probe, 266 .remove = virtio_i2c_remove, 267 .driver = { 268 .name = "i2c_virtio", 269 }, > 270 .freeze = pm_sleep_ptr(virtio_i2c_freeze), > 271 .restore = pm_sleep_ptr(virtio_i2c_restore), 272 }; 273 module_virtio_driver(virtio_i2c_driver); 274
As the build bot noticed - this patch is invalid as the virtio_driver.{freeze,restore} callbacks are guarded by #ifdefs. Feel free to apply the rest (if everybody is happy with them) and I'll respin this one. Cheers, -Paul Le samedi 22 juillet 2023 à 13:53 +0200, Paul Cercueil a écrit : > Use the new PM macros for the suspend and resume functions to be > automatically dropped by the compiler when CONFIG_PM or > CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards. > > This has the advantage of always compiling these functions in, > independently of any Kconfig option. Thanks to that, bugs and other > regressions are subsequently easier to catch. > > Signed-off-by: Paul Cercueil <paul@crapouillou.net> > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> > > --- > Cc: Conghui Chen <conghui.chen@intel.com> > Cc: Viresh Kumar <viresh.kumar@linaro.org> > Cc: virtualization@lists.linux-foundation.org > --- > drivers/i2c/busses/i2c-virtio.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-virtio.c > b/drivers/i2c/busses/i2c-virtio.c > index 4b9536f50800..c60ae531ba57 100644 > --- a/drivers/i2c/busses/i2c-virtio.c > +++ b/drivers/i2c/busses/i2c-virtio.c > @@ -243,7 +243,6 @@ static struct virtio_device_id id_table[] = { > }; > MODULE_DEVICE_TABLE(virtio, id_table); > > -#ifdef CONFIG_PM_SLEEP > static int virtio_i2c_freeze(struct virtio_device *vdev) > { > virtio_i2c_del_vqs(vdev); > @@ -254,7 +253,6 @@ static int virtio_i2c_restore(struct > virtio_device *vdev) > { > return virtio_i2c_setup_vqs(vdev->priv); > } > -#endif > > static const unsigned int features[] = { > VIRTIO_I2C_F_ZERO_LENGTH_REQUEST, > @@ -269,10 +267,8 @@ static struct virtio_driver virtio_i2c_driver = > { > .driver = { > .name = "i2c_virtio", > }, > -#ifdef CONFIG_PM_SLEEP > - .freeze = virtio_i2c_freeze, > - .restore = virtio_i2c_restore, > -#endif > + .freeze = pm_sleep_ptr(virtio_i2c_freeze), > + .restore = pm_sleep_ptr(virtio_i2c_restore), > }; > module_virtio_driver(virtio_i2c_driver); >
diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c index 4b9536f50800..c60ae531ba57 100644 --- a/drivers/i2c/busses/i2c-virtio.c +++ b/drivers/i2c/busses/i2c-virtio.c @@ -243,7 +243,6 @@ static struct virtio_device_id id_table[] = { }; MODULE_DEVICE_TABLE(virtio, id_table); -#ifdef CONFIG_PM_SLEEP static int virtio_i2c_freeze(struct virtio_device *vdev) { virtio_i2c_del_vqs(vdev); @@ -254,7 +253,6 @@ static int virtio_i2c_restore(struct virtio_device *vdev) { return virtio_i2c_setup_vqs(vdev->priv); } -#endif static const unsigned int features[] = { VIRTIO_I2C_F_ZERO_LENGTH_REQUEST, @@ -269,10 +267,8 @@ static struct virtio_driver virtio_i2c_driver = { .driver = { .name = "i2c_virtio", }, -#ifdef CONFIG_PM_SLEEP - .freeze = virtio_i2c_freeze, - .restore = virtio_i2c_restore, -#endif + .freeze = pm_sleep_ptr(virtio_i2c_freeze), + .restore = pm_sleep_ptr(virtio_i2c_restore), }; module_virtio_driver(virtio_i2c_driver);