If you don't know what to do here, say N.
 
+config PCI_MULTITHREAD_PROBE
+       bool "PCI Multi-threaded probe (EXPERIMENTAL)"
+       depends on PCI && EXPERIMENTAL
+       help
+         Say Y here if you want the PCI core to spawn a new thread for
+         every PCI device that is probed.  This can cause a huge
+         speedup in boot times on multiprocessor machines, and even a
+         smaller speedup on single processor machines.
+
+         But it can also cause lots of bad things to happen.  A number
+         of PCI drivers can not properly handle running in this way,
+         some will just not work properly at all, while others might
+         decide to blow up power supplies with a huge load all at once,
+         so use this option at your own risk.
+
+         It is very unwise to use this option if you are not using a
+         boot process that can handle devices being created in any
+         order.  A program that can create persistant block and network
+         device names (like udev) is a good idea if you wish to use
+         this option.
+
+         Again, use this option at your own risk, you have been warned!
+
+         When in doubt, say N.
+
 config PCI_DEBUG
        bool "PCI Debugging"
        depends on PCI && DEBUG_KERNEL
 
  *  Registration of PCI drivers and handling of hot-pluggable devices.
  */
 
+/* multithreaded probe logic */
+static int pci_multithread_probe =
+#ifdef CONFIG_PCI_MULTITHREAD_PROBE
+       1;
+#else
+       0;
+#endif
+__module_param_call("", pci_multithread_probe, param_set_bool, param_get_bool, &pci_multithread_probe, 0644);
+
+
 /*
  * Dynamic device IDs are disabled for !CONFIG_HOTPLUG
  */
        drv->driver.bus = &pci_bus_type;
        drv->driver.owner = owner;
        drv->driver.kobj.ktype = &pci_driver_kobj_type;
+       drv->driver.multithread_probe = pci_multithread_probe;
 
        spin_lock_init(&drv->dynids.lock);
        INIT_LIST_HEAD(&drv->dynids.list);