diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 9123c9a84c..9a562dcf22 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -2638,12 +2638,6 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { /* Uncomment the next line if you need to wait for debugger. */ // debug_break(); - /* The firmware may skip initializing some devices for the sake of a faster boot. This is especially - * true for fastboot enabled firmwares. But this means that things we use like input devices or the - * xbootldr partition may not be available yet. Reconnect all drivers should hopefully make the - * firmware initialize everything we need. */ - (void) reconnect_all_drivers(); - err = BS->OpenProtocol(image, &LoadedImageProtocol, (void **)&loaded_image, diff --git a/src/boot/efi/vmm.c b/src/boot/efi/vmm.c index b1bfd778fc..2260b217b7 100644 --- a/src/boot/efi/vmm.c +++ b/src/boot/efi/vmm.c @@ -83,6 +83,10 @@ EFI_STATUS vmm_open(EFI_HANDLE *ret_vmm_dev, EFI_FILE **ret_vmm_dir) { assert(ret_vmm_dev); assert(ret_vmm_dir); + /* Make sure all file systems have been initialized. Only do this in VMs as this is slow + * on some real firmwares. */ + (void) reconnect_all_drivers(); + /* find all file system handles */ err = BS->LocateHandleBuffer(ByProtocol, &FileSystemProtocol, NULL, &n_handles, &handles); if (err != EFI_SUCCESS)