-
Notifications
You must be signed in to change notification settings - Fork 616
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Freeze during "initialising devices" in Virtualbox when chainloading #977
Comments
Testing with some extra debug shows that the freeze occurs when we attempt to open the PCI I/O protocol with /* Open PCI device */
if ( ( rc = efipci_open ( device, ( EFI_OPEN_PROTOCOL_BY_DRIVER |
EFI_OPEN_PROTOCOL_EXCLUSIVE ),
efipci ) ) != 0 ) {
DBGC ( device, "EFIPCI %s could not open PCI device: %s\n",
efi_handle_name ( device ), strerror ( rc ) );
DBGC_EFI_OPENERS ( device, device, &efi_pci_io_protocol_guid );
goto err_open;
} The debug messages show that even after disconnection, the VirtualBox "E1000 network interface card Driver" still has the handle open with |
I have found the root cause bug within the VirtualBox VBoxPkg E1kNetDxe driver. The VirtualBox driver's STATIC
EFI_STATUS
EFIAPI
E1kNetDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
)
{
if (NumberOfChildren > 0) {
//
// free all resources for whose access we need the child handle, because
// the child handle is going away
//
EFI_STATUS Status;
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;
E1K_NET_DEV *Dev;
EFI_TPL OldTpl;
ASSERT (NumberOfChildren == 1);
......
gBS->CloseProtocol (
ControllerHandle,
&gEfiPciIoProtocolGuid,
This->DriverBindingHandle,
ControllerHandle
);
......
}
return EFI_SUCCESS;
} This relies on the driver's This bug can be observed directly in the UEFI shell's list of devices: Note that device The net effect is that the VirtualBox driver's |
solved it by chaging network adapter type from intel pro 1000 to pcnet fast |
Originally posted by @Reonaydo in #624 (comment)
Reproduction instructions: create new VirtualBox VM with EFI mode selected, attempt chainloading ipxe.efi.
The text was updated successfully, but these errors were encountered: