\r
@retval TRUE This boot option matches a valid EFI NV Boot####.\r
@retval FALSE If not.\r
- \r
+\r
**/\r
BOOLEAN\r
IsBootOptionValidNVVarialbe (\r
}\r
\r
//\r
- // If the Boot Option Number and Device Path matches, OptionToCheck matches a \r
+ // If the Boot Option Number and Device Path matches, OptionToCheck matches a\r
// valid EFI NV Boot####.\r
//\r
if ((OptionToCheck->BootCurrent == BootOption->BootCurrent) &&\r
}\r
\r
FreePool (BootOption);\r
- \r
+\r
return Valid;\r
}\r
/**\r
//\r
// Record the performance data for End of BDS\r
//\r
- PERF_END (0, "BDS", NULL, 0);\r
+ PERF_END(NULL, "BDS", NULL, 0);\r
\r
*ExitDataSize = 0;\r
*ExitData = NULL;\r
// Signal the EVT_SIGNAL_READY_TO_BOOT event\r
//\r
EfiSignalEventReadyToBoot();\r
- \r
- \r
+\r
+\r
//\r
// Set Boot Current\r
//\r
//\r
InitializeListHead (&TempBootLists);\r
BdsLibRegisterNewOption (&TempBootLists, DevicePath, L"EFI Internal Shell", L"BootOrder");\r
- \r
+\r
//\r
// free the temporary device path created by BdsLibUpdateFvFileDevicePath()\r
//\r
- FreePool (DevicePath); \r
+ FreePool (DevicePath);\r
DevicePath = Option->DevicePath;\r
}\r
\r
&mHdBootVariablePrivateGuid,\r
&CachedDevicePathSize\r
);\r
- \r
+\r
if (CachedDevicePath != NULL) {\r
TempNewDevicePath = CachedDevicePath;\r
DeviceExist = FALSE;\r
TempNewDevicePath = CachedDevicePath;\r
CachedDevicePath = BdsLibDelPartMatchInstance (CachedDevicePath, Instance );\r
FreePool (TempNewDevicePath);\r
- \r
+\r
//\r
// Second, append the remaining path after the matched instance\r
//\r
CachedDevicePath\r
);\r
}\r
- \r
+\r
FreePool (Instance);\r
FreePool (CachedDevicePath);\r
return FullDevicePath;\r
break;\r
}\r
}\r
- \r
+\r
FreePool (CachedDevicePath);\r
if (BlockIoBuffer != NULL) {\r
FreePool (BlockIoBuffer);\r
if ((BlockIoDevicePath == NULL) || (HardDriveDevicePath == NULL)) {\r
return FALSE;\r
}\r
- \r
+\r
//\r
// Make PreviousDevicePath == the device path node before the end node\r
//\r
//\r
TmpHdPath = (HARDDRIVE_DEVICE_PATH *) BlockIoHdDevicePathNode;\r
Match = FALSE;\r
- \r
+\r
//\r
// Check for the match\r
//\r
&gEfiGlobalVariableGuid,\r
&BootOptionSize\r
);\r
- \r
+\r
if (BootOptionVar == NULL) {\r
FreePool (BootOrder);\r
return EFI_OUT_OF_RESOURCES;\r
\r
/**\r
For EFI boot option, BDS separate them as six types:\r
- 1. Network - The boot option points to the SimpleNetworkProtocol device. \r
+ 1. Network - The boot option points to the SimpleNetworkProtocol device.\r
Bds will try to automatically create this type boot option when enumerate.\r
- 2. Shell - The boot option points to internal flash shell. \r
+ 2. Shell - The boot option points to internal flash shell.\r
Bds will try to automatically create this type boot option when enumerate.\r
3. Removable BlockIo - The boot option only points to the removable media\r
device, like USB flash disk, DVD, Floppy etc.\r
These device should contain a *removable* blockIo\r
protocol in their device handle.\r
- Bds will try to automatically create this type boot option \r
+ Bds will try to automatically create this type boot option\r
when enumerate.\r
- 4. Fixed BlockIo - The boot option only points to a Fixed blockIo device, \r
+ 4. Fixed BlockIo - The boot option only points to a Fixed blockIo device,\r
like HardDisk.\r
These device should contain a *fixed* blockIo\r
protocol in their device handle.\r
BDS will skip fixed blockIo devices, and NOT\r
- automatically create boot option for them. But BDS \r
- will help to delete those fixed blockIo boot option, \r
+ automatically create boot option for them. But BDS\r
+ will help to delete those fixed blockIo boot option,\r
whose description rule conflict with other auto-created\r
boot options.\r
- 5. Non-BlockIo Simplefile - The boot option points to a device whose handle \r
+ 5. Non-BlockIo Simplefile - The boot option points to a device whose handle\r
has SimpleFileSystem Protocol, but has no blockio\r
protocol. These devices do not offer blockIo\r
- protocol, but BDS still can get the \r
+ protocol, but BDS still can get the\r
\EFI\BOOT\boot{machinename}.EFI by SimpleFileSystem\r
Protocol.\r
- 6. File - The boot option points to a file. These boot options are usually \r
+ 6. File - The boot option points to a file. These boot options are usually\r
created by user manually or OS loader. BDS will not delete or modify\r
- these boot options. \r
- \r
+ these boot options.\r
+\r
This function will enumerate all possible boot device in the system, and\r
- automatically create boot options for Network, Shell, Removable BlockIo, \r
+ automatically create boot options for Network, Shell, Removable BlockIo,\r
and Non-BlockIo Simplefile devices.\r
It will only execute once of every boot.\r
- \r
+\r
@param BdsBootOptionList The header of the link list which indexed all\r
current boot options\r
\r
MiscNumber = 0;\r
ScsiNumber = 0;\r
ZeroMem (Buffer, sizeof (Buffer));\r
- \r
+\r
//\r
// If the boot device enumerate happened, just get the boot\r
// device from the boot order variable\r
Status = BdsLibBuildOptionFromVar (BdsBootOptionList, L"BootOrder");\r
return Status;\r
}\r
- \r
+\r
//\r
// Notes: this dirty code is to get the legacy boot option from the\r
// BBS table and create to variable as the EFI boot option, it should\r
// Delete invalid boot option\r
//\r
BdsDeleteAllInvalidEfiBootOption ();\r
- \r
+\r
//\r
// Parse removable media\r
//\r
&NumberBlockIoHandles,\r
&BlockIoHandles\r
);\r
- \r
+\r
for (Index = 0; Index < NumberBlockIoHandles; Index++) {\r
Status = gBS->HandleProtocol (\r
BlockIoHandles[Index],\r
\r
switch (DevicePathType) {\r
case BDS_EFI_ACPI_FLOPPY_BOOT:\r
- UnicodeSPrint (Buffer, sizeof (Buffer), L"%d", FloppyNumber); \r
+ UnicodeSPrint (Buffer, sizeof (Buffer), L"%d", FloppyNumber);\r
BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer);\r
FloppyNumber++;\r
break;\r
- \r
+\r
//\r
// Assume a removable SATA device should be the DVD/CD device\r
//\r
\r
case BDS_EFI_MESSAGE_SCSI_BOOT:\r
UnicodeSPrint (Buffer, sizeof (Buffer), L"%d", ScsiNumber);\r
- BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); \r
+ BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer);\r
ScsiNumber++;\r
break;\r
\r
case BDS_EFI_MESSAGE_MISC_BOOT:\r
UnicodeSPrint (Buffer, sizeof (Buffer), L"%d", MiscNumber);\r
- BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); \r
+ BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer);\r
MiscNumber++;\r
break;\r
\r
)\r
{\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- \r
+\r
DevicePath = DevicePathFromHandle (Handle);\r
\r
//\r
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
\r
UpdatedDevicePath = DevicePath;\r
- \r
+\r
//\r
// Check whether the device is connected\r
//\r
//\r
DupDevicePath = DuplicateDevicePath (DevicePath);\r
ASSERT (DupDevicePath != NULL);\r
- \r
+\r
UpdatedDevicePath = DupDevicePath;\r
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &UpdatedDevicePath, &Handle);\r
//\r
\r
@param DevicePath The bootable device Path to check\r
\r
- @retval BDS_EFI_MEDIA_HD_BOOT If given device path contains MEDIA_DEVICE_PATH type device path node \r
+ @retval BDS_EFI_MEDIA_HD_BOOT If given device path contains MEDIA_DEVICE_PATH type device path node\r
which subtype is MEDIA_HARDDRIVE_DP\r
@retval BDS_EFI_MEDIA_CDROM_BOOT If given device path contains MEDIA_DEVICE_PATH type device path node\r
which subtype is MEDIA_CDROM_DP\r
@retval BDS_EFI_MESSAGE_MISC_BOOT If the device path not contains any media device path node, and\r
its last device path node point to a message device path node.\r
@retval BDS_LEGACY_BBS_BOOT If given device path contains BBS_DEVICE_PATH type device path node.\r
- @retval BDS_EFI_UNSUPPORT An EFI Removable BlockIO device path not point to a media and message device, \r
+ @retval BDS_EFI_UNSUPPORT An EFI Removable BlockIO device path not point to a media and message device,\r
\r
**/\r
UINT32\r
return BDS_EFI_MEDIA_HD_BOOT;\r
} else if (DevicePathSubType (TempDevicePath) == MEDIA_CDROM_DP) {\r
return BDS_EFI_MEDIA_CDROM_BOOT;\r
- } \r
+ }\r
break;\r
case ACPI_DEVICE_PATH:\r
Acpi = (ACPI_HID_DEVICE_PATH *) TempDevicePath;\r
// if the device path not only point to driver device, it is not a messaging device path,\r
//\r
if (!IsDevicePathEndType (LastDeviceNode)) {\r
- break; \r
+ break;\r
}\r
\r
if (DevicePathSubType(TempDevicePath) == MSG_ATAPI_DP) {\r
\r
TempDevicePath = DevPath;\r
LastDeviceNode = DevPath;\r
- \r
+\r
//\r
// Check if it's a valid boot option for network boot device\r
// Only check if there is SimpleNetworkProtocol installed. If yes, that means\r
&Handle\r
);\r
}\r
- \r
+\r
if (!EFI_ERROR (Status)) {\r
if (CheckMedia) {\r
//\r
//\r
// If the boot option point to Internal FV shell, make sure it is valid\r
//\r
- TempDevicePath = DevPath; \r
+ TempDevicePath = DevPath;\r
Status = BdsLibUpdateFvFileDevicePath (&TempDevicePath, PcdGetPtr(PcdShellFile));\r
if (Status == EFI_ALREADY_STARTED) {\r
return TRUE;\r
} else {\r
if (Status == EFI_SUCCESS) {\r
- FreePool (TempDevicePath); \r
+ FreePool (TempDevicePath);\r
}\r
return FALSE;\r
}\r
}\r
- \r
+\r
//\r
// If the boot option point to a blockIO device:\r
// if it is a removable blockIo device, it is valid.\r
- // if it is a fixed blockIo device, check its description confliction. \r
+ // if it is a fixed blockIo device, check its description confliction.\r
//\r
TempDevicePath = DevPath;\r
Status = gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &TempDevicePath, &Handle);\r
Status = gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &TempDevicePath, &Handle);\r
}\r
}\r
- \r
+\r
if (!EFI_ERROR (Status)) {\r
Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **)&BlockIo);\r
if (!EFI_ERROR (Status)) {\r
if (FileGuid == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
+\r
//\r
// Check whether the device path point to the default the input Fv file\r
//\r
}\r
\r
if (FvHandleBuffer != NULL) {\r
- FreePool (FvHandleBuffer); \r
+ FreePool (FvHandleBuffer);\r
}\r
}\r
\r
/** @file\r
- This module produce main entry for BDS phase - BdsEntry. \r
+ This module produce main entry for BDS phase - BdsEntry.\r
When this module was dispatched by DxeCore, gEfiBdsArchProtocolGuid will be installed\r
which contains interface of BdsEntry.\r
After DxeCore finish DXE phase, gEfiBdsArchProtocolGuid->BdsEntry will be invoked\r
///\r
/// Note: Current BDS not directly get the BootMode, DefaultBoot,\r
/// TimeoutDefault, MemoryTestLevel value from the BDS arch protocol.\r
-/// Please refer to the library useage of BdsLibGetBootMode, BdsLibGetTimeout \r
+/// Please refer to the library useage of BdsLibGetBootMode, BdsLibGetTimeout\r
/// and PlatformBdsDiagnostics in BdsPlatform.c\r
///\r
EFI_HANDLE gBdsHandle = NULL;\r
//\r
UnicodeSPrint (Buffer, sizeof (Buffer), L"Boot%04x", *mBootNext);\r
BootOption = BdsLibVariableToOption (&BootLists, Buffer);\r
- \r
+\r
//\r
// If fail to get boot option from variable, just return and do nothing.\r
//\r
if (BootOption == NULL) {\r
return;\r
}\r
- \r
+\r
BootOption->BootCurrent = *mBootNext;\r
}\r
//\r
//\r
// Call platform action to indicate the boot success\r
//\r
- BootOption->StatusString = GetStringById (STRING_TOKEN (STR_BOOT_SUCCEEDED)); \r
+ BootOption->StatusString = GetStringById (STRING_TOKEN (STR_BOOT_SUCCEEDED));\r
PlatformBdsBootSuccess (BootOption);\r
\r
//\r
//\r
// Insert the performance probe\r
//\r
- PERF_END (0, "DXE", NULL, 0);\r
- PERF_START (0, "BDS", NULL, 0);\r
+ PERF_END (NULL, "DXE", NULL, 0);\r
+ PERF_START (NULL, "BDS", NULL, 0);\r
\r
//\r
// Initialize the global system boot option and driver option\r
//\r
// Do the platform init, can be customized by OEM/IBV\r
//\r
- PERF_START (0, "PlatformBds", "BDS", 0);\r
+ PERF_START (NULL, "PlatformBds", "BDS", 0);\r
PlatformBdsInit ();\r
\r
InitializeHwErrRecSupport();\r
- \r
+\r
//\r
// bugbug: platform specific code\r
// Initialize the platform specific string and language\r
// Setup some platform policy here\r
//\r
PlatformBdsPolicyBehavior (&DriverOptionList, &BootOptionList, ProcessCapsules, BdsMemoryTest);\r
- PERF_END (0, "PlatformBds", "BDS", 0);\r
+ PERF_END (NULL, "PlatformBds", "BDS", 0);\r
\r
//\r
// BDS select the boot device to load OS\r