From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 0/4] usb: Reduce USB scanning time
Date: Tue, 15 Mar 2016 20:53:31 +0100 [thread overview]
Message-ID: <56E8683B.60508@denx.de> (raw)
In-Reply-To: <1458046755-15934-1-git-send-email-sr@denx.de>
On 03/15/2016 01:59 PM, Stefan Roese wrote:
> My current x86 platform (Bay Trail, not in mainline yet) has a quite
> complex USB infrastructure with many USB hubs. Here the USB scan takes
> an incredible huge amount of time:
>
> starting USB...
> USB0: USB EHCI 1.00
> scanning bus 0 for devices... 9 USB Device(s) found
>
> time: 28.415 seconds
>
> This is of course not acceptable on platforms, where USB needs to get
> scanned at every bootup. As this increases the bootup time of this
> device by nearly 30 seconds!
>
> This patch series greatly reduces the USB scanning time. This is done
> by multiple means:
>
> - Remove or reduce delays and timeouts
> - Remove a 2nd reset of the USB hubs
> - Change USB port timeout handling and introduce quasi parallel USB
> port scanning
>
> As a result, the USB scanning time is greatly reduced:
>
> starting USB...
> USB0: USB EHCI 1.00
> scanning bus 0 for devices... 9 USB Device(s) found
>
> time: 1.822 seconds
>
> As you can see, the time is reduced from 28.4 to 1.8 seconds!
>
> Please find more details to the changes in the patch description.
>
> Testing and comments welcome!
>
> Thanks,
> Stefan
>
> Changes in v5:
> - Removed superfluous debug output from usb_scan_port()
> - Replaced usb_hub_power_on() with usb_set_port_feature() in case
> of overcurrent detection. This is whats really needed here.
> - Added a per-port overcurrent counter and stop re-scanning of
> a device that exceeds the PORT_OVERCURRENT_MAX_SCAN_COUNT
> - Moved list_del() to end of loop in usb_scan_port()
> - Moved timeout / delay variables from USB dev to hub struct
> as they are hub specific
> - Moved state_get_skip_delays() to usb_hub_power_on() so that
> the timeouts are not set there
>
> Changes in v4:
> - Minor rewording / fixes of the commit text
> - Add Acked-by / Tested-by from Hans and Stephen
> - Minor rewording / fixes of the commit text
> - Add Acked-by from Hans
> - Moved check for query_delay into usb_scan_port() as suggested by Hans
> - Correct list handling (drop INIT_LIST_HEAD)
> - Added some missing free() calls
> - Changed connect_timeout calculation as suggested by Stephen
> - Moved usb_scan_list to other globals to be cleaned up in a later patch
> - Added timeout check for non-functional ports (usb_get_port_status
> return error
> - Reverted if logic in loop to remove an indentation level
> - Moved debug() output
> - Removed unnecessary if when already connected
> - Added Hans's Acked-by
> - Added Stephen's Tested-by
> - Minor rewording / fixes of the commit text
>
> Changes in v3:
> - Changed small timeout from 10ms to 20ms as this results in a
> much faster USB scanning time (10ms too small and 20ms enough
> in many cases)
> - Introduced scanning list containing all USB devices of one USB
> controller that need to get scanned
> - Don't delay in usb_hub_power_on(). Instead skip querying these devices
> until the delay time is reached.
>
> Changes in v2:
> - Add Acked-by / Tested-by from Hans and Stephen
> - Make this change unconditional
> - Add Acked-by / Tested-by from Hans and Stephen
> - Make this change unconditional
> - Add Tested-by from Stephen
> - Remove static USB port configuration patch (for now)
>
> Stefan Roese (4):
> usb: legacy_hub_port_reset(): Speedup hub reset handling
> usb: Remove 200 ms delay in usb_hub_port_connect_change()
> usb: Don't reset the USB hub a 2nd time
> usb: Change power-on / scanning timeout handling
>
> common/usb.c | 13 +--
> common/usb_hub.c | 329 ++++++++++++++++++++++++++++++++++++++-----------------
> include/usb.h | 4 +
> 3 files changed, 235 insertions(+), 111 deletions(-)
>
Applied to u-boot-usb/master , thanks!
--
Best regards,
Marek Vasut
next prev parent reply other threads:[~2016-03-15 19:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-15 12:59 [U-Boot] [PATCH v5 0/4] usb: Reduce USB scanning time Stefan Roese
2016-03-15 12:59 ` [U-Boot] [PATCH v5 1/4] usb: legacy_hub_port_reset(): Speedup hub reset handling Stefan Roese
2016-03-16 2:29 ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 2/4] usb: Remove 200 ms delay in usb_hub_port_connect_change() Stefan Roese
2016-03-16 2:29 ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 3/4] usb: Don't reset the USB hub a 2nd time Stefan Roese
2016-03-16 2:30 ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 4/4] usb: Change power-on / scanning timeout handling Stefan Roese
2016-03-15 13:07 ` Hans de Goede
2016-03-15 15:58 ` Stephen Warren
2016-03-16 2:31 ` Bin Meng
2016-04-01 22:22 ` Marek Vasut
2016-04-02 21:21 ` Hans de Goede
2016-04-27 23:07 ` Marek Vasut
2016-04-28 6:12 ` Stefan Roese
2016-03-15 19:53 ` Marek Vasut [this message]
2016-03-16 3:32 ` [U-Boot] [PATCH v5 0/4] usb: Reduce USB scanning time Simon Glass
2016-03-16 2:33 ` Bin Meng
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=56E8683B.60508@denx.de \
--to=marex@denx.de \
--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