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

From: Simon Glass
Date: Thu Jan 26 2012 - 18:57:22 EST


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?

Regards,
Simon

>
> thanks,
>
> 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/