//\r
EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid);\r
\r
+ //\r
+ // Dispatch deferred images after EndOfDxe event.\r
+ //\r
+ EfiBootManagerDispatchDeferredImages ();\r
+\r
//\r
// Locate the PCI root bridges and make the PCI bus driver connect each,\r
// non-recursively. This will produce a number of child handles with PciIo on\r
VOID\r
)\r
{\r
+ RETURN_STATUS Status;\r
+\r
//\r
// Show the splash screen.\r
//\r
BootLogoEnableLogo ();\r
\r
//\r
- // Connect the rest of the devices.\r
+ // Process QEMU's -kernel command line option. The kernel booted this way\r
+ // will receive ACPI tables: in PlatformBootManagerBeforeConsole(), we\r
+ // connected any and all PCI root bridges, and then signaled the ACPI\r
+ // platform driver.\r
//\r
- EfiBootManagerConnectAll ();\r
+ TryRunningQemuKernel ();\r
\r
//\r
- // Process QEMU's -kernel command line option. Note that the kernel booted\r
- // this way should receive ACPI tables, which is why we connect all devices\r
- // first (see above) -- PCI enumeration blocks ACPI table installation, if\r
- // there is a PCI host.\r
+ // Connect the purported boot devices.\r
//\r
- TryRunningQemuKernel ();\r
+ Status = ConnectDevicesFromQemu ();\r
+ if (RETURN_ERROR (Status)) {\r
+ //\r
+ // Connect the rest of the devices.\r
+ //\r
+ EfiBootManagerConnectAll ();\r
+ }\r
\r
//\r
// Enumerate all possible boot options, then filter and reorder them based on\r
// Register UEFI Shell\r
//\r
PlatformRegisterFvBootOption (\r
- PcdGetPtr (PcdShellFile), L"EFI Internal Shell", LOAD_OPTION_ACTIVE\r
+ &gUefiShellFileGuid, L"EFI Internal Shell", LOAD_OPTION_ACTIVE\r
);\r
\r
RemoveStaleFvFileOptions ();\r