david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src
Michael Brown a2173fca45 [usb] Do not call usb_hotplug() when registering a new hub
The action of registering a new hub can itself happen in only two
ways: either a new USB hub has been created (in which case we are
already inside a call to usb_hotplug()), or a new root hub has been
created.

In the former case, we do not need to issue a further call to
usb_hotplug(), since the hub's ports will all be marked as changed and
so will be handled after the return from register_usb_hub() anyway.
Calling usb_hotplug() within register_usb_hub() leads to a confusing
order of events, such as:

- root hub port 1 detects a change
- root hub port 2 detects a change
- usb_hotplug() is called
  - root hub port 1 finds a USB hub
    - usb_hotplug() is called
      - this inner call to usb_hotplug() handles root hub port 2

Fix by calling usb_hotplug() only from usb_step() and from
register_usb_bus().  This avoids recursive calls to usb_hotplug() and
ensures that devices are enumerated in the order of detection.

Tested-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-05-13 14:13:09 +01:00
..
arch [pci] Provide PCI_CLASS() to calculate a scalar PCI class value 2015-05-08 14:57:12 +01:00
bin Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
config [usb] Add basic support for USB keyboards 2015-05-12 15:53:22 +01:00
core [settings] Add "base64" setting type 2015-04-24 15:36:41 +01:00
crypto [base64] Add buffer size parameter to base64_encode() and base64_decode() 2015-04-24 15:32:04 +01:00
doc [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
drivers [usb] Do not call usb_hotplug() when registering a new hub 2015-05-13 14:13:09 +01:00
hci [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-05 11:40:13 +00:00
image [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00
include [usb] Add basic support for USB keyboards 2015-05-12 15:53:22 +01:00
interface [base16] Add buffer size parameter to base16_encode() and base16_decode() 2015-04-24 14:41:32 +01:00
libgcc [build] Mark __intel_new_proc_init with __libgcc rather than cdecl 2009-08-03 15:56:10 +01:00
net [ipv6] Disambiguate received ICMPv6 errors 2015-05-11 12:45:14 +01:00
tests [settings] Add "base64" setting type 2015-04-24 15:36:41 +01:00
usr [autoboot] Match against parent devices when matching by bus type and location 2015-03-17 02:30:06 +00:00
util [build] Construct all-drivers list based on driver class 2015-04-22 12:21:14 +01:00
.gitignore [build] Add support for local configuration files 2010-03-26 19:07:22 +00:00
Makefile [usb] Add basic support for USB hubs 2015-02-03 12:19:52 +00:00
Makefile.housekeeping [build] Construct all-drivers list based on driver class 2015-04-22 12:21:14 +01:00
doxygen.cfg [build] Remove PACKED macro 2010-05-29 23:49:47 +01:00