Re: [PATCH] usb: Use a workqueue in usb_add_hcd() to reduce boot time

From: Greg KH
Date: Thu Jan 26 2012 - 19:08:17 EST


On Thu, Jan 26, 2012 at 03:57:23PM -0800, Simon Glass wrote:
> Hi Greg,
>
> On Thu, Jan 26, 2012 at 3:51 PM, Greg KH <gregkh@xxxxxxx> wrote:
> > On Thu, Jan 26, 2012 at 03:48:43PM -0800, Simon Glass wrote:
> >> Hi Greg,
> >>
> >> On Tue, Jan 24, 2012 at 9:22 AM, Greg KH <gregkh@xxxxxxx> wrote:
> >> > On Tue, Jan 24, 2012 at 05:57:11PM +0100, Sebastian Andrzej Siewior wrote:
> >> >> * Alan Stern | 2012-01-21 11:11:09 [-0500]:
> >> >>
> >> >> >Doing time-consuming things later won't make any difference.  That is,
> >> >> >suppose the boot sequence performs activities A and B, where A takes a
> >> >> >long time.  Doing A later, so that the boot sequence performs B and
> >> >> >then A, won't change the total time required.
> >> >>
> >> >> That is true. However if you show the gui _now_ and look for USB later
> >> >> then it feels faster and this is usually enough.
> >> >
> >> > Which has been done before, with great success (i.e. we did it for
> >> > Moblin boot times), so it shouldn't be that big of an issue.
> >> >
> >> > Which points out the question, exactly what is the issue here?  We have
> >> > "multithreaded" pci driver startup for a long time now, did that stop
> >> > working here?  If you use bootchart, does it show that the USB host
> >> > driver is stoping the machine from proceeding to the next stage in the
> >> > boot process?
> >> >
> >> > From my experience, I never saw the USB host controller get in the way
> >> > at all, it was always somethine else happening that caused problems
> >> > (i.e. video.)
> >> >
> >> > Simon, do you have boot charts anywhere showing this?
> >>
> >> I did have initcall timing when I last looked at this. USB was holding
> >> up progress. Sorry for the delay - I hope to get back to this next
> >> week.
> >
> > Are you building your USB host controllers into the kernel, or are they
> > modules?
> >
> > What is sitting on the USB bus that is needed for the boot process to
> > continue on to init and then later?  Is the root disk on it?
>
> A hub with a few things on it (Ethernet, USB stick). No we don't
> normally have a root disk on it - we could in fact init USB *much*
> later and be quite happy. Sorry I don't have full answers until I get
> back to this. But USB does 'start' each port within the initcall which
> seems to take time. Maybe it is at bottom a driver issue?

Then load the usb module from a thread after init starts up and you
should be fine for boot speed, right? That's what other distros did
with no known ill side effects.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/