[PATCH 12/17] irqchip: Add support for LAN966x OIC

kernel test robot lkp at intel.com
Tue Apr 30 18:17:23 PDT 2024


Hi Herve,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tip/irq/core]
[also build test WARNING on linus/master v6.9-rc6 next-20240430]
[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/Herve-Codina/mfd-syscon-Add-reference-counting-and-device-managed-support/20240430-164912
base:   tip/irq/core
patch link:    https://lore.kernel.org/r/20240430083730.134918-13-herve.codina%40bootlin.com
patch subject: [PATCH 12/17] irqchip: Add support for LAN966x OIC
config: hexagon-randconfig-r071-20240501 (https://download.01.org/0day-ci/archive/20240501/202405010842.zim8X3E5-lkp@intel.com/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240501/202405010842.zim8X3E5-lkp@intel.com/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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405010842.zim8X3E5-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from drivers/irqchip/irq-lan966x-oic.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/hexagon/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/hexagon/include/asm/io.h:328:
   include/asm-generic/io.h:547: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:560: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/irqchip/irq-lan966x-oic.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/hexagon/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/hexagon/include/asm/io.h:328:
   include/asm-generic/io.h:573: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/irqchip/irq-lan966x-oic.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/hexagon/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/hexagon/include/asm/io.h:328:
   include/asm-generic/io.h:584: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:594: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:604: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);
                                                         ~~~~~~~~~~ ^
>> drivers/irqchip/irq-lan966x-oic.c:225:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (lan966x_oic->irq < 0) {
               ^~~~~~~~~~~~~~~~~~~~
   drivers/irqchip/irq-lan966x-oic.c:253:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/irqchip/irq-lan966x-oic.c:225:2: note: remove the 'if' if its condition is always false
           if (lan966x_oic->irq < 0) {
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/irqchip/irq-lan966x-oic.c:204:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   7 warnings generated.


vim +225 drivers/irqchip/irq-lan966x-oic.c

   197	
   198	static int lan966x_oic_probe(struct platform_device *pdev)
   199	{
   200		struct device_node *node = pdev->dev.of_node;
   201		struct lan966x_oic_data *lan966x_oic;
   202		struct device *dev = &pdev->dev;
   203		struct irq_chip_generic *gc;
   204		int ret;
   205		int i;
   206	
   207		lan966x_oic = devm_kmalloc(dev, sizeof(*lan966x_oic), GFP_KERNEL);
   208		if (!lan966x_oic)
   209			return -ENOMEM;
   210	
   211		lan966x_oic->regs = devm_platform_ioremap_resource(pdev, 0);
   212		if (IS_ERR(lan966x_oic->regs))
   213			return dev_err_probe(dev, PTR_ERR(lan966x_oic->regs),
   214					     "failed to map resource\n");
   215	
   216		lan966x_oic->domain = irq_domain_alloc_linear(of_node_to_fwnode(node),
   217							      LAN966X_OIC_NR_IRQ,
   218							      &irq_generic_chip_ops, NULL);
   219		if (!lan966x_oic->domain) {
   220			dev_err(dev, "failed to create an IRQ domain\n");
   221			return -EINVAL;
   222		}
   223	
   224		lan966x_oic->irq = platform_get_irq(pdev, 0);
 > 225		if (lan966x_oic->irq < 0) {
   226			dev_err_probe(dev, lan966x_oic->irq, "failed to get the IRQ\n");
   227			goto err_domain_free;
   228		}
   229	
   230		ret = irq_alloc_domain_generic_chips(lan966x_oic->domain, 32, 1, "lan966x-oic",
   231						     handle_level_irq, 0, 0, 0);
   232		if (ret) {
   233			dev_err_probe(dev, ret, "failed to alloc irq domain gc\n");
   234			goto err_domain_free;
   235		}
   236	
   237		/* Init chips */
   238		BUILD_BUG_ON(DIV_ROUND_UP(LAN966X_OIC_NR_IRQ, 32) != ARRAY_SIZE(lan966x_oic_chip_regs));
   239		for (i = 0; i < ARRAY_SIZE(lan966x_oic_chip_regs); i++) {
   240			gc = irq_get_domain_generic_chip(lan966x_oic->domain, i * 32);
   241			lan966x_oic_chip_init(lan966x_oic, gc, &lan966x_oic_chip_regs[i]);
   242		}
   243	
   244		irq_set_chained_handler_and_data(lan966x_oic->irq, lan966x_oic_irq_handler,
   245						 lan966x_oic->domain);
   246	
   247		irq_domain_publish(lan966x_oic->domain);
   248		platform_set_drvdata(pdev, lan966x_oic);
   249		return 0;
   250	
   251	err_domain_free:
   252		irq_domain_free(lan966x_oic->domain);
   253		return ret;
   254	}
   255	

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



More information about the linux-arm-kernel mailing list