diff mbox

[V4,18/29] microblaze/PCI: Defer IRQ assignment to device enable time

Message ID 1445576642-29624-19-git-send-email-matt@masarand.com (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

matt@masarand.com Oct. 23, 2015, 5:03 a.m. UTC
Currently microblaze assigns PCI IRQs during the pcibios phase, this means
that devices connected after boot will not be assigned an IRQ, instead the
boot code now registers IRQ assignment functions to be called later by the
device enable code paths.

Signed-off-by: Matthew Minter <matt@masarand.com>
---
 arch/microblaze/pci/pci-common.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

kernel test robot Oct. 23, 2015, 5:40 a.m. UTC | #1
Hi Matthew,

[auto build test WARNING on v4.3-rc6 -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Matthew-Minter/PCI-Build-setup-irq-o-on-all-arches/20151023-131018
config: microblaze-mmu_defconfig (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=microblaze 

All warnings (new ones prefixed by >>):

   arch/microblaze/pci/pci-common.c: In function 'pcibios_root_bridge_prepare':
>> arch/microblaze/pci/pci-common.c:863:18: warning: assignment from incompatible pointer type
     bridge->map_irq = of_irq_parse_and_map_pci;
                     ^

vim +863 arch/microblaze/pci/pci-common.c

   847		pr_debug("PCI: Fixup bus devices %d (%s)\n",
   848			 bus->number, bus->self ? pci_name(bus->self) : "PHB");
   849	
   850		list_for_each_entry(dev, &bus->devices, bus_list) {
   851			/* Setup OF node pointer in archdata */
   852			dev->dev.of_node = pci_device_to_OF_node(dev);
   853	
   854			/* Fixup NUMA node as it may not be setup yet by the generic
   855			 * code and is needed by the DMA init
   856			 */
   857			set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
   858		}
   859	}
   860	
   861	int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
   862	{
 > 863		bridge->map_irq = of_irq_parse_and_map_pci;
   864		return 0;
   865	}
   866	
   867	void pcibios_fixup_bus(struct pci_bus *bus)
   868	{
   869		/* When called from the generic PCI probe, read PCI<->PCI bridge
   870		 * bases. This is -not- called when generating the PCI tree from
   871		 * the OF device-tree.

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

Patch

diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index ae838ed..99ea108 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
@@ -855,12 +855,15 @@  void pcibios_setup_bus_devices(struct pci_bus *bus)
 		 * code and is needed by the DMA init
 		 */
 		set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
-
-		/* Read default IRQs and fixup if necessary */
-		dev->irq = of_irq_parse_and_map_pci(dev, 0, 0);
 	}
 }
 
+int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
+{
+	bridge->map_irq = of_irq_parse_and_map_pci;
+	return 0;
+}
+
 void pcibios_fixup_bus(struct pci_bus *bus)
 {
 	/* When called from the generic PCI probe, read PCI<->PCI bridge