diff mbox

[V4,19/29] MIPS/PCI: Defer IRQ assignment to device enable time

Message ID 1445576642-29624-20-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 mips PCI IRQs are assigned at boot, this creates an extra
pass over the PCI bus and causes hot-plugged devices which are not
present at boot to not be given IRQs, this patch set fixes this by
registering assignment functions which are then run later during the
device enable code path.

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

Comments

kernel test robot Oct. 23, 2015, 6:02 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: mips-fuloong2e_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=mips 

All warnings (new ones prefixed by >>):

   arch/mips/pci/pci.c: In function 'pcibios_root_bridge_prepare':
>> arch/mips/pci/pci.c:258:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
           bridge->map_irq = pcibios_map_irq;
                           ^

vim +258 arch/mips/pci/pci.c

   242		struct pci_controller *hose;
   243	
   244		pcibios_set_cache_line_size();
   245	
   246		/* Scan all of the recorded PCI controllers.  */
   247		for (hose = hose_head; hose; hose = hose->next)
   248			pcibios_scanbus(hose);
   249	
   250		pci_initialized = 1;
   251	
   252		return 0;
   253	}
   254	
   255	int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
   256	{
   257	       bridge->swizzle_irq = pci_common_swizzle;
 > 258	       bridge->map_irq = pcibios_map_irq;
   259	       return 0;
   260	}
   261	
   262	subsys_initcall(pcibios_init);
   263	
   264	static int pcibios_enable_resources(struct pci_dev *dev, int mask)
   265	{
   266		u16 cmd, old_cmd;

---
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/mips/pci/pci.c b/arch/mips/pci/pci.c
index b8a0bf5..137d3fe 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -247,13 +247,18 @@  static int __init pcibios_init(void)
 	for (hose = hose_head; hose; hose = hose->next)
 		pcibios_scanbus(hose);
 
-	pci_fixup_irqs(pci_common_swizzle, pcibios_map_irq);
-
 	pci_initialized = 1;
 
 	return 0;
 }
 
+int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
+{
+       bridge->swizzle_irq = pci_common_swizzle;
+       bridge->map_irq = pcibios_map_irq;
+       return 0;
+}
+
 subsys_initcall(pcibios_init);
 
 static int pcibios_enable_resources(struct pci_dev *dev, int mask)