Hi Stefan, kernel test robot noticed the following build errors: [auto build test ERROR on robh/for-next] [also build test ERROR on powerpc/next pci/next pci/for-linus linus/master v6.11-rc2 next-20240808] [cannot apply to powerpc/fixes] [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/Stefan-Wiehler/of-irq-Consider-device-address-size-in-interrupt-map-walk/20240807-215113 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20240807134032.1364503-2-stefan.wiehler%40nokia.com patch subject: [PATCH v2] of/irq: Consider device address size in interrupt map walk config: i386-buildonly-randconfig-003-20240809 (https://download.01.org/0day-ci/archive/20240809/202408090801.AcBWUFAJ-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-12) 11.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240809/202408090801.AcBWUFAJ-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/202408090801.AcBWUFAJ-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/pci/of_property.c: In function 'of_pci_prop_intr_map': drivers/pci/of_property.c:234:47: warning: passing argument 2 of 'of_irq_parse_raw' makes integer from pointer without a cast [-Wint-conversion] 234 | ret = of_irq_parse_raw(laddr, &out_irq[i]); | ^~~~~~~~~~~ | | | struct of_phandle_args * In file included from drivers/pci/of_property.c:8: include/linux/of_irq.h:35:53: note: expected 'u32' {aka 'unsigned int'} but argument is of type 'struct of_phandle_args *' 35 | extern int of_irq_parse_raw(const __be32 *addr, u32 addrsize, | ~~~~^~~~~~~~ >> drivers/pci/of_property.c:234:23: error: too few arguments to function 'of_irq_parse_raw' 234 | ret = of_irq_parse_raw(laddr, &out_irq[i]); | ^~~~~~~~~~~~~~~~ In file included from drivers/pci/of_property.c:8: include/linux/of_irq.h:35:12: note: declared here 35 | extern int of_irq_parse_raw(const __be32 *addr, u32 addrsize, | ^~~~~~~~~~~~~~~~ vim +/of_irq_parse_raw +234 drivers/pci/of_property.c dc12273fa3d8a8 Herve Codina 2024-05-27 205 407d1a51921e9f Lizhi Hou 2023-08-15 206 static int of_pci_prop_intr_map(struct pci_dev *pdev, struct of_changeset *ocs, 407d1a51921e9f Lizhi Hou 2023-08-15 207 struct device_node *np) 407d1a51921e9f Lizhi Hou 2023-08-15 208 { 33efa29e825636 Lizhi Hou 2023-09-29 209 u32 i, addr_sz[OF_PCI_MAX_INT_PIN] = { 0 }, map_sz = 0; 407d1a51921e9f Lizhi Hou 2023-08-15 210 struct of_phandle_args out_irq[OF_PCI_MAX_INT_PIN]; 407d1a51921e9f Lizhi Hou 2023-08-15 211 __be32 laddr[OF_PCI_ADDRESS_CELLS] = { 0 }; 407d1a51921e9f Lizhi Hou 2023-08-15 212 u32 int_map_mask[] = { 0xffff00, 0, 0, 7 }; 407d1a51921e9f Lizhi Hou 2023-08-15 213 struct device_node *pnode; 407d1a51921e9f Lizhi Hou 2023-08-15 214 struct pci_dev *child; 407d1a51921e9f Lizhi Hou 2023-08-15 215 u32 *int_map, *mapp; 407d1a51921e9f Lizhi Hou 2023-08-15 216 int ret; 407d1a51921e9f Lizhi Hou 2023-08-15 217 u8 pin; 407d1a51921e9f Lizhi Hou 2023-08-15 218 407d1a51921e9f Lizhi Hou 2023-08-15 219 pnode = pci_device_to_OF_node(pdev->bus->self); 407d1a51921e9f Lizhi Hou 2023-08-15 220 if (!pnode) 407d1a51921e9f Lizhi Hou 2023-08-15 221 pnode = pci_bus_to_OF_node(pdev->bus); 407d1a51921e9f Lizhi Hou 2023-08-15 222 407d1a51921e9f Lizhi Hou 2023-08-15 223 if (!pnode) { 407d1a51921e9f Lizhi Hou 2023-08-15 224 pci_err(pdev, "failed to get parent device node"); 407d1a51921e9f Lizhi Hou 2023-08-15 225 return -EINVAL; 407d1a51921e9f Lizhi Hou 2023-08-15 226 } 407d1a51921e9f Lizhi Hou 2023-08-15 227 407d1a51921e9f Lizhi Hou 2023-08-15 228 laddr[0] = cpu_to_be32((pdev->bus->number << 16) | (pdev->devfn << 8)); 407d1a51921e9f Lizhi Hou 2023-08-15 229 for (pin = 1; pin <= OF_PCI_MAX_INT_PIN; pin++) { 407d1a51921e9f Lizhi Hou 2023-08-15 230 i = pin - 1; 407d1a51921e9f Lizhi Hou 2023-08-15 231 out_irq[i].np = pnode; 407d1a51921e9f Lizhi Hou 2023-08-15 232 out_irq[i].args_count = 1; 407d1a51921e9f Lizhi Hou 2023-08-15 233 out_irq[i].args[0] = pin; 407d1a51921e9f Lizhi Hou 2023-08-15 @234 ret = of_irq_parse_raw(laddr, &out_irq[i]); 407d1a51921e9f Lizhi Hou 2023-08-15 235 if (ret) { 33efa29e825636 Lizhi Hou 2023-09-29 236 out_irq[i].np = NULL; 33efa29e825636 Lizhi Hou 2023-09-29 237 pci_dbg(pdev, "parse irq %d failed, ret %d", pin, ret); 407d1a51921e9f Lizhi Hou 2023-08-15 238 continue; 407d1a51921e9f Lizhi Hou 2023-08-15 239 } 33efa29e825636 Lizhi Hou 2023-09-29 240 of_property_read_u32(out_irq[i].np, "#address-cells", 407d1a51921e9f Lizhi Hou 2023-08-15 241 &addr_sz[i]); 407d1a51921e9f Lizhi Hou 2023-08-15 242 } 407d1a51921e9f Lizhi Hou 2023-08-15 243 407d1a51921e9f Lizhi Hou 2023-08-15 244 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) { 407d1a51921e9f Lizhi Hou 2023-08-15 245 for (pin = 1; pin <= OF_PCI_MAX_INT_PIN; pin++) { 407d1a51921e9f Lizhi Hou 2023-08-15 246 i = pci_swizzle_interrupt_pin(child, pin) - 1; 33efa29e825636 Lizhi Hou 2023-09-29 247 if (!out_irq[i].np) 33efa29e825636 Lizhi Hou 2023-09-29 248 continue; 407d1a51921e9f Lizhi Hou 2023-08-15 249 map_sz += 5 + addr_sz[i] + out_irq[i].args_count; 407d1a51921e9f Lizhi Hou 2023-08-15 250 } 407d1a51921e9f Lizhi Hou 2023-08-15 251 } 407d1a51921e9f Lizhi Hou 2023-08-15 252 33efa29e825636 Lizhi Hou 2023-09-29 253 /* 33efa29e825636 Lizhi Hou 2023-09-29 254 * Parsing interrupt failed for all pins. In this case, it does not 33efa29e825636 Lizhi Hou 2023-09-29 255 * need to generate interrupt-map property. 33efa29e825636 Lizhi Hou 2023-09-29 256 */ 33efa29e825636 Lizhi Hou 2023-09-29 257 if (!map_sz) 33efa29e825636 Lizhi Hou 2023-09-29 258 return 0; 33efa29e825636 Lizhi Hou 2023-09-29 259 407d1a51921e9f Lizhi Hou 2023-08-15 260 int_map = kcalloc(map_sz, sizeof(u32), GFP_KERNEL); e6f7d27df5d208 Duoming Zhou 2024-03-03 261 if (!int_map) e6f7d27df5d208 Duoming Zhou 2024-03-03 262 return -ENOMEM; 407d1a51921e9f Lizhi Hou 2023-08-15 263 mapp = int_map; 407d1a51921e9f Lizhi Hou 2023-08-15 264 407d1a51921e9f Lizhi Hou 2023-08-15 265 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) { 407d1a51921e9f Lizhi Hou 2023-08-15 266 for (pin = 1; pin <= OF_PCI_MAX_INT_PIN; pin++) { 33efa29e825636 Lizhi Hou 2023-09-29 267 i = pci_swizzle_interrupt_pin(child, pin) - 1; 33efa29e825636 Lizhi Hou 2023-09-29 268 if (!out_irq[i].np) 33efa29e825636 Lizhi Hou 2023-09-29 269 continue; 33efa29e825636 Lizhi Hou 2023-09-29 270 407d1a51921e9f Lizhi Hou 2023-08-15 271 *mapp = (child->bus->number << 16) | 407d1a51921e9f Lizhi Hou 2023-08-15 272 (child->devfn << 8); 407d1a51921e9f Lizhi Hou 2023-08-15 273 mapp += OF_PCI_ADDRESS_CELLS; 407d1a51921e9f Lizhi Hou 2023-08-15 274 *mapp = pin; 407d1a51921e9f Lizhi Hou 2023-08-15 275 mapp++; 407d1a51921e9f Lizhi Hou 2023-08-15 276 *mapp = out_irq[i].np->phandle; 407d1a51921e9f Lizhi Hou 2023-08-15 277 mapp++; 407d1a51921e9f Lizhi Hou 2023-08-15 278 if (addr_sz[i]) { 407d1a51921e9f Lizhi Hou 2023-08-15 279 ret = of_property_read_u32_array(out_irq[i].np, 407d1a51921e9f Lizhi Hou 2023-08-15 280 "reg", mapp, 407d1a51921e9f Lizhi Hou 2023-08-15 281 addr_sz[i]); 407d1a51921e9f Lizhi Hou 2023-08-15 282 if (ret) 407d1a51921e9f Lizhi Hou 2023-08-15 283 goto failed; 407d1a51921e9f Lizhi Hou 2023-08-15 284 } 407d1a51921e9f Lizhi Hou 2023-08-15 285 mapp += addr_sz[i]; 407d1a51921e9f Lizhi Hou 2023-08-15 286 memcpy(mapp, out_irq[i].args, 407d1a51921e9f Lizhi Hou 2023-08-15 287 out_irq[i].args_count * sizeof(u32)); 407d1a51921e9f Lizhi Hou 2023-08-15 288 mapp += out_irq[i].args_count; 407d1a51921e9f Lizhi Hou 2023-08-15 289 } 407d1a51921e9f Lizhi Hou 2023-08-15 290 } 407d1a51921e9f Lizhi Hou 2023-08-15 291 407d1a51921e9f Lizhi Hou 2023-08-15 292 ret = of_changeset_add_prop_u32_array(ocs, np, "interrupt-map", int_map, 407d1a51921e9f Lizhi Hou 2023-08-15 293 map_sz); 407d1a51921e9f Lizhi Hou 2023-08-15 294 if (ret) 407d1a51921e9f Lizhi Hou 2023-08-15 295 goto failed; 407d1a51921e9f Lizhi Hou 2023-08-15 296 407d1a51921e9f Lizhi Hou 2023-08-15 297 ret = of_changeset_add_prop_u32(ocs, np, "#interrupt-cells", 1); 407d1a51921e9f Lizhi Hou 2023-08-15 298 if (ret) 407d1a51921e9f Lizhi Hou 2023-08-15 299 goto failed; 407d1a51921e9f Lizhi Hou 2023-08-15 300 407d1a51921e9f Lizhi Hou 2023-08-15 301 ret = of_changeset_add_prop_u32_array(ocs, np, "interrupt-map-mask", 407d1a51921e9f Lizhi Hou 2023-08-15 302 int_map_mask, 407d1a51921e9f Lizhi Hou 2023-08-15 303 ARRAY_SIZE(int_map_mask)); 407d1a51921e9f Lizhi Hou 2023-08-15 304 if (ret) 407d1a51921e9f Lizhi Hou 2023-08-15 305 goto failed; 407d1a51921e9f Lizhi Hou 2023-08-15 306 407d1a51921e9f Lizhi Hou 2023-08-15 307 kfree(int_map); 407d1a51921e9f Lizhi Hou 2023-08-15 308 return 0; 407d1a51921e9f Lizhi Hou 2023-08-15 309 407d1a51921e9f Lizhi Hou 2023-08-15 310 failed: 407d1a51921e9f Lizhi Hou 2023-08-15 311 kfree(int_map); 407d1a51921e9f Lizhi Hou 2023-08-15 312 return ret; 407d1a51921e9f Lizhi Hou 2023-08-15 313 } 407d1a51921e9f Lizhi Hou 2023-08-15 314 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki