> I'm not getting lockups, but I am seeing this problem. It looks like the
> device/driver "rescan" is dying somewhere.
This patch addressed at least some of those problems for me.
The driver model code was using the wrong calling convention
when probing.
- Dave
--- ./drivers-dist//base/core.c Sun Oct 13 04:29:37 2002
+++ ./drivers//base/core.c Sun Oct 13 13:48:51 2002
@@ -55,5 +55,5 @@
static int found_match(struct device * dev, struct device_driver * drv)
{
- int error = 0;
+ int error;
if (!(error = probe(dev,get_driver(drv)))) {
@@ -65,5 +65,5 @@
dev->driver = NULL;
}
- return error;
+ return error == 0;
}
@@ -76,5 +76,7 @@
* It calls the bus's match callback to check if the driver supports
* the device. If so, it calls the found_match() function above to
- * take care of all the details.
+ * try taking care of all the details.
+ *
+ * Returns zero (to continue the scan) if the driver didn't attach.
*/
static int do_device_attach(struct device_driver * drv, void * data)