Merge tag 'pci-v4.16-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaa...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 10 Feb 2018 22:08:26 +0000 (14:08 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 10 Feb 2018 22:08:26 +0000 (14:08 -0800)
Pull PCI fix from Bjorn Helgaas:
 "Fix a POWER9/powernv INTx regression from the merge window (Alexey
  Kardashevskiy)"

* tag 'pci-v4.16-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
  powerpc/pci: Fix broken INTx configuration via OF

1  2 
arch/powerpc/kernel/pci-common.c

index ae2ede4de6be7023fd785f0ae85b10b715609ea7,4e884db7b213f63ecfdd8a63faa9c69cc1213ede..446c79611d56cf0ff32f5a622348300970a59963
@@@ -60,7 -60,7 +60,7 @@@ resource_size_t isa_mem_base
  EXPORT_SYMBOL(isa_mem_base);
  
  
 -static const struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
 +static const struct dma_map_ops *pci_dma_ops = &dma_nommu_ops;
  
  void set_pci_dma_ops(const struct dma_map_ops *dma_ops)
  {
@@@ -249,31 -249,8 +249,31 @@@ resource_size_t pcibios_iov_resource_al
  
        return pci_iov_resource_size(pdev, resno);
  }
 +
 +int pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs)
 +{
 +      if (ppc_md.pcibios_sriov_enable)
 +              return ppc_md.pcibios_sriov_enable(pdev, num_vfs);
 +
 +      return 0;
 +}
 +
 +int pcibios_sriov_disable(struct pci_dev *pdev)
 +{
 +      if (ppc_md.pcibios_sriov_disable)
 +              return ppc_md.pcibios_sriov_disable(pdev);
 +
 +      return 0;
 +}
 +
  #endif /* CONFIG_PCI_IOV */
  
 +void pcibios_bus_add_device(struct pci_dev *pdev)
 +{
 +      if (ppc_md.pcibios_bus_add_device)
 +              ppc_md.pcibios_bus_add_device(pdev);
 +}
 +
  static resource_size_t pcibios_io_size(const struct pci_controller *hose)
  {
  #ifdef CONFIG_PPC64
@@@ -362,7 -339,7 +362,7 @@@ struct pci_controller* pci_find_hose_fo
   */
  static int pci_read_irq_line(struct pci_dev *pci_dev)
  {
-       unsigned int virq = 0;
+       int virq;
  
        pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
  
        memset(&oirq, 0xff, sizeof(oirq));
  #endif
        /* Try to get a mapping from the device-tree */
-       if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
+       virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
+       if (virq <= 0) {
                u8 line, pin;
  
                /* If that fails, lets fallback to what is in the config
@@@ -1293,8 -1271,8 +1294,8 @@@ static void pcibios_allocate_bus_resour
                                                i + PCI_BRIDGE_RESOURCES) == 0)
                                continue;
                }
 -              pr_warning("PCI: Cannot allocate resource region "
 -                         "%d of PCI bridge %d, will remap\n", i, bus->number);
 +              pr_warn("PCI: Cannot allocate resource region %d of PCI bridge %d, will remap\n",
 +                      i, bus->number);
        clear_resource:
                /* The resource might be figured out when doing
                 * reassignment based on the resources required