Andrew pointed out to me that the new driver core code spewes a lot of
stuff in the syslog for every device it tries to match up with a driver
(if you look closely, it seems that the if check in __device_attach()
will never not trigger...)

Everything still seems to work properly, but it's good if we don't alarm
people with messages that are incorrect and unneeded. :)

So, here's a patch that seems to work for me.  It stops trying to loop
through drivers or devices once it finds a match, and it only tells the
syslog when we have a real error.

Look acceptable to you?

thanks,

greg k-h

-----------
Driver core: Fix up the driver and device iterators to be quieter

Also stops looping over the lists when a match is found.

Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

--- 1.4/drivers/base/dd.c       2005-03-25 09:52:38 -08:00
+++ edited/drivers/base/dd.c    2005-03-31 00:22:50 -08:00
@@ -91,20 +91,23 @@ static int __device_attach(struct device
        int error;
 
        error = driver_probe_device(drv, dev);
-
-       if (error == -ENODEV && error == -ENXIO) {
-               /* Driver matched, but didn't support device 
-                * or device not found.
-                * Not an error; keep going.
-                */
-               error = 0;
-       } else {
-               /* driver matched but the probe failed */
-               printk(KERN_WARNING
-                      "%s: probe of %s failed with error %d\n",
-                      drv->name, dev->bus_id, error);
+       if (error) {
+               if ((error == -ENODEV) || (error == -ENXIO)) {
+                       /* Driver matched, but didn't support device 
+                        * or device not found.
+                        * Not an error; keep going.
+                        */
+                       error = 0;
+               } else {
+                       /* driver matched but the probe failed */
+                       printk(KERN_WARNING
+                              "%s: probe of %s failed with error %d\n",
+                              drv->name, dev->bus_id, error);
+               }
+               return error;
        }
-       return 0;
+       /* stop looking, this device is attached */
+       return 1;
 }
 
 
@@ -142,7 +145,10 @@ static int __driver_attach(struct device
                                       drv->name, dev->bus_id, error);
                        } else
                                error = 0;
+                       return error;
                }
+               /* stop looking, this driver is attached */
+               return 1;
        }
        return 0;
 }
-
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/

Reply via email to