PCI: remove the broken PCI_MULTITHREAD_PROBE option
This patch removes the PCI_MULTITHREAD_PROBE option that had already been marked as broken. Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
032de8e2fe
commit
5adc55da4a
@@ -226,12 +226,10 @@ static int device_probe_drivers(void *data)
|
||||
*
|
||||
* Walk the list of drivers that the bus has and call
|
||||
* driver_probe_device() for each pair. If a compatible
|
||||
* pair is found, break out and return. If the bus specifies
|
||||
* multithreaded probing, walking the list of drivers is done
|
||||
* on a probing thread.
|
||||
* pair is found, break out and return.
|
||||
*
|
||||
* Returns 1 if the device was bound to a driver;
|
||||
* 0 if no matching device was found or multithreaded probing is done;
|
||||
* 0 if no matching device was found;
|
||||
* -ENODEV if the device is not registered.
|
||||
*
|
||||
* When called for a USB interface, @dev->parent->sem must be held.
|
||||
@@ -239,7 +237,6 @@ static int device_probe_drivers(void *data)
|
||||
int device_attach(struct device * dev)
|
||||
{
|
||||
int ret = 0;
|
||||
struct task_struct *probe_task = ERR_PTR(-ENOMEM);
|
||||
|
||||
down(&dev->sem);
|
||||
if (dev->driver) {
|
||||
@@ -251,12 +248,7 @@ int device_attach(struct device * dev)
|
||||
ret = 0;
|
||||
}
|
||||
} else {
|
||||
if (dev->bus->multithread_probe)
|
||||
probe_task = kthread_run(device_probe_drivers, dev,
|
||||
"probe-%s", dev->bus_id);
|
||||
if(IS_ERR(probe_task))
|
||||
ret = bus_for_each_drv(dev->bus, NULL, dev,
|
||||
__device_attach);
|
||||
ret = bus_for_each_drv(dev->bus, NULL, dev, __device_attach);
|
||||
}
|
||||
up(&dev->sem);
|
||||
return ret;
|
||||
@@ -383,33 +375,6 @@ void driver_detach(struct device_driver * drv)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI_MULTITHREAD_PROBE
|
||||
static int __init wait_for_probes(void)
|
||||
{
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
printk(KERN_INFO "%s: waiting for %d threads\n", __FUNCTION__,
|
||||
atomic_read(&probe_count));
|
||||
if (!atomic_read(&probe_count))
|
||||
return 0;
|
||||
while (atomic_read(&probe_count)) {
|
||||
prepare_to_wait(&probe_waitqueue, &wait, TASK_UNINTERRUPTIBLE);
|
||||
if (atomic_read(&probe_count))
|
||||
schedule();
|
||||
}
|
||||
finish_wait(&probe_waitqueue, &wait);
|
||||
return 0;
|
||||
}
|
||||
|
||||
core_initcall_sync(wait_for_probes);
|
||||
postcore_initcall_sync(wait_for_probes);
|
||||
arch_initcall_sync(wait_for_probes);
|
||||
subsys_initcall_sync(wait_for_probes);
|
||||
fs_initcall_sync(wait_for_probes);
|
||||
device_initcall_sync(wait_for_probes);
|
||||
late_initcall_sync(wait_for_probes);
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL_GPL(device_bind_driver);
|
||||
EXPORT_SYMBOL_GPL(device_release_driver);
|
||||
EXPORT_SYMBOL_GPL(device_attach);
|
||||
|
Reference in New Issue
Block a user