From: Greg Kroah-Hartman <[email protected]> This provides a build and run-time option to turn on multhreaded probe for all PCI drivers. It can cause bad problems on multi-processor machines that take a while to find their root disks, and play havoc on machines that don't use persistant device names for block or network devices. But it can cause speedups on some machines, my tiny laptop's boot goes up by 0.4 seconds, and my desktop boots up several seconds faster. Use at your own risk!!! Signed-off-by: Greg Kroah-Hartman <[email protected]> --- drivers/pci/Kconfig | 25 +++++++++++++++++++++++++ drivers/pci/pci-driver.c | 11 +++++++++++ 2 files changed, 36 insertions(+), 0 deletions(-) diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index 4d762fc..c27e782 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig @@ -17,6 +17,31 @@ config PCI_MSI 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 diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 8948ac9..d8ace1f 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -17,6 +17,16 @@ #include "pci.h" * 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 */ @@ -408,6 +418,7 @@ int __pci_register_driver(struct pci_dri 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); -- 1.4.2.1 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH 44/47] PCI: enable driver multi-threaded probe
- From: Olaf Hering <[email protected]>
- [PATCH 45/47] Driver core: Fix potential deadlock in driver core
- From: Greg KH <[email protected]>
- Re: [PATCH 44/47] PCI: enable driver multi-threaded probe
- References:
- [GIT PATCH] Driver Core patches for 2.6.18
- From: Greg KH <[email protected]>
- [PATCH 1/47] Documentation/ABI: devfs is not obsolete, but removed!
- From: Greg KH <[email protected]>
- [PATCH 2/47] deprecate PHYSDEV* keys
- From: Greg KH <[email protected]>
- [PATCH 3/47] class_device_create(): make fmt argument 'const char *'
- From: Greg KH <[email protected]>
- [PATCH 4/47] device_create(): make fmt argument 'const char *'
- From: Greg KH <[email protected]>
- [PATCH 5/47] Driver core: add const to class_create
- From: Greg KH <[email protected]>
- [PATCH 6/47] sysfs: Make poll behaviour consistent
- From: Greg KH <[email protected]>
- [PATCH 7/47] Debugfs: kernel-doc fixes for debugfs
- From: Greg KH <[email protected]>
- [PATCH 8/47] SYSFS: allow sysfs_create_link to create symlinks in the root of sysfs
- From: Greg KH <[email protected]>
- [PATCH 9/47] Suspend infrastructure cleanup and extension
- From: Greg KH <[email protected]>
- [PATCH 10/47] Suspend changes for PCI core
- From: Greg KH <[email protected]>
- [PATCH 11/47] make suspend quieter
- From: Greg KH <[email protected]>
- [PATCH 12/47] fix broken/dubious driver suspend() methods
- From: Greg KH <[email protected]>
- [PATCH 13/47] PM: define PM_EVENT_PRETHAW
- From: Greg KH <[email protected]>
- [PATCH 14/47] PM: PCI and IDE handle PM_EVENT_PRETHAW
- From: Greg KH <[email protected]>
- [PATCH 15/47] PM: video drivers and PM_EVENT_PRETHAW
- From: Greg KH <[email protected]>
- [PATCH 16/47] PM: USB HCDs use PM_EVENT_PRETHAW
- From: Greg KH <[email protected]>
- [PATCH 17/47] PM: issue PM_EVENT_PRETHAW
- From: Greg KH <[email protected]>
- [PATCH 18/47] updated Documentation/power/devices.txt
- From: Greg KH <[email protected]>
- [PATCH 19/47] PM: update docs for writing .../power/state
- From: Greg KH <[email protected]>
- [PATCH 20/47] PM: add kconfig option for deprecated .../power/state files
- From: Greg KH <[email protected]>
- [PATCH 22/47] PM: no suspend_prepare() phase
- From: Greg KH <[email protected]>
- [PATCH 23/47] PM: add /sys/power documentation to Documentation/ABI
- From: Greg KH <[email protected]>
- [PATCH 24/47] PM: device_suspend/resume may sleep
- From: Greg KH <[email protected]>
- [PATCH 25/47] PM: platform_bus and late_suspend/early_resume
- From: Greg KH <[email protected]>
- [PATCH 26/47] Driver core: add groups support to struct device
- From: Greg KH <[email protected]>
- [PATCH 27/47] Driver core: allow devices in classes to have no parent
- From: Greg KH <[email protected]>
- [PATCH 28/47] Driver core: add ability for classes to handle devices properly
- From: Greg KH <[email protected]>
- [PATCH 29/47] Driver core: add device_rename function
- From: Greg KH <[email protected]>
- [PATCH 30/47] Driver core: create devices/virtual/ tree
- From: Greg KH <[email protected]>
- [PATCH 31/47] Class: add support for class interfaces for devices
- From: Greg KH <[email protected]>
- [PATCH 32/47] Driver core: add ability for devices to create and remove bin files
- From: Greg KH <[email protected]>
- [PATCH 33/47] kobject: must_check fixes
- From: Greg KH <[email protected]>
- [PATCH 34/47] sysfs_remove_bin_file: no return value, dump_stack on error
- From: Greg KH <[email protected]>
- [PATCH 35/47] Driver core: fix comments in drivers/base/power/resume.c
- From: Greg KH <[email protected]>
- [PATCH 36/47] Driver core: fixed add_bind_files() definition
- From: Greg KH <[email protected]>
- [PATCH 37/47] add __must_check to device management code
- From: Greg KH <[email protected]>
- [PATCH 38/47] add CONFIG_ENABLE_MUST_CHECK
- From: Greg KH <[email protected]>
- [PATCH 39/47] v4l-dev2: handle __must_check
- From: Greg KH <[email protected]>
- [PATCH 40/47] drivers/base: Platform notify needs to occur before drivers attach to the device
- From: Greg KH <[email protected]>
- [PATCH 41/47] drivers/base: check errors
- From: Greg KH <[email protected]>
- [PATCH 43/47] Driver Core: add ability for drivers to do a threaded probe
- From: Greg KH <[email protected]>
- [GIT PATCH] Driver Core patches for 2.6.18
- Prev by Date: [PATCH 46/47] Driver core: Remove unneeded routines from driver core
- Next by Date: [PATCH 45/47] Driver core: Fix potential deadlock in driver core
- Previous by thread: [PATCH 43/47] Driver Core: add ability for drivers to do a threaded probe
- Next by thread: [PATCH 45/47] Driver core: Fix potential deadlock in driver core
- Index(es):