{"push_id":662439449,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"a2173fca45983094cfde38359132cccec51b084c","before":"372672275e48a7f0fcd058476bd742bf950e4074","commits":[{"sha":"a2173fca45983094cfde38359132cccec51b084c","author":{"email":"67f92fe466c1cf7071cd98d44dd3637d867a9144@ipxe.org","name":"Michael Brown"},"message":"[usb] Do not call usb_hotplug() when registering a new hub\n\nThe action of registering a new hub can itself happen in only two\nways: either a new USB hub has been created (in which case we are\nalready inside a call to usb_hotplug()), or a new root hub has been\ncreated.\n\nIn the former case, we do not need to issue a further call to\nusb_hotplug(), since the hub's ports will all be marked as changed and\nso will be handled after the return from register_usb_hub() anyway.\nCalling usb_hotplug() within register_usb_hub() leads to a confusing\norder of events, such as:\n\n- root hub port 1 detects a change\n- root hub port 2 detects a change\n- usb_hotplug() is called\n  - root hub port 1 finds a USB hub\n    - usb_hotplug() is called\n      - this inner call to usb_hotplug() handles root hub port 2\n\nFix by calling usb_hotplug() only from usb_step() and from\nregister_usb_bus().  This avoids recursive calls to usb_hotplug() and\nensures that devices are enumerated in the order of detection.\n\nTested-by: Robin Smidsrød <robin@smidsrod.no>\nSigned-off-by: Michael Brown <mcb30@ipxe.org>","distinct":true,"url":"https://api.github.com/repos/ipxe/ipxe/commits/a2173fca45983094cfde38359132cccec51b084c"}]}