Hi Ley,

[auto build test ERROR on v4.3-rc4 -- if it's inappropriate base, please ignore]

config: sparc-allmodconfig (attached as .config)
reproduce:
        wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=sparc 

All errors (new ones prefixed by >>):

   drivers/pci/host/pcie-altera.c: In function 'tlp_cfg_dword_read':
   drivers/pci/host/pcie-altera.c:243:12: warning: large integer implicitly 
truncated to unsigned type [-Woverflow]
      *value = ~0UL; /* return 0xFFFFFFFF if error */
               ^
   drivers/pci/host/pcie-altera.c: In function 'altera_pcie_cfg_read':
   drivers/pci/host/pcie-altera.c:291:12: warning: large integer implicitly 
truncated to unsigned type [-Woverflow]
      *value = ~0UL;
               ^
   drivers/pci/host/pcie-altera.c: In function 
'altera_pcie_parse_request_of_pci_ranges':
>> drivers/pci/host/pcie-altera.c:410:2: error: implicit declaration of 
>> function 'of_pci_get_host_bridge_resources' 
>> [-Werror=implicit-function-declaration]
     err = of_pci_get_host_bridge_resources(np, 0, 0xff, &pcie->resources,
     ^
   cc1: some warnings being treated as errors

vim +/of_pci_get_host_bridge_resources +410 drivers/pci/host/pcie-altera.c

   237          headers[2] = TLP_CFG_DW2(bus, devfn, where);
   238  
   239          tlp_write_packet(pcie, headers, 0, false);
   240  
   241          ret = tlp_read_packet(pcie, value);
   242          if (ret != PCIBIOS_SUCCESSFUL)
 > 243                  *value = ~0UL;  /* return 0xFFFFFFFF if error */
   244  
   245          return ret;
   246  }
   247  
   248  static int tlp_cfg_dword_write(struct altera_pcie *pcie, u8 bus, u32 
devfn,
   249                                 int where, u32 value)
   250  {
   251          u32 headers[TLP_HDR_SIZE];
   252          int ret;
   253  
   254          if (bus == pcie->root_bus_nr)
   255                  headers[0] = TLP_CFG_DW0(TLP_FMTTYPE_CFGWR0);
   256          else
   257                  headers[0] = TLP_CFG_DW0(TLP_FMTTYPE_CFGWR1);
   258  
   259          headers[1] = TLP_CFG_DW1(TLP_REQ_ID(pcie->root_bus_nr, devfn),
   260                                          TLP_WRITE_TAG);
   261          headers[2] = TLP_CFG_DW2(bus, devfn, where);
   262  
   263          /* check alignment to Qword */
   264          if ((where & 0x7) == 0)
   265                  tlp_write_packet(pcie, headers, value, true);
   266          else
   267                  tlp_write_packet(pcie, headers, value, false);
   268  
   269          ret = tlp_read_packet(pcie, NULL);
   270          if (ret != PCIBIOS_SUCCESSFUL)
   271                  return ret;
   272  
   273          /*
   274           * Monitoring changes to PCI_PRIMARY_BUS register on root port 
and update
   275           * local copy of root bus number accordingly.
   276           */
   277          if ((bus == pcie->root_bus_nr) && (where == PCI_PRIMARY_BUS))
   278                  pcie->root_bus_nr = (u8)(value);
   279  
   280          return PCIBIOS_SUCCESSFUL;
   281  }
   282  
   283  static int altera_pcie_cfg_read(struct pci_bus *bus, unsigned int devfn,
   284                                  int where, int size, u32 *value)
   285  {
   286          struct altera_pcie *pcie = bus->sysdata;
   287          int ret;
   288          u32 data;
   289  
   290          if (!altera_pcie_valid_config(pcie, bus, PCI_SLOT(devfn))) {
   291                  *value = ~0UL;
   292                  return PCIBIOS_DEVICE_NOT_FOUND;
   293          }
   294  
   295          ret = tlp_cfg_dword_read(pcie, bus->number, devfn,
   296                                   (where & ~DWORD_MASK), &data);
   297          if (ret != PCIBIOS_SUCCESSFUL)
   298                  return ret;
   299  
   300          switch (size) {
   301          case 1:
   302                  *value = (data >> (8 * (where & 0x3))) & 0xff;
   303                  break;
   304          case 2:
   305                  *value = (data >> (8 * (where & 0x2))) & 0xffff;
   306                  break;
   307          default:
   308                  *value = data;
   309                  break;
   310          }
   311  
   312          return PCIBIOS_SUCCESSFUL;
   313  }
   314  
   315  static int altera_pcie_cfg_write(struct pci_bus *bus, unsigned int 
devfn,
   316                                   int where, int size, u32 value)
   317  {
   318          struct altera_pcie *pcie = bus->sysdata;
   319          u32 data32;
   320          u32 shift = 8 * (where & 3);
   321          int ret;
   322  
   323          if (!altera_pcie_valid_config(pcie, bus, PCI_SLOT(devfn)))
   324                  return PCIBIOS_DEVICE_NOT_FOUND;
   325  
   326          /* write partial */
   327          if (size != sizeof(u32)) {
   328                  ret = tlp_cfg_dword_read(pcie, bus->number, devfn,
   329                                           where & ~DWORD_MASK, &data32);
   330                  if (ret)
   331                          return ret;
   332          }
   333  
   334          switch (size) {
   335          case 1:
   336                  data32 = (data32 & ~(0xff << shift)) |
   337                                  ((value & 0xff) << shift);
   338                  break;
   339          case 2:
   340                  data32 = (data32 & ~(0xffff << shift)) |
   341                                  ((value & 0xffff) << shift);
   342                  break;
   343          default:
   344                  data32 = value;
   345                  break;
   346          }
   347  
   348          return tlp_cfg_dword_write(pcie, bus->number, devfn,
   349                  (where & ~DWORD_MASK), data32);
   350  }
   351  
   352  static struct pci_ops altera_pcie_ops = {
   353          .read = altera_pcie_cfg_read,
   354          .write = altera_pcie_cfg_write,
   355  };
   356  
   357  static int altera_pcie_intx_map(struct irq_domain *domain, unsigned int 
irq,
   358                                  irq_hw_number_t hwirq)
   359  {
   360          irq_set_chip_and_handler(irq, &dummy_irq_chip, 
handle_simple_irq);
   361          irq_set_chip_data(irq, domain->host_data);
   362  
   363          return 0;
   364  }
   365  
   366  static const struct irq_domain_ops intx_domain_ops = {
   367          .map = altera_pcie_intx_map,
   368  };
   369  
   370  static void altera_pcie_isr(struct irq_desc *desc)
   371  {
   372          struct irq_chip *chip = irq_desc_get_chip(desc);
   373          struct altera_pcie *pcie;
   374          unsigned long status;
   375          u32 bit;
   376          u32 virq;
   377  
   378          chained_irq_enter(chip, desc);
   379          pcie = irq_desc_get_handler_data(desc);
   380  
   381          while ((status = cra_readl(pcie, P2A_INT_STATUS)
   382                  & P2A_INT_STS_ALL) != 0) {
   383                  for_each_set_bit(bit, &status, INTX_NUM) {
   384                          /* clear interrupts */
   385                          cra_writel(pcie, 1 << bit, P2A_INT_STATUS);
   386  
   387                          virq = irq_find_mapping(pcie->irq_domain, bit + 
1);
   388                          if (virq)
   389                                  generic_handle_irq(virq);
   390                          else
   391                                  dev_err(&pcie->pdev->dev, "unexpected 
IRQ\n");
   392                  }
   393          }
   394  
   395          chained_irq_exit(chip, desc);
   396  }
   397  
   398  static void altera_pcie_release_of_pci_ranges(struct altera_pcie *pcie)
   399  {
   400          pci_free_resource_list(&pcie->resources);
   401  }
   402  
   403  static int altera_pcie_parse_request_of_pci_ranges(struct altera_pcie 
*pcie)
   404  {
   405          int err, res_valid = 0;
   406          struct device *dev = &pcie->pdev->dev;
   407          struct device_node *np = dev->of_node;
   408          struct resource_entry *win;
   409  
 > 410          err = of_pci_get_host_bridge_resources(np, 0, 0xff, 
 > &pcie->resources,
   411                                                 NULL);
   412          if (err)
   413                  return err;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data

Reply via email to