| /* Core PCI functionality used only by PCI hotplug */ | 
 |  | 
 | #include <linux/pci.h> | 
 | #include <linux/export.h> | 
 | #include "pci.h" | 
 |  | 
 | int pci_hp_add_bridge(struct pci_dev *dev) | 
 | { | 
 | 	struct pci_bus *parent = dev->bus; | 
 | 	int pass, busnr, start = parent->busn_res.start; | 
 | 	int end = parent->busn_res.end; | 
 |  | 
 | 	for (busnr = start; busnr <= end; busnr++) { | 
 | 		if (!pci_find_bus(pci_domain_nr(parent), busnr)) | 
 | 			break; | 
 | 	} | 
 | 	if (busnr-- > end) { | 
 | 		printk(KERN_ERR "No bus number available for hot-added bridge %s\n", | 
 | 				pci_name(dev)); | 
 | 		return -1; | 
 | 	} | 
 | 	for (pass = 0; pass < 2; pass++) | 
 | 		busnr = pci_scan_bridge(parent, dev, busnr, pass); | 
 | 	if (!dev->subordinate) | 
 | 		return -1; | 
 |  | 
 | 	return 0; | 
 | } | 
 | EXPORT_SYMBOL_GPL(pci_hp_add_bridge); |