Message ID | 1445576642-29624-20-git-send-email-matt@masarand.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
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 --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)
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(-)