Re: [PATCH v2 5/6] gpio: thunderx: Utilize for_each_set_clump macro

From: kbuild test robot
Date: Mon Apr 27 2020 - 14:27:53 EST


Hi Syed,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on gpio/for-next]
[also build test ERROR on linus/master asm-generic/master v5.7-rc3 next-20200423]
[cannot apply to xlnx/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Syed-Nayyar-Waris/Introduce-the-for_each_set_clump-macro/20200427-184103
base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: s390-allyesconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=s390

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

In file included from arch/s390/include/asm/bitops.h:425,
from include/linux/bitops.h:29,
from drivers/gpio/gpio-thunderx.c:9:
drivers/gpio/gpio-thunderx.c: In function 'thunderx_gpio_set_multiple':
>> include/linux/bitops.h:62:34: error: passing argument 1 of 'find_next_clump' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | for ((start) = find_first_clump(&(clump), (bits), (size), (clump_size)); \
include/asm-generic/bitops/find.h:100:19: note: in definition of macro 'find_first_clump'
100 | find_next_clump((clump), (bits), (size), 0, (clump_size))
| ^~~~~
>> drivers/gpio/gpio-thunderx.c:284:2: note: in expansion of macro 'for_each_set_clump'
284 | for_each_set_clump(offset, gpio_mask, mask, chip->ngpio, bank_size) {
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/find.h:94:53: note: expected 'long unsigned int *' but argument is of type 'u64 *' {aka 'long long unsigned int *'}
94 | extern unsigned long find_next_clump(unsigned long *clump,
| ~~~~~~~~~~~~~~~^~~~~
In file included from drivers/gpio/gpio-thunderx.c:9:
include/linux/bitops.h:64:33: error: passing argument 1 of 'find_next_clump' from incompatible pointer type [-Werror=incompatible-pointer-types]
64 | (start) = find_next_clump(&(clump), (bits), (size), (start) + (clump_size), (clump_size)))
| ^~~~~~~~
| |
| u64 * {aka long long unsigned int *}
>> drivers/gpio/gpio-thunderx.c:284:2: note: in expansion of macro 'for_each_set_clump'
284 | for_each_set_clump(offset, gpio_mask, mask, chip->ngpio, bank_size) {
| ^~~~~~~~~~~~~~~~~~
In file included from arch/s390/include/asm/bitops.h:425,
from include/linux/bitops.h:29,
from drivers/gpio/gpio-thunderx.c:9:
include/asm-generic/bitops/find.h:94:53: note: expected 'long unsigned int *' but argument is of type 'u64 *' {aka 'long long unsigned int *'}
94 | extern unsigned long find_next_clump(unsigned long *clump,
| ~~~~~~~~~~~~~~~^~~~~
cc1: some warnings being treated as errors

vim +/for_each_set_clump +284 drivers/gpio/gpio-thunderx.c

272
273 static void thunderx_gpio_set_multiple(struct gpio_chip *chip,
274 unsigned long *mask,
275 unsigned long *bits)
276 {
277 int bank;
278 u64 set_bits, clear_bits, gpio_mask;
279 const unsigned long bank_size = 64;
280 unsigned long offset;
281
282 struct thunderx_gpio *txgpio = gpiochip_get_data(chip);
283
> 284 for_each_set_clump(offset, gpio_mask, mask, chip->ngpio, bank_size) {
285 bank = offset / bank_size;
286 set_bits = bits[bank] & gpio_mask;
287 clear_bits = ~bits[bank] & gpio_mask;
288 writeq(set_bits, txgpio->register_base + (bank * GPIO_2ND_BANK) + GPIO_TX_SET);
289 writeq(clear_bits, txgpio->register_base + (bank * GPIO_2ND_BANK) + GPIO_TX_CLR);
290 }
291 }
292

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip