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

From: Sean Young
Date: Sun Oct 01 2023 - 13:22:04 EST


On Mon, Oct 02, 2023 at 12:07:58AM +0800, kernel test robot wrote:
> 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]

There are indeed some configs in which there are build errors if
CONFIG_PWM is disabled, I'll fix it in the next version.

In the mean time it would be great to have some feedback on this patch,
and see if there is any other rework needed.

Thanks
Sean

>
> 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: i386-buildonly-randconfig-004-20231001 (https://download.01.org/0day-ci/archive/20231001/202310012348.puyNjoMk-lkp@xxxxxxxxx/config)
> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231001/202310012348.puyNjoMk-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/202310012348.puyNjoMk-lkp@xxxxxxxxx/
>
> All errors (new ones prefixed by >>):
>
> In file included from arch/x86/include/asm/percpu.h:27:0,
> from arch/x86/include/asm/current.h:10,
> from include/linux/sched.h:12,
> from include/linux/ratelimit.h:6,
> from include/linux/dev_printk.h:16,
> from include/linux/device.h:15,
> from include/linux/backlight.h:12,
> from drivers/video/fbdev/ssd1307fb.c:8:
> include/linux/pwm.h: In function 'pwm_apply_state':
> include/linux/pwm.h:428:17: error: implicit declaration of function 'pwm_can_sleep'; did you mean 'gpiod_cansleep'? [-Werror=implicit-function-declaration]
> might_sleep_if(pwm_can_sleep(pwm));
> ^
> include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
> #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
> ^~~~
> In file included from drivers/video/fbdev/ssd1307fb.c:16:0:
> include/linux/pwm.h: At top level:
> >> include/linux/pwm.h:455:20: error: conflicting types for 'pwm_can_sleep'
> static inline bool pwm_can_sleep(struct pwm_device *pwm)
> ^~~~~~~~~~~~~
> In file included from arch/x86/include/asm/percpu.h:27:0,
> from arch/x86/include/asm/current.h:10,
> from include/linux/sched.h:12,
> from include/linux/ratelimit.h:6,
> from include/linux/dev_printk.h:16,
> from include/linux/device.h:15,
> from include/linux/backlight.h:12,
> from drivers/video/fbdev/ssd1307fb.c:8:
> include/linux/pwm.h:428:17: note: previous implicit declaration of 'pwm_can_sleep' was here
> might_sleep_if(pwm_can_sleep(pwm));
> ^
> include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
> #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
> ^~~~
> cc1: some warnings being treated as errors
> --
> In file included from arch/x86/include/asm/percpu.h:27:0,
> from arch/x86/include/asm/preempt.h:6,
> from include/linux/preempt.h:79,
> from include/linux/spinlock.h:56,
> 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/mfd/intel_soc_pmic_crc.c:11:
> include/linux/pwm.h: In function 'pwm_apply_state':
> include/linux/pwm.h:428:17: error: implicit declaration of function 'pwm_can_sleep'; did you mean 'cant_sleep'? [-Werror=implicit-function-declaration]
> might_sleep_if(pwm_can_sleep(pwm));
> ^
> include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
> #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
> ^~~~
> In file included from drivers/mfd/intel_soc_pmic_crc.c:18:0:
> include/linux/pwm.h: At top level:
> >> include/linux/pwm.h:455:20: error: conflicting types for 'pwm_can_sleep'
> static inline bool pwm_can_sleep(struct pwm_device *pwm)
> ^~~~~~~~~~~~~
> In file included from arch/x86/include/asm/percpu.h:27:0,
> from arch/x86/include/asm/preempt.h:6,
> from include/linux/preempt.h:79,
> from include/linux/spinlock.h:56,
> 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/mfd/intel_soc_pmic_crc.c:11:
> include/linux/pwm.h:428:17: note: previous implicit declaration of 'pwm_can_sleep' was here
> might_sleep_if(pwm_can_sleep(pwm));
> ^
> include/linux/kernel.h:194:39: note: in definition of macro 'might_sleep_if'
> #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
> ^~~~
> cc1: some warnings being treated as errors
>
>
> vim +/pwm_can_sleep +455 include/linux/pwm.h
>
> 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