Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Tue, 15 Jul 2003 19:31:50 -0700 | From | Greg KH <> | Subject | Re: Hotplug Oops Re: Linux v2.6.0-test1 |
| |
On Tue, Jul 15, 2003 at 06:46:50PM -0700, Mike Fedyk wrote: > On Tue, Jul 15, 2003 at 06:37:43PM -0700, Greg KH wrote: > > On Tue, Jul 15, 2003 at 06:29:48PM -0700, Mike Fedyk wrote: > > > Here's a nice oops for you guys. > > > > > > Hotplug is the trigger. I can't reproduce without hotplug. > > > > > > hotplug tries to load ohci, ehci, and finally uhci (the correct module), it > > > oopses for each driver with hotplug, but if I try without hotplug ('apt-get > > > remove hotplug' before rebooting), I can load all three usb drivers with no > > > oops. > > > > If you just load these drivers by hand, does the oops happen? > > > > I didn't look into the hotplug scripts to see which hotplug modules (and > they are modules for me) were being loaded and in which order.
It should just do: modprobe -q ehci-hcd >/dev/null 2>&1 modprobe -q ohci-hcd >/dev/null 2>&1 modprobe -q uhci-hcd >/dev/null 2>&1
That's what the latest hotplug package has in it. I don't know what Debian has lately...
> I did load the usb drivers by hand with no oops though.
That's really strange.
> > Can you enable debugging in the kobject code, or the driver base code to > > try to get some better debug messages of what is going on? > > > > Please tell me which file that's in, and what I need to change, or give a > patch.
Here's a patch that I always run with. It is pretty verbose, but helps me out a lot in debugging and development.
Let us know if it shows anything interesting.
thanks,
greg k-h
diff -Nru a/drivers/base/bus.c b/drivers/base/bus.c --- a/drivers/base/bus.c Tue Jul 15 19:23:44 2003 +++ b/drivers/base/bus.c Tue Jul 15 19:23:44 2003 @@ -8,7 +8,7 @@ * */ -#undef DEBUG +#define DEBUG 1 #include <linux/device.h> #include <linux/module.h> diff -Nru a/drivers/base/class.c b/drivers/base/class.c --- a/drivers/base/class.c Tue Jul 15 19:24:11 2003 +++ b/drivers/base/class.c Tue Jul 15 19:24:11 2003 @@ -10,7 +10,7 @@ * */ -#undef DEBUG +#define DEBUG 1 #include <linux/device.h> #include <linux/module.h> diff -Nru a/drivers/base/core.c b/drivers/base/core.c --- a/drivers/base/core.c Tue Jul 15 19:23:45 2003 +++ b/drivers/base/core.c Tue Jul 15 19:23:45 2003 @@ -8,7 +8,7 @@ * */ -#undef DEBUG +#define DEBUG 1 #include <linux/device.h> #include <linux/err.h> diff -Nru a/drivers/base/driver.c b/drivers/base/driver.c --- a/drivers/base/driver.c Tue Jul 15 19:24:11 2003 +++ b/drivers/base/driver.c Tue Jul 15 19:24:11 2003 @@ -8,7 +8,7 @@ * */ -#undef DEBUG +#define DEBUG 1 #include <linux/device.h> #include <linux/module.h> diff -Nru a/include/linux/usb.h b/include/linux/usb.h diff -Nru a/lib/kobject.c b/lib/kobject.c --- a/lib/kobject.c Tue Jul 15 19:23:44 2003 +++ b/lib/kobject.c Tue Jul 15 19:23:44 2003 @@ -10,7 +10,7 @@ * about using the kobject interface. */ -#undef DEBUG +#define DEBUG #include <linux/kobject.h> #include <linux/string.h> @@ -213,6 +213,7 @@ void kobject_init(struct kobject * kobj) { + WARN_ON(atomic_read(&kobj->refcount)); atomic_set(&kobj->refcount,1); INIT_LIST_HEAD(&kobj->entry); kobj->kset = kset_get(kobj->kset); @@ -379,6 +380,7 @@ atomic_inc(&kobj->refcount); } else ret = NULL; + WARN_ON((kobj != NULL) && (ret==NULL)); return ret; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |