Hi Bjorn, kernel test robot noticed the following build errors: [auto build test ERROR on pci/next] [also build test ERROR on pci/for-linus robh/for-next linus/master v6.13-rc5 next-20241220] [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/Bjorn-Helgaas/PCI-Unexport-of_pci_parse_bus_range/20250104-053408 base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next patch link: https://lore.kernel.org/r/20250103213129.5182-3-helgaas%40kernel.org patch subject: [PATCH 2/3] PCI: of: Simplify bus range parsing config: i386-buildonly-randconfig-006-20250104 (https://download.01.org/0day-ci/archive/20250104/202501041649.cjMwvH2B-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250104/202501041649.cjMwvH2B-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/202501041649.cjMwvH2B-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/pci/of.c: In function 'devm_of_pci_get_host_bridge_resources': >> drivers/pci/of.c:349:57: error: 'bus_max' undeclared (first use in this function) 349 | if (bus_range->end > bus_range->start + bus_max) | ^~~~~~~ drivers/pci/of.c:349:57: note: each undeclared identifier is reported only once for each function it appears in vim +/bus_max +349 drivers/pci/of.c 4670d610d59233 Rob Herring 2018-01-17 300 4670d610d59233 Rob Herring 2018-01-17 301 /** 5bd51b35c7cbbc Jan Kiszka 2018-05-15 302 * devm_of_pci_get_host_bridge_resources() - Resource-managed parsing of PCI 5bd51b35c7cbbc Jan Kiszka 2018-05-15 303 * host bridge resources from DT 055f87a2a33640 Jan Kiszka 2018-05-15 304 * @dev: host bridge device 4670d610d59233 Rob Herring 2018-01-17 305 * @resources: list where the range of resources will be added after DT parsing 9b41d19aff4090 Krzysztof Kozlowski 2020-07-29 306 * @ib_resources: list where the range of inbound resources (with addresses 9b41d19aff4090 Krzysztof Kozlowski 2020-07-29 307 * from 'dma-ranges') will be added after DT parsing 4670d610d59233 Rob Herring 2018-01-17 308 * @io_base: pointer to a variable that will contain on return the physical 4670d610d59233 Rob Herring 2018-01-17 309 * address for the start of the I/O range. Can be NULL if the caller doesn't 4670d610d59233 Rob Herring 2018-01-17 310 * expect I/O ranges to be present in the device tree. 4670d610d59233 Rob Herring 2018-01-17 311 * 4670d610d59233 Rob Herring 2018-01-17 312 * This function will parse the "ranges" property of a PCI host bridge device 4670d610d59233 Rob Herring 2018-01-17 313 * node and setup the resource mapping based on its content. It is expected 4670d610d59233 Rob Herring 2018-01-17 314 * that the property conforms with the Power ePAPR document. 4670d610d59233 Rob Herring 2018-01-17 315 * 4670d610d59233 Rob Herring 2018-01-17 316 * It returns zero if the range parsing has been successful or a standard error 4670d610d59233 Rob Herring 2018-01-17 317 * value if it failed. 4670d610d59233 Rob Herring 2018-01-17 318 */ 3b55809cf91f54 Rob Herring 2019-10-28 319 static int devm_of_pci_get_host_bridge_resources(struct device *dev, 331f63457165a3 Rob Herring 2019-10-30 320 struct list_head *resources, 331f63457165a3 Rob Herring 2019-10-30 321 struct list_head *ib_resources, 331f63457165a3 Rob Herring 2019-10-30 322 resource_size_t *io_base) 4670d610d59233 Rob Herring 2018-01-17 323 { 055f87a2a33640 Jan Kiszka 2018-05-15 324 struct device_node *dev_node = dev->of_node; 93c9a7f8793175 Jan Kiszka 2018-06-19 325 struct resource *res, tmp_res; 4670d610d59233 Rob Herring 2018-01-17 326 struct resource *bus_range; 4670d610d59233 Rob Herring 2018-01-17 327 struct of_pci_range range; 4670d610d59233 Rob Herring 2018-01-17 328 struct of_pci_range_parser parser; 331f63457165a3 Rob Herring 2019-10-30 329 const char *range_type; 4670d610d59233 Rob Herring 2018-01-17 330 int err; 4670d610d59233 Rob Herring 2018-01-17 331 4670d610d59233 Rob Herring 2018-01-17 332 if (io_base) 4670d610d59233 Rob Herring 2018-01-17 333 *io_base = (resource_size_t)OF_BAD_ADDR; 4670d610d59233 Rob Herring 2018-01-17 334 5bd51b35c7cbbc Jan Kiszka 2018-05-15 335 bus_range = devm_kzalloc(dev, sizeof(*bus_range), GFP_KERNEL); 4670d610d59233 Rob Herring 2018-01-17 336 if (!bus_range) 4670d610d59233 Rob Herring 2018-01-17 337 return -ENOMEM; 4670d610d59233 Rob Herring 2018-01-17 338 d9c5d5ac287caa Jan Kiszka 2018-05-15 339 dev_info(dev, "host bridge %pOF ranges:\n", dev_node); 4670d610d59233 Rob Herring 2018-01-17 340 126b7de6bfd84b Jan Kiszka 2018-05-15 341 err = of_pci_parse_bus_range(dev_node, bus_range); 4670d610d59233 Rob Herring 2018-01-17 342 if (err) { 5ad20c289cd7a4 Bjorn Helgaas 2025-01-03 343 bus_range->start = 0; 5ad20c289cd7a4 Bjorn Helgaas 2025-01-03 344 bus_range->end = 0xff; 4670d610d59233 Rob Herring 2018-01-17 345 bus_range->flags = IORESOURCE_BUS; d9c5d5ac287caa Jan Kiszka 2018-05-15 346 dev_info(dev, " No bus range found for %pOF, using %pR\n", 126b7de6bfd84b Jan Kiszka 2018-05-15 347 dev_node, bus_range); 4670d610d59233 Rob Herring 2018-01-17 348 } else { 4670d610d59233 Rob Herring 2018-01-17 @349 if (bus_range->end > bus_range->start + bus_max) 4670d610d59233 Rob Herring 2018-01-17 350 bus_range->end = bus_range->start + bus_max; 4670d610d59233 Rob Herring 2018-01-17 351 } 4670d610d59233 Rob Herring 2018-01-17 352 pci_add_resource(resources, bus_range); 4670d610d59233 Rob Herring 2018-01-17 353 4670d610d59233 Rob Herring 2018-01-17 354 /* Check for ranges property */ 126b7de6bfd84b Jan Kiszka 2018-05-15 355 err = of_pci_range_parser_init(&parser, dev_node); 4670d610d59233 Rob Herring 2018-01-17 356 if (err) d277f6e88c8872 Rob Herring 2021-08-03 357 return 0; 4670d610d59233 Rob Herring 2018-01-17 358 d9c5d5ac287caa Jan Kiszka 2018-05-15 359 dev_dbg(dev, "Parsing ranges property...\n"); 4670d610d59233 Rob Herring 2018-01-17 360 for_each_of_pci_range(&parser, &range) { 4670d610d59233 Rob Herring 2018-01-17 361 /* Read next ranges element */ 4670d610d59233 Rob Herring 2018-01-17 362 if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_IO) 331f63457165a3 Rob Herring 2019-10-30 363 range_type = "IO"; 4670d610d59233 Rob Herring 2018-01-17 364 else if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_MEM) 331f63457165a3 Rob Herring 2019-10-30 365 range_type = "MEM"; 4670d610d59233 Rob Herring 2018-01-17 366 else 331f63457165a3 Rob Herring 2019-10-30 367 range_type = "err"; 331f63457165a3 Rob Herring 2019-10-30 368 dev_info(dev, " %6s %#012llx..%#012llx -> %#012llx\n", d9c5d5ac287caa Jan Kiszka 2018-05-15 369 range_type, range.cpu_addr, d9c5d5ac287caa Jan Kiszka 2018-05-15 370 range.cpu_addr + range.size - 1, range.pci_addr); 4670d610d59233 Rob Herring 2018-01-17 371 4670d610d59233 Rob Herring 2018-01-17 372 /* 4670d610d59233 Rob Herring 2018-01-17 373 * If we failed translation or got a zero-sized region 4670d610d59233 Rob Herring 2018-01-17 374 * then skip this range 4670d610d59233 Rob Herring 2018-01-17 375 */ 4670d610d59233 Rob Herring 2018-01-17 376 if (range.cpu_addr == OF_BAD_ADDR || range.size == 0) 4670d610d59233 Rob Herring 2018-01-17 377 continue; 4670d610d59233 Rob Herring 2018-01-17 378 93c9a7f8793175 Jan Kiszka 2018-06-19 379 err = of_pci_range_to_resource(&range, dev_node, &tmp_res); 93c9a7f8793175 Jan Kiszka 2018-06-19 380 if (err) 93c9a7f8793175 Jan Kiszka 2018-06-19 381 continue; 93c9a7f8793175 Jan Kiszka 2018-06-19 382 93c9a7f8793175 Jan Kiszka 2018-06-19 383 res = devm_kmemdup(dev, &tmp_res, sizeof(tmp_res), GFP_KERNEL); 4670d610d59233 Rob Herring 2018-01-17 384 if (!res) { 4670d610d59233 Rob Herring 2018-01-17 385 err = -ENOMEM; 5bd51b35c7cbbc Jan Kiszka 2018-05-15 386 goto failed; 4670d610d59233 Rob Herring 2018-01-17 387 } 4670d610d59233 Rob Herring 2018-01-17 388 4670d610d59233 Rob Herring 2018-01-17 389 if (resource_type(res) == IORESOURCE_IO) { 4670d610d59233 Rob Herring 2018-01-17 390 if (!io_base) { d9c5d5ac287caa Jan Kiszka 2018-05-15 391 dev_err(dev, "I/O range found for %pOF. Please provide an io_base pointer to save CPU base address\n", 126b7de6bfd84b Jan Kiszka 2018-05-15 392 dev_node); 4670d610d59233 Rob Herring 2018-01-17 393 err = -EINVAL; 5bd51b35c7cbbc Jan Kiszka 2018-05-15 394 goto failed; 4670d610d59233 Rob Herring 2018-01-17 395 } 4670d610d59233 Rob Herring 2018-01-17 396 if (*io_base != (resource_size_t)OF_BAD_ADDR) d9c5d5ac287caa Jan Kiszka 2018-05-15 397 dev_warn(dev, "More than one I/O resource converted for %pOF. CPU base address for old range lost!\n", 126b7de6bfd84b Jan Kiszka 2018-05-15 398 dev_node); 4670d610d59233 Rob Herring 2018-01-17 399 *io_base = range.cpu_addr; 3bd6b8271ee660 Punit Agrawal 2021-06-15 400 } else if (resource_type(res) == IORESOURCE_MEM) { 3bd6b8271ee660 Punit Agrawal 2021-06-15 401 res->flags &= ~IORESOURCE_MEM_64; 4670d610d59233 Rob Herring 2018-01-17 402 } 4670d610d59233 Rob Herring 2018-01-17 403 4670d610d59233 Rob Herring 2018-01-17 404 pci_add_resource_offset(resources, res, res->start - range.pci_addr); 4670d610d59233 Rob Herring 2018-01-17 405 } 4670d610d59233 Rob Herring 2018-01-17 406 331f63457165a3 Rob Herring 2019-10-30 407 /* Check for dma-ranges property */ 331f63457165a3 Rob Herring 2019-10-30 408 if (!ib_resources) 331f63457165a3 Rob Herring 2019-10-30 409 return 0; 331f63457165a3 Rob Herring 2019-10-30 410 err = of_pci_dma_range_parser_init(&parser, dev_node); 331f63457165a3 Rob Herring 2019-10-30 411 if (err) 331f63457165a3 Rob Herring 2019-10-30 412 return 0; 331f63457165a3 Rob Herring 2019-10-30 413 331f63457165a3 Rob Herring 2019-10-30 414 dev_dbg(dev, "Parsing dma-ranges property...\n"); 331f63457165a3 Rob Herring 2019-10-30 415 for_each_of_pci_range(&parser, &range) { 331f63457165a3 Rob Herring 2019-10-30 416 /* 331f63457165a3 Rob Herring 2019-10-30 417 * If we failed translation or got a zero-sized region 331f63457165a3 Rob Herring 2019-10-30 418 * then skip this range 331f63457165a3 Rob Herring 2019-10-30 419 */ 331f63457165a3 Rob Herring 2019-10-30 420 if (((range.flags & IORESOURCE_TYPE_BITS) != IORESOURCE_MEM) || 331f63457165a3 Rob Herring 2019-10-30 421 range.cpu_addr == OF_BAD_ADDR || range.size == 0) 331f63457165a3 Rob Herring 2019-10-30 422 continue; 331f63457165a3 Rob Herring 2019-10-30 423 331f63457165a3 Rob Herring 2019-10-30 424 dev_info(dev, " %6s %#012llx..%#012llx -> %#012llx\n", 331f63457165a3 Rob Herring 2019-10-30 425 "IB MEM", range.cpu_addr, 331f63457165a3 Rob Herring 2019-10-30 426 range.cpu_addr + range.size - 1, range.pci_addr); 331f63457165a3 Rob Herring 2019-10-30 427 331f63457165a3 Rob Herring 2019-10-30 428 331f63457165a3 Rob Herring 2019-10-30 429 err = of_pci_range_to_resource(&range, dev_node, &tmp_res); 331f63457165a3 Rob Herring 2019-10-30 430 if (err) 331f63457165a3 Rob Herring 2019-10-30 431 continue; 331f63457165a3 Rob Herring 2019-10-30 432 331f63457165a3 Rob Herring 2019-10-30 433 res = devm_kmemdup(dev, &tmp_res, sizeof(tmp_res), GFP_KERNEL); 331f63457165a3 Rob Herring 2019-10-30 434 if (!res) { 331f63457165a3 Rob Herring 2019-10-30 435 err = -ENOMEM; 331f63457165a3 Rob Herring 2019-10-30 436 goto failed; 331f63457165a3 Rob Herring 2019-10-30 437 } 331f63457165a3 Rob Herring 2019-10-30 438 b8397a8f4ebc0b Robin Murphy 2022-05-09 439 pci_add_resource_offset(ib_resources, res, 331f63457165a3 Rob Herring 2019-10-30 440 res->start - range.pci_addr); 331f63457165a3 Rob Herring 2019-10-30 441 } 331f63457165a3 Rob Herring 2019-10-30 442 4670d610d59233 Rob Herring 2018-01-17 443 return 0; 4670d610d59233 Rob Herring 2018-01-17 444 5bd51b35c7cbbc Jan Kiszka 2018-05-15 445 failed: 4670d610d59233 Rob Herring 2018-01-17 446 pci_free_resource_list(resources); 4670d610d59233 Rob Herring 2018-01-17 447 return err; 4670d610d59233 Rob Herring 2018-01-17 448 } 4670d610d59233 Rob Herring 2018-01-17 449 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki