aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/pci/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/pci/common.c')
-rw-r--r--arch/x86/pci/common.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 75fcc29ecf52..2a4d751818b7 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -342,9 +342,14 @@ struct pci_bus * __devinit pcibios_scan_root(int busnum)
342 return NULL; 342 return NULL;
343 } 343 }
344 344
345 sd->node = get_mp_bus_to_node(busnum);
346
345 printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busnum); 347 printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busnum);
348 bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd);
349 if (!bus)
350 kfree(sd);
346 351
347 return pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); 352 return bus;
348} 353}
349 354
350extern u8 pci_cache_line_size; 355extern u8 pci_cache_line_size;
@@ -420,6 +425,10 @@ char * __devinit pcibios_setup(char *str)
420 pci_probe &= ~PCI_PROBE_MMCONF; 425 pci_probe &= ~PCI_PROBE_MMCONF;
421 return NULL; 426 return NULL;
422 } 427 }
428 else if (!strcmp(str, "check_enable_amd_mmconf")) {
429 pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
430 return NULL;
431 }
423#endif 432#endif
424 else if (!strcmp(str, "noacpi")) { 433 else if (!strcmp(str, "noacpi")) {
425 acpi_noirq_set(); 434 acpi_noirq_set();
@@ -480,7 +489,7 @@ void pcibios_disable_device (struct pci_dev *dev)
480 pcibios_disable_irq(dev); 489 pcibios_disable_irq(dev);
481} 490}
482 491
483struct pci_bus *__devinit pci_scan_bus_with_sysdata(int busno) 492struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node)
484{ 493{
485 struct pci_bus *bus = NULL; 494 struct pci_bus *bus = NULL;
486 struct pci_sysdata *sd; 495 struct pci_sysdata *sd;
@@ -495,10 +504,15 @@ struct pci_bus *__devinit pci_scan_bus_with_sysdata(int busno)
495 printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busno); 504 printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busno);
496 return NULL; 505 return NULL;
497 } 506 }
498 sd->node = -1; 507 sd->node = node;
499 bus = pci_scan_bus(busno, &pci_root_ops, sd); 508 bus = pci_scan_bus(busno, ops, sd);
500 if (!bus) 509 if (!bus)
501 kfree(sd); 510 kfree(sd);
502 511
503 return bus; 512 return bus;
504} 513}
514
515struct pci_bus *pci_scan_bus_with_sysdata(int busno)
516{
517 return pci_scan_bus_on_node(busno, &pci_root_ops, -1);
518}