public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/6] usb: Remove 1 second per port timeout in usb_hub_configure()
Date: Thu, 10 Mar 2016 19:59:51 +0100	[thread overview]
Message-ID: <56E1C427.2000902@redhat.com> (raw)
In-Reply-To: <1457625012-1268-4-git-send-email-sr@denx.de>

Hi,

On 10-03-16 16:50, Stefan Roese wrote:
> On complex USB infrastructures, with many hubs and therefore many
> (perhaps unconnected) ports, current U-Boot has a very long USB scanning
> time. On my current custom x86 board, this time is over 20 seconds!!!
> One of the biggest problems here is a 1 second delay (timeout) in
> usb_hub_configure() to check, if a USB device is connected to a
> port. As this is done for each port, this timeout sums up over
> all unconnected ports.
>
> This patch removes this 1 seconds per port timeout from
> usb_hub_configure().

If you look at the commit which added the delay, you will see the
need for this delay clearly documented. The USB spec gives devices
up to one second to connect after they get power, and some devices
actually use almost that entire second.

Sure what you're doing will work most of the time, but works most
of the time is not really helpful, and will just cause hard to
debug problems.

Instead what we need to do is implement parallel usb scanning,
I've done some suggestions on how to do this here:

http://lists.denx.de/pipermail/u-boot/2016-February/245243.html

Regards,

Hans


> All my USB devices are still detected correctly
> on my platform. And I'm using 4 different USB keys right now.
> Including a problematic "Intenso Alu Line" key.
>
> Here the numbers for my current board:
>
> Without this patch:
> starting USB...
> USB0:   USB EHCI 1.00
> scanning bus 0 for devices... 9 USB Device(s) found
>
> time: 24.811 seconds
>
> With this patch:
> starting USB...
> USB0:   USB EHCI 1.00
> scanning bus 0 for devices... 9 USB Device(s) found
>
> time: 10.822 seconds
>
> So ~14 seconds of USB scanning time reduction.
>
> Again, this timeout is only removed if CONFIG_USB_FAST_SCAN is
> defined. Once more tests are done on multiple other platforms we
> can decide to remove this timeout completely.
>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Stephen Warren <swarren@nvidia.com>
> Cc: Marek Vasut <marex@denx.de>
> ---
>
>   common/usb_hub.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/common/usb_hub.c b/common/usb_hub.c
> index 660f4f4..780291f 100644
> --- a/common/usb_hub.c
> +++ b/common/usb_hub.c
> @@ -478,7 +478,11 @@ static int usb_hub_configure(struct usb_device *dev)
>   		unsigned short portstatus, portchange;
>   		int ret;
>   		ulong start = get_timer(0);
> +#if defined(CONFIG_USB_FAST_SCAN)
> +		uint delay = 0;
> +#else
>   		uint delay = CONFIG_SYS_HZ;
> +#endif
>
>   #ifdef CONFIG_SANDBOX
>   		if (state_get_skip_delays())
>

  reply	other threads:[~2016-03-10 18:59 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-10 15:50 [U-Boot] [PATCH 0/6] usb: Reduce USB scanning time Stefan Roese
2016-03-10 15:50 ` [U-Boot] [PATCH 1/6] usb: legacy_hub_port_reset(): Speedup hub reset handling Stefan Roese
2016-03-10 18:51   ` Hans de Goede
2016-03-11  6:37     ` Stefan Roese
2016-03-11  0:06   ` Stephen Warren
2016-03-10 15:50 ` [U-Boot] [PATCH 2/6] usb: Remove 200 ms delay in usb_hub_port_connect_change() Stefan Roese
2016-03-10 18:55   ` Hans de Goede
2016-03-11  6:34     ` Stefan Roese
2016-03-11  6:35     ` Stefan Roese
2016-03-11  0:06   ` Stephen Warren
2016-03-10 15:50 ` [U-Boot] [PATCH 3/6] usb: Remove 1 second per port timeout in usb_hub_configure() Stefan Roese
2016-03-10 18:59   ` Hans de Goede [this message]
2016-03-10 15:50 ` [U-Boot] [PATCH 4/6] usb: usb_hub_power_on(): Use 100ms power-on delay instead of 1 sec (optionally) Stefan Roese
2016-03-10 19:12   ` Hans de Goede
2016-03-11  9:05     ` Stefan Roese
2016-03-11 10:13     ` Stefan Roese
2016-03-11 10:32       ` Hans de Goede
2016-03-11 10:42         ` Stefan Roese
2016-03-10 15:50 ` [U-Boot] [PATCH 5/6] usb: Don't reset the USB hub a 2nd time Stefan Roese
2016-03-10 19:13   ` Hans de Goede
2016-03-11  6:43     ` Stefan Roese
2016-03-11  0:07   ` Stephen Warren
2016-03-10 15:50 ` [U-Boot] [PATCH 6/6] usb: Implement static USB port configuration to speed up USB scanning Stefan Roese
2016-03-10 19:18   ` Hans de Goede
2016-03-11 15:08     ` Stefan Roese

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56E1C427.2000902@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox