On 02/05/16 18:56, Cohen, Eugene wrote:
If I duplicate the call to BdsLibConnectAll() [2], then boot works as expected. On first boot, the boot order is created correctly and EFI Network pulls down a file and boots it.
I have seen components that have asynchronous initialization characteristics, meaning that they returns from the Driver Binding Start() call but keep doing processing on callbacks. If this processing will eventually result in creating new handles (USB bus enumeration comes to mind) then the asynchronous processing is effectively racing the driver connection process (others feel free to jump in and disagree with this assertion). I have no idea if this is your issue but wanted to raise it as a possibility for completeness.
I've been thinking about proposing an enhancement to the spec to cover this case but haven't been motivated enough yet.
Perhaps install a NULL protocol interface (with a new GUID), similar to gEfiPciEnumerationCompleteProtocolGuid?
Thanks Laszlo