[PATCH v2 11/15] ASoC: Intel: avs: Machine board registration
Vineet Gupta
vgupta at kernel.org
Sat May 14 04:49:54 CEST 2022
On 5/9/22 18:08, Amadeusz Sławiński wrote:
> On 5/9/2022 1:58 PM, kernel test robot wrote:
>> Hi Cezary,
>>
>> I love your patch! Perhaps something to improve:
>>
>> [auto build test WARNING on broonie-sound/for-next]
>> [also build test WARNING on next-20220506]
>> [cannot apply to tiwai-sound/for-next v5.18-rc6]
>> [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]
>>
>> url:
>> https://github.com/intel-lab-lkp/linux/commits/Cezary-Rojewski/ASoC-Intel-avs-Driver-core-and-PCM-operations/20220509-165656
>> base:
>> https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
>> for-next
>> config: arc-allyesconfig
>> (https://download.01.org/0day-ci/archive/20220509/202205091954.7hT2TBhd-lkp@intel.com/config)
>> compiler: arceb-elf-gcc (GCC) 11.3.0
>> reproduce (this is a W=1 build):
>> wget
>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
>> -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> #
>> https://github.com/intel-lab-lkp/linux/commit/2ef25400a7aee5a8e75c2ccdb5618be31c9f6809
>> git remote add linux-review
>> https://github.com/intel-lab-lkp/linux
>> git fetch --no-tags linux-review
>> Cezary-Rojewski/ASoC-Intel-avs-Driver-core-and-PCM-operations/20220509-165656
>> git checkout 2ef25400a7aee5a8e75c2ccdb5618be31c9f6809
>> # save the config file
>> mkdir build_dir && cp config build_dir/.config
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0
>> make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash sound/soc/intel/avs/
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp at intel.com>
>>
>> All warnings (new ones prefixed by >>):
>>
>> In file included from include/linux/device.h:15,
>> from include/linux/acpi.h:15,
>> from sound/soc/intel/avs/board_selection.c:9:
>> sound/soc/intel/avs/board_selection.c: In function
>> 'avs_register_i2s_board':
>>>> sound/soc/intel/avs/board_selection.c:328:36: warning: format '%ld'
>>>> expects argument of type 'long int', but argument 5 has type 'int'
>>>> [-Wformat=]
>> 328 | dev_err(adev->dev, "Platform supports %d
>> SSPs but board %s requires SSP%ld\n",
>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/dev_printk.h:110:30: note: in definition of macro
>> 'dev_printk_index_wrap'
>> 110 | _p_func(dev, fmt,
>> ##__VA_ARGS__); \
>> | ^~~
>> include/linux/dev_printk.h:144:56: note: in expansion of macro
>> 'dev_fmt'
>> 144 | dev_printk_index_wrap(_dev_err, KERN_ERR, dev,
>> dev_fmt(fmt), ##__VA_ARGS__)
>> | ^~~~~~~
>> sound/soc/intel/avs/board_selection.c:328:17: note: in expansion
>> of macro 'dev_err'
>> 328 | dev_err(adev->dev, "Platform supports %d
>> SSPs but board %s requires SSP%ld\n",
>> | ^~~~~~~
>> sound/soc/intel/avs/board_selection.c:328:90: note: format string
>> is defined here
>> 328 | dev_err(adev->dev, "Platform supports %d
>> SSPs but board %s requires SSP%ld\n",
>> | ~~^
>> | |
>> | long int
>> | %d
>>
>>
>> vim +328 sound/soc/intel/avs/board_selection.c
>>
>> 318
>> 319 static int avs_register_i2s_board(struct avs_dev *adev,
>> struct snd_soc_acpi_mach *mach)
>> 320 {
>> 321 struct platform_device *board;
>> 322 int num_ssps;
>> 323 char *name;
>> 324 int ret;
>> 325
>> 326 num_ssps = adev->hw_cfg.i2s_caps.ctrl_count;
>> 327 if (fls(mach->mach_params.i2s_link_mask) > num_ssps) {
>> > 328 dev_err(adev->dev, "Platform supports %d SSPs but
>> board %s requires SSP%ld\n",
>> 329 num_ssps, mach->drv_name,
>> __fls(mach->mach_params.i2s_link_mask));
>> 330 return -ENODEV;
>> 331 }
>> 332
>> 333 name = devm_kasprintf(adev->dev, GFP_KERNEL,
>> "%s.%d-platform", mach->drv_name,
>> 334 mach->mach_params.i2s_link_mask);
>> 335 if (!name)
>> 336 return -ENOMEM;
>> 337
>> 338 ret = avs_i2s_platform_register(adev, name,
>> mach->mach_params.i2s_link_mask, mach->pdata);
>> 339 if (ret < 0)
>> 340 return ret;
>> 341
>> 342 mach->mach_params.platform = name;
>> 343
>> 344 board = platform_device_register_data(NULL,
>> mach->drv_name, mach->mach_params.i2s_link_mask,
>> 345 (const void *)mach, sizeof(*mach));
>> 346 if (IS_ERR(board)) {
>> 347 dev_err(adev->dev, "ssp board register failed\n");
>> 348 return PTR_ERR(board);
>> 349 }
>> 350
>> 351 ret = devm_add_action(adev->dev,
>> board_pdev_unregister, board);
>> 352 if (ret < 0) {
>> 353 platform_device_unregister(board);
>> 354 return ret;
>> 355 }
>> 356
>> 357 return 0;
>> 358 }
>> 359
>>
>
> Kernel test robot warns us about __fls and it is right, as __fls
> depending on architecture returns either unsigned int or unsigned long.
> But I would say that this seems questionable, as I would expect
> consistent return value between arches, especially for functions where
> we operate on bits and probably don't want inconsistent results.
>
> Generic asm header [1] seems to suggest that it should accept unsigned
> long as parameter and return unsigned long. It seems however that arc
> accepts unsigned long as argument and returns int, while m68k uses int
> for argument and return value...
>
> Adding relevant architecture maintainers to CC.
>
> [1]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/asm-generic/bitops/__fls.h
In generic code __fls() returns long, while fls() return int, which is
weird as well. Anyhow for this error, ARC indeed needs fixing.
Do u want to send a patch ?
Thx,
-Vineet
More information about the Alsa-devel
mailing list