Re: [PATCH 1/2] pwm: make it possible to apply pwm changes in atomic context

From: kernel test robot
Date: Sun Oct 01 2023 - 10:44:12 EST


Hi Sean,

kernel test robot noticed the following build errors:

[auto build test ERROR on thierry-reding-pwm/for-next]
[also build test ERROR on shawnguo/for-next atorgue-stm32/stm32-next media-tree/master linus/master v6.6-rc3 next-20230929]
[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/Sean-Young/media-pwm-ir-tx-trigger-edges-from-hrtimer-interrupt-context/20231001-194056
base: https://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git for-next
patch link: https://lore.kernel.org/r/1bd5241d584ceb4d6b731c4dc3203fb9686ee1d1.1696156485.git.sean%40mess.org
patch subject: [PATCH 1/2] pwm: make it possible to apply pwm changes in atomic context
config: arm-randconfig-002-20231001 (https://download.01.org/0day-ci/archive/20231001/202310012229.ldJwkjOY-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231001/202310012229.ldJwkjOY-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310012229.ldJwkjOY-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

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 include/linux/i2c.h:13,
from drivers/input/misc/da7280.c:12:
include/linux/pwm.h: In function 'pwm_apply_state':
>> include/linux/pwm.h:428:24: error: implicit declaration of function 'pwm_can_sleep'; did you mean 'cant_sleep'? [-Werror=implicit-function-declaration]
428 | might_sleep_if(pwm_can_sleep(pwm));
| ^~~~~~~~~~~~~
include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
194 | #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
| ^~~~
In file included from drivers/input/misc/da7280.c:16:
include/linux/pwm.h: At top level:
>> include/linux/pwm.h:455:20: error: conflicting types for 'pwm_can_sleep'; have 'bool(struct pwm_device *)' {aka '_Bool(struct pwm_device *)'}
455 | static inline bool pwm_can_sleep(struct pwm_device *pwm)
| ^~~~~~~~~~~~~
include/linux/pwm.h:428:24: note: previous implicit declaration of 'pwm_can_sleep' with type 'int()'
428 | might_sleep_if(pwm_can_sleep(pwm));
| ^~~~~~~~~~~~~
include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
194 | #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
| ^~~~
cc1: some warnings being treated as errors


vim +428 include/linux/pwm.h

419
420 struct pwm_device *devm_pwm_get(struct device *dev, const char *con_id);
421 struct pwm_device *devm_fwnode_pwm_get(struct device *dev,
422 struct fwnode_handle *fwnode,
423 const char *con_id);
424 #else
425 static inline int pwm_apply_state(struct pwm_device *pwm,
426 const struct pwm_state *state)
427 {
> 428 might_sleep_if(pwm_can_sleep(pwm));
429 return -ENOTSUPP;
430 }
431
432 static inline int pwm_adjust_config(struct pwm_device *pwm)
433 {
434 return -ENOTSUPP;
435 }
436
437 static inline int pwm_config(struct pwm_device *pwm, int duty_ns,
438 int period_ns)
439 {
440 might_sleep_if(pwm_can_sleep(pwm));
441 return -EINVAL;
442 }
443
444 static inline int pwm_enable(struct pwm_device *pwm)
445 {
446 might_sleep_if(pwm_can_sleep(pwm));
447 return -EINVAL;
448 }
449
450 static inline void pwm_disable(struct pwm_device *pwm)
451 {
452 might_sleep_if(pwm_can_sleep(pwm));
453 }
454
> 455 static inline bool pwm_can_sleep(struct pwm_device *pwm)
456 {
457 return true;
458 }
459

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