Hi Zhichang, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.15-rc8 next-20180119] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/John-Garry/LPC-legacy-ISA-I-O-support/20180121-194832 config: tile-allyesconfig (attached as .config) compiler: tilegx-linux-gcc (GCC) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=tile All errors (new ones prefixed by >>): drivers//of/address.c: In function '__of_translate_address': drivers//of/address.c:625:13: error: implicit declaration of function 'find_io_range_by_fwnode' [-Werror=implicit-function-declaration] iorange = find_io_range_by_fwnode(&dev->fwnode); ^~~~~~~~~~~~~~~~~~~~~~~ drivers//of/address.c:625:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion] iorange = find_io_range_by_fwnode(&dev->fwnode); ^ drivers//of/address.c:626:26: error: dereferencing pointer to incomplete type 'struct logic_pio_hwaddr' if (iorange && (iorange->flags != PIO_CPU_MMIO)) { ^~ >> drivers//of/address.c:626:37: error: 'PIO_CPU_MMIO' undeclared (first use in this function); did you mean 'CHIP_HAS_MMIO'? if (iorange && (iorange->flags != PIO_CPU_MMIO)) { ^~~~~~~~~~~~ CHIP_HAS_MMIO drivers//of/address.c:626:37: note: each undeclared identifier is reported only once for each function it appears in drivers//of/address.c: In function 'of_translate_ioport': drivers//of/address.c:742:10: error: implicit declaration of function 'logic_pio_trans_hwaddr' [-Werror=implicit-function-declaration] port = logic_pio_trans_hwaddr(&host->fwnode, taddr, size); ^~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +626 drivers//of/address.c 556 557 /* 558 * Translate an address from the device-tree into a CPU physical address, 559 * this walks up the tree and applies the various bus mappings on the 560 * way. 561 * 562 * Note: We consider that crossing any level with #size-cells == 0 to mean 563 * that translation is impossible (that is we are not dealing with a value 564 * that can be mapped to a cpu physical address). This is not really specified 565 * that way, but this is traditionally the way IBM at least do things 566 * 567 * Whenever the translation fails, the *host pointer will be set to the 568 * device that had registered logical PIO mapping, and the return code is 569 * relative to that node. 570 */ 571 static u64 __of_translate_address(struct device_node *dev, 572 const __be32 *in_addr, const char *rprop, 573 struct device_node **host) 574 { 575 struct device_node *parent = NULL; 576 struct of_bus *bus, *pbus; 577 __be32 addr[OF_MAX_ADDR_CELLS]; 578 int na, ns, pna, pns; 579 u64 result = OF_BAD_ADDR; 580 581 pr_debug("** translation for device %pOF **\n", dev); 582 583 /* Increase refcount at current level */ 584 of_node_get(dev); 585 586 *host = NULL; 587 /* Get parent & match bus type */ 588 parent = of_get_parent(dev); 589 if (parent == NULL) 590 goto bail; 591 bus = of_match_bus(parent); 592 593 /* Count address cells & copy address locally */ 594 bus->count_cells(dev, &na, &ns); 595 if (!OF_CHECK_COUNTS(na, ns)) { 596 pr_debug("Bad cell count for %pOF\n", dev); 597 goto bail; 598 } 599 memcpy(addr, in_addr, na * 4); 600 601 pr_debug("bus is %s (na=%d, ns=%d) on %pOF\n", 602 bus->name, na, ns, parent); 603 of_dump_addr("translating address:", addr, na); 604 605 /* Translate */ 606 for (;;) { 607 struct logic_pio_hwaddr *iorange; 608 609 /* Switch to parent bus */ 610 of_node_put(dev); 611 dev = parent; 612 parent = of_get_parent(dev); 613 614 /* If root, we have finished */ 615 if (parent == NULL) { 616 pr_debug("reached root node\n"); 617 result = of_read_number(addr, na); 618 break; 619 } 620 621 /* 622 * For indirectIO device which has no ranges property, get 623 * the address from reg directly. 624 */ > 625 iorange = find_io_range_by_fwnode(&dev->fwnode); > 626 if (iorange && (iorange->flags != PIO_CPU_MMIO)) { 627 result = of_read_number(addr + 1, na - 1); 628 pr_debug("indirectIO matched(%s) 0x%llx\n", 629 of_node_full_name(dev), result); 630 *host = of_node_get(dev); 631 break; 632 } 633 634 /* Get new parent bus and counts */ 635 pbus = of_match_bus(parent); 636 pbus->count_cells(dev, &pna, &pns); 637 if (!OF_CHECK_COUNTS(pna, pns)) { 638 pr_err("Bad cell count for %pOF\n", dev); 639 break; 640 } 641 642 pr_debug("parent bus is %s (na=%d, ns=%d) on %pOF\n", 643 pbus->name, pna, pns, parent); 644 645 /* Apply bus translation */ 646 if (of_translate_one(dev, bus, pbus, addr, na, ns, pna, rprop)) 647 break; 648 649 /* Complete the move up one level */ 650 na = pna; 651 ns = pns; 652 bus = pbus; 653 654 of_dump_addr("one level translation:", addr, na); 655 } 656 bail: 657 of_node_put(parent); 658 of_node_put(dev); 659 660 return result; 661 } 662 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip