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

From: kernel test robot
Date: Tue Apr 30 2024 - 21:18:27 EST


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@xxxxxxxxx/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@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/202405010842.zim8X3E5-lkp@xxxxxxxxx/

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