Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57] url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341 base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57 config: riscv-randconfig-c006-20220331 (https://download.01.org/0day-ci/archive/20220401/202204010248.AB6ZnOyw-lkp@xxxxxxxxx/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 881350a92d821d4f8e4fa648443ed1d17e251188) 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 # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/3539d23dd289ca77a85d66fe8721e4febfc50ea4 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341 git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/pinctrl/samsung/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15: In file included from include/linux/interrupt.h:11: In file included from include/linux/hardirq.h:11: In file included from ./arch/riscv/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/riscv/include/asm/io.h:136: include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __raw_readb(PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) ^ In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15: In file included from include/linux/interrupt.h:11: In file included from include/linux/hardirq.h:11: In file included from ./arch/riscv/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/riscv/include/asm/io.h:136: include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu' #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) ^ In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15: In file included from include/linux/interrupt.h:11: In file included from include/linux/hardirq.h:11: In file included from ./arch/riscv/include/generated/asm/hardirq.h:1: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:13: In file included from arch/riscv/include/asm/io.h:136: include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writeb(value, PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:1024:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port; ~~~~~~~~~~ ^ >> drivers/pinctrl/samsung/pinctrl-s3c64xx.c:474:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'? bank->irq_domain = irq_domain_add_linear(bank->of_node, ^~~~~~~ fwnode drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here struct fwnode_handle *fwnode; ^ drivers/pinctrl/samsung/pinctrl-s3c64xx.c:746:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'? bank->irq_domain = irq_domain_add_linear(bank->of_node, ^~~~~~~ fwnode drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here struct fwnode_handle *fwnode; ^ 7 warnings and 2 errors generated. vim +474 drivers/pinctrl/samsung/pinctrl-s3c64xx.c 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 444 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 445 /** 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 446 * s3c64xx_eint_gpio_init() - setup handling of external gpio interrupts. 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 447 * @d: driver data of samsung pinctrl driver. 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 448 */ 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 449 static int s3c64xx_eint_gpio_init(struct samsung_pinctrl_drv_data *d) 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 450 { 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 451 struct s3c64xx_eint_gpio_data *data; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 452 struct samsung_pin_bank *bank; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 453 struct device *dev = d->dev; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 454 unsigned int nr_domains; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 455 unsigned int i; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 456 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 457 if (!d->irq) { 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 458 dev_err(dev, "irq number not available\n"); 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 459 return -EINVAL; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 460 } 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 461 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 462 nr_domains = 0; 1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 463 bank = d->pin_banks; 1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 464 for (i = 0; i < d->nr_banks; ++i, ++bank) { 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 465 unsigned int nr_eints; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 466 unsigned int mask; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 467 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 468 if (bank->eint_type != EINT_TYPE_GPIO) 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 469 continue; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 470 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 471 mask = bank->eint_mask; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 472 nr_eints = fls(mask); 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 473 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 @474 bank->irq_domain = irq_domain_add_linear(bank->of_node, 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 475 nr_eints, &s3c64xx_gpio_irqd_ops, bank); 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 476 if (!bank->irq_domain) { 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 477 dev_err(dev, "gpio irq domain add failed\n"); 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 478 return -ENXIO; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 479 } 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 480 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 481 ++nr_domains; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 482 } 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 483 0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 484 data = devm_kzalloc(dev, struct_size(data, domains, nr_domains), 0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 485 GFP_KERNEL); fa5c0f46e2b9a1 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Marek Szyprowski 2017-01-19 486 if (!data) 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 487 return -ENOMEM; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 488 data->drvdata = d; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 489 1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 490 bank = d->pin_banks; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 491 nr_domains = 0; 1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 492 for (i = 0; i < d->nr_banks; ++i, ++bank) { 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 493 if (bank->eint_type != EINT_TYPE_GPIO) 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 494 continue; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 495 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 496 data->domains[nr_domains++] = bank->irq_domain; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 497 } 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 498 623a650ebc886f drivers/pinctrl/samsung/pinctrl-s3c64xx.c Thomas Gleixner 2015-06-21 499 irq_set_chained_handler_and_data(d->irq, s3c64xx_eint_gpio_irq, data); 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 500 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 501 return 0; 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 502 } 61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 503 -- 0-DAY CI Kernel Test Service https://01.org/lkp