diff options
Diffstat (limited to 'MdeModulePkg/Library/UefiBootManagerLib')
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 837 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c | 468 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmConnect.c | 44 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c | 235 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c | 238 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c | 480 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c | 534 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c | 137 | ||||
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h | 123 |
9 files changed, 1650 insertions, 1446 deletions
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index a7261d64f0..962892d38f 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h"
-EFI_RAM_DISK_PROTOCOL *mRamDisk = NULL;
+EFI_RAM_DISK_PROTOCOL *mRamDisk = NULL;
EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION mBmRefreshLegacyBootOption = NULL;
EFI_BOOT_MANAGER_LEGACY_BOOT mBmLegacyBoot = NULL;
@@ -19,8 +19,12 @@ EFI_BOOT_MANAGER_LEGACY_BOOT mBmLegacyBoot = NULL; /// This GUID is used for an EFI Variable that stores the front device pathes
/// for a partial device path that starts with the HD node.
///
-EFI_GUID mBmHardDriveBootVariableGuid = { 0xfab7e9e1, 0x39dd, 0x4f2b, { 0x84, 0x08, 0xe2, 0x0e, 0x90, 0x6c, 0xb6, 0xde } };
-EFI_GUID mBmAutoCreateBootOptionGuid = { 0x8108ac4e, 0x9f11, 0x4d59, { 0x85, 0x0e, 0xe2, 0x1a, 0x52, 0x2c, 0x59, 0xb2 } };
+EFI_GUID mBmHardDriveBootVariableGuid = {
+ 0xfab7e9e1, 0x39dd, 0x4f2b, { 0x84, 0x08, 0xe2, 0x0e, 0x90, 0x6c, 0xb6, 0xde }
+};
+EFI_GUID mBmAutoCreateBootOptionGuid = {
+ 0x8108ac4e, 0x9f11, 0x4d59, { 0x85, 0x0e, 0xe2, 0x1a, 0x52, 0x2c, 0x59, 0xb2 }
+};
/**
@@ -40,9 +44,9 @@ BmEndOfBdsPerfCode ( //
// Record the performance data for End of BDS
//
- PERF_CROSSMODULE_END("BDS");
+ PERF_CROSSMODULE_END ("BDS");
- return ;
+ return;
}
/**
@@ -54,8 +58,8 @@ BmEndOfBdsPerfCode ( VOID
EFIAPI
EfiBootManagerRegisterLegacyBootSupport (
- EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION RefreshLegacyBootOption,
- EFI_BOOT_MANAGER_LEGACY_BOOT LegacyBoot
+ EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION RefreshLegacyBootOption,
+ EFI_BOOT_MANAGER_LEGACY_BOOT LegacyBoot
)
{
mBmRefreshLegacyBootOption = RefreshLegacyBootOption;
@@ -72,12 +76,13 @@ EfiBootManagerRegisterLegacyBootSupport ( **/
BOOLEAN
BmIsAutoCreateBootOption (
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
)
{
if ((BootOption->OptionalDataSize == sizeof (EFI_GUID)) &&
- CompareGuid ((EFI_GUID *) BootOption->OptionalData, &mBmAutoCreateBootOptionGuid)
- ) {
+ CompareGuid ((EFI_GUID *)BootOption->OptionalData, &mBmAutoCreateBootOptionGuid)
+ )
+ {
return TRUE;
} else {
return FALSE;
@@ -94,16 +99,16 @@ BmIsAutoCreateBootOption ( **/
UINTN
BmFindBootOptionInVariable (
- IN EFI_BOOT_MANAGER_LOAD_OPTION *OptionToFind
+ IN EFI_BOOT_MANAGER_LOAD_OPTION *OptionToFind
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_LOAD_OPTION BootOption;
- UINTN OptionNumber;
- CHAR16 OptionName[BM_OPTION_NAME_LEN];
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
- UINTN BootOptionCount;
- UINTN Index;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION BootOption;
+ UINTN OptionNumber;
+ CHAR16 OptionName[BM_OPTION_NAME_LEN];
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN BootOptionCount;
+ UINTN Index;
OptionNumber = LoadOptionNumberUnassigned;
@@ -112,8 +117,11 @@ BmFindBootOptionInVariable ( //
if (OptionToFind->OptionNumber != LoadOptionNumberUnassigned) {
UnicodeSPrint (
- OptionName, sizeof (OptionName), L"%s%04x",
- mBmLoadOptionName[OptionToFind->OptionType], OptionToFind->OptionNumber
+ OptionName,
+ sizeof (OptionName),
+ L"%s%04x",
+ mBmLoadOptionName[OptionToFind->OptionType],
+ OptionToFind->OptionNumber
);
Status = EfiBootManagerVariableToLoadOption (OptionName, &BootOption);
@@ -124,9 +132,11 @@ BmFindBootOptionInVariable ( (CompareMem (OptionToFind->FilePath, BootOption.FilePath, GetDevicePathSize (OptionToFind->FilePath)) == 0) &&
(OptionToFind->OptionalDataSize == BootOption.OptionalDataSize) &&
(CompareMem (OptionToFind->OptionalData, BootOption.OptionalData, OptionToFind->OptionalDataSize) == 0)
- ) {
+ )
+ {
OptionNumber = OptionToFind->OptionNumber;
}
+
EfiBootManagerFreeLoadOption (&BootOption);
}
}
@@ -158,24 +168,24 @@ BmFindBootOptionInVariable ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmAdjustFvFilePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
)
{
- EFI_STATUS Status;
- UINTN Index;
- EFI_DEVICE_PATH_PROTOCOL *FvFileNode;
- EFI_HANDLE FvHandle;
- EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
- UINTN FvHandleCount;
- EFI_HANDLE *FvHandles;
- EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
- EFI_DEVICE_PATH_PROTOCOL *FullPath;
+ EFI_STATUS Status;
+ UINTN Index;
+ EFI_DEVICE_PATH_PROTOCOL *FvFileNode;
+ EFI_HANDLE FvHandle;
+ EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
+ UINTN FvHandleCount;
+ EFI_HANDLE *FvHandles;
+ EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *FullPath;
//
// Get the file buffer by using the exactly FilePath.
//
FvFileNode = FilePath;
- Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid, &FvFileNode, &FvHandle);
+ Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid, &FvFileNode, &FvHandle);
if (!EFI_ERROR (Status)) {
return DuplicateDevicePath (FilePath);
}
@@ -195,10 +205,10 @@ BmAdjustFvFilePath ( gBS->HandleProtocol (
gImageHandle,
&gEfiLoadedImageProtocolGuid,
- (VOID **) &LoadedImage
+ (VOID **)&LoadedImage
);
NewDevicePath = AppendDevicePathNode (DevicePathFromHandle (LoadedImage->DeviceHandle), FvFileNode);
- FullPath = BmAdjustFvFilePath (NewDevicePath);
+ FullPath = BmAdjustFvFilePath (NewDevicePath);
FreePool (NewDevicePath);
if (FullPath != NULL) {
return FullPath;
@@ -221,8 +231,9 @@ BmAdjustFvFilePath ( //
continue;
}
+
NewDevicePath = AppendDevicePathNode (DevicePathFromHandle (FvHandles[Index]), FvFileNode);
- FullPath = BmAdjustFvFilePath (NewDevicePath);
+ FullPath = BmAdjustFvFilePath (NewDevicePath);
FreePool (NewDevicePath);
if (FullPath != NULL) {
break;
@@ -232,6 +243,7 @@ BmAdjustFvFilePath ( if (FvHandles != NULL) {
FreePool (FvHandles);
}
+
return FullPath;
}
@@ -247,14 +259,14 @@ BmAdjustFvFilePath ( **/
BOOLEAN
BmIsFvFilePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
- Node = DevicePath;
+ Node = DevicePath;
Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid, &Node, &Handle);
if (!EFI_ERROR (Status)) {
return TRUE;
@@ -266,6 +278,7 @@ BmIsFvFilePath ( return IsDevicePathEnd (NextDevicePathNode (DevicePath));
}
}
+
return FALSE;
}
@@ -282,8 +295,8 @@ BmIsFvFilePath ( **/
BOOLEAN
BmMatchUsbClass (
- IN EFI_USB_IO_PROTOCOL *UsbIo,
- IN USB_CLASS_DEVICE_PATH *UsbClass
+ IN EFI_USB_IO_PROTOCOL *UsbIo,
+ IN USB_CLASS_DEVICE_PATH *UsbClass
)
{
EFI_STATUS Status;
@@ -294,7 +307,8 @@ BmMatchUsbClass ( UINT8 DeviceProtocol;
if ((DevicePathType (UsbClass) != MESSAGING_DEVICE_PATH) ||
- (DevicePathSubType (UsbClass) != MSG_USB_CLASS_DP)){
+ (DevicePathSubType (UsbClass) != MSG_USB_CLASS_DP))
+ {
return FALSE;
}
@@ -307,12 +321,14 @@ BmMatchUsbClass ( }
if ((UsbClass->VendorId != 0xffff) &&
- (UsbClass->VendorId != DevDesc.IdVendor)) {
+ (UsbClass->VendorId != DevDesc.IdVendor))
+ {
return FALSE;
}
if ((UsbClass->ProductId != 0xffff) &&
- (UsbClass->ProductId != DevDesc.IdProduct)) {
+ (UsbClass->ProductId != DevDesc.IdProduct))
+ {
return FALSE;
}
@@ -338,17 +354,20 @@ BmMatchUsbClass ( // Check Class, SubClass and Protocol.
//
if ((UsbClass->DeviceClass != 0xff) &&
- (UsbClass->DeviceClass != DeviceClass)) {
+ (UsbClass->DeviceClass != DeviceClass))
+ {
return FALSE;
}
if ((UsbClass->DeviceSubClass != 0xff) &&
- (UsbClass->DeviceSubClass != DeviceSubClass)) {
+ (UsbClass->DeviceSubClass != DeviceSubClass))
+ {
return FALSE;
}
if ((UsbClass->DeviceProtocol != 0xff) &&
- (UsbClass->DeviceProtocol != DeviceProtocol)) {
+ (UsbClass->DeviceProtocol != DeviceProtocol))
+ {
return FALSE;
}
@@ -368,23 +387,24 @@ BmMatchUsbClass ( **/
BOOLEAN
BmMatchUsbWwid (
- IN EFI_USB_IO_PROTOCOL *UsbIo,
- IN USB_WWID_DEVICE_PATH *UsbWwid
+ IN EFI_USB_IO_PROTOCOL *UsbIo,
+ IN USB_WWID_DEVICE_PATH *UsbWwid
)
{
- EFI_STATUS Status;
- EFI_USB_DEVICE_DESCRIPTOR DevDesc;
- EFI_USB_INTERFACE_DESCRIPTOR IfDesc;
- UINT16 *LangIdTable;
- UINT16 TableSize;
- UINT16 Index;
- CHAR16 *CompareStr;
- UINTN CompareLen;
- CHAR16 *SerialNumberStr;
- UINTN Length;
+ EFI_STATUS Status;
+ EFI_USB_DEVICE_DESCRIPTOR DevDesc;
+ EFI_USB_INTERFACE_DESCRIPTOR IfDesc;
+ UINT16 *LangIdTable;
+ UINT16 TableSize;
+ UINT16 Index;
+ CHAR16 *CompareStr;
+ UINTN CompareLen;
+ CHAR16 *SerialNumberStr;
+ UINTN Length;
if ((DevicePathType (UsbWwid) != MESSAGING_DEVICE_PATH) ||
- (DevicePathSubType (UsbWwid) != MSG_USB_WWID_DP)) {
+ (DevicePathSubType (UsbWwid) != MSG_USB_WWID_DP))
+ {
return FALSE;
}
@@ -395,8 +415,10 @@ BmMatchUsbWwid ( if (EFI_ERROR (Status)) {
return FALSE;
}
+
if ((DevDesc.IdVendor != UsbWwid->VendorId) ||
- (DevDesc.IdProduct != UsbWwid->ProductId)) {
+ (DevDesc.IdProduct != UsbWwid->ProductId))
+ {
return FALSE;
}
@@ -407,6 +429,7 @@ BmMatchUsbWwid ( if (EFI_ERROR (Status)) {
return FALSE;
}
+
if (IfDesc.InterfaceNumber != UsbWwid->InterfaceNumber) {
return FALSE;
}
@@ -421,9 +444,9 @@ BmMatchUsbWwid ( //
// Get all supported languages.
//
- TableSize = 0;
+ TableSize = 0;
LangIdTable = NULL;
- Status = UsbIo->UsbGetSupportedLanguages (UsbIo, &LangIdTable, &TableSize);
+ Status = UsbIo->UsbGetSupportedLanguages (UsbIo, &LangIdTable, &TableSize);
if (EFI_ERROR (Status) || (TableSize == 0) || (LangIdTable == NULL)) {
return FALSE;
}
@@ -431,7 +454,7 @@ BmMatchUsbWwid ( //
// Serial number in USB WWID device path is the last 64-or-less UTF-16 characters.
//
- CompareStr = (CHAR16 *) (UINTN) (UsbWwid + 1);
+ CompareStr = (CHAR16 *)(UINTN)(UsbWwid + 1);
CompareLen = (DevicePathNodeLength (UsbWwid) - sizeof (USB_WWID_DEVICE_PATH)) / sizeof (CHAR16);
if (CompareStr[CompareLen - 1] == L'\0') {
CompareLen--;
@@ -442,19 +465,20 @@ BmMatchUsbWwid ( //
for (Index = 0; Index < TableSize / sizeof (UINT16); Index++) {
SerialNumberStr = NULL;
- Status = UsbIo->UsbGetStringDescriptor (
- UsbIo,
- LangIdTable[Index],
- DevDesc.StrSerialNumber,
- &SerialNumberStr
- );
+ Status = UsbIo->UsbGetStringDescriptor (
+ UsbIo,
+ LangIdTable[Index],
+ DevDesc.StrSerialNumber,
+ &SerialNumberStr
+ );
if (EFI_ERROR (Status) || (SerialNumberStr == NULL)) {
continue;
}
Length = StrLen (SerialNumberStr);
if ((Length >= CompareLen) &&
- (CompareMem (SerialNumberStr + Length - CompareLen, CompareStr, CompareLen * sizeof (CHAR16)) == 0)) {
+ (CompareMem (SerialNumberStr + Length - CompareLen, CompareStr, CompareLen * sizeof (CHAR16)) == 0))
+ {
FreePool (SerialNumberStr);
return TRUE;
}
@@ -515,28 +539,28 @@ BmFindUsbDevice ( //
// Get the Usb IO interface.
//
- Status = gBS->HandleProtocol(
+ Status = gBS->HandleProtocol (
UsbIoHandles[Index],
&gEfiUsbIoProtocolGuid,
- (VOID **) &UsbIo
+ (VOID **)&UsbIo
);
UsbIoDevicePath = DevicePathFromHandle (UsbIoHandles[Index]);
Matched = FALSE;
if (!EFI_ERROR (Status) && (UsbIoDevicePath != NULL)) {
-
//
// Compare starting part of UsbIoHandle's device path with ParentDevicePath.
//
if (CompareMem (UsbIoDevicePath, DevicePath, ParentDevicePathSize) == 0) {
- if (BmMatchUsbClass (UsbIo, (USB_CLASS_DEVICE_PATH *) ((UINTN) DevicePath + ParentDevicePathSize)) ||
- BmMatchUsbWwid (UsbIo, (USB_WWID_DEVICE_PATH *) ((UINTN) DevicePath + ParentDevicePathSize))) {
+ if (BmMatchUsbClass (UsbIo, (USB_CLASS_DEVICE_PATH *)((UINTN)DevicePath + ParentDevicePathSize)) ||
+ BmMatchUsbWwid (UsbIo, (USB_WWID_DEVICE_PATH *)((UINTN)DevicePath + ParentDevicePathSize)))
+ {
Matched = TRUE;
}
}
}
if (!Matched) {
- (*UsbIoHandleCount) --;
+ (*UsbIoHandleCount)--;
CopyMem (&UsbIoHandles[Index], &UsbIoHandles[Index + 1], (*UsbIoHandleCount - Index) * sizeof (EFI_HANDLE));
} else {
Index++;
@@ -579,19 +603,19 @@ BmExpandUsbDevicePath ( IN EFI_DEVICE_PATH_PROTOCOL *ShortformNode
)
{
- UINTN ParentDevicePathSize;
- EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
- EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN Index;
- BOOLEAN GetNext;
+ UINTN ParentDevicePathSize;
+ EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN Index;
+ BOOLEAN GetNext;
- NextFullPath = NULL;
- GetNext = (BOOLEAN)(FullPath == NULL);
- ParentDevicePathSize = (UINTN) ShortformNode - (UINTN) FilePath;
- RemainingDevicePath = NextDevicePathNode (ShortformNode);
- Handles = BmFindUsbDevice (FilePath, ParentDevicePathSize, &HandleCount);
+ NextFullPath = NULL;
+ GetNext = (BOOLEAN)(FullPath == NULL);
+ ParentDevicePathSize = (UINTN)ShortformNode - (UINTN)FilePath;
+ RemainingDevicePath = NextDevicePathNode (ShortformNode);
+ Handles = BmFindUsbDevice (FilePath, ParentDevicePathSize, &HandleCount);
for (Index = 0; Index < HandleCount; Index++) {
FilePath = AppendDevicePath (DevicePathFromHandle (Handles[Index]), RemainingDevicePath);
@@ -601,6 +625,7 @@ BmExpandUsbDevicePath ( //
continue;
}
+
NextFullPath = BmGetNextLoadOptionDevicePath (FilePath, NULL);
FreePool (FilePath);
if (NextFullPath == NULL) {
@@ -609,6 +634,7 @@ BmExpandUsbDevicePath ( //
continue;
}
+
if (GetNext) {
break;
} else {
@@ -638,27 +664,27 @@ BmExpandUsbDevicePath ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandFileDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
)
{
- EFI_STATUS Status;
- UINTN Index;
- UINTN HandleCount;
- EFI_HANDLE *Handles;
- EFI_BLOCK_IO_PROTOCOL *BlockIo;
- UINTN MediaType;
- EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
- BOOLEAN GetNext;
+ EFI_STATUS Status;
+ UINTN Index;
+ UINTN HandleCount;
+ EFI_HANDLE *Handles;
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;
+ UINTN MediaType;
+ EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
+ BOOLEAN GetNext;
EfiBootManagerConnectAll ();
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSimpleFileSystemProtocolGuid, NULL, &HandleCount, &Handles);
if (EFI_ERROR (Status)) {
HandleCount = 0;
- Handles = NULL;
+ Handles = NULL;
}
- GetNext = (BOOLEAN)(FullPath == NULL);
+ GetNext = (BOOLEAN)(FullPath == NULL);
NextFullPath = NULL;
//
// Enumerate all removable media devices followed by all fixed media devices,
@@ -666,14 +692,16 @@ BmExpandFileDevicePath ( //
for (MediaType = 0; MediaType < 3; MediaType++) {
for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->HandleProtocol (Handles[Index], &gEfiBlockIoProtocolGuid, (VOID *) &BlockIo);
+ Status = gBS->HandleProtocol (Handles[Index], &gEfiBlockIoProtocolGuid, (VOID *)&BlockIo);
if (EFI_ERROR (Status)) {
BlockIo = NULL;
}
- if ((MediaType == 0 && BlockIo != NULL && BlockIo->Media->RemovableMedia) ||
- (MediaType == 1 && BlockIo != NULL && !BlockIo->Media->RemovableMedia) ||
- (MediaType == 2 && BlockIo == NULL)
- ) {
+
+ if (((MediaType == 0) && (BlockIo != NULL) && BlockIo->Media->RemovableMedia) ||
+ ((MediaType == 1) && (BlockIo != NULL) && !BlockIo->Media->RemovableMedia) ||
+ ((MediaType == 2) && (BlockIo == NULL))
+ )
+ {
NextFullPath = AppendDevicePath (DevicePathFromHandle (Handles[Index]), FilePath);
if (GetNext) {
break;
@@ -684,6 +712,7 @@ BmExpandFileDevicePath ( }
}
}
+
if (NextFullPath != NULL) {
break;
}
@@ -709,27 +738,27 @@ BmExpandFileDevicePath ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandUriDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
)
{
- EFI_STATUS Status;
- UINTN Index;
- UINTN HandleCount;
- EFI_HANDLE *Handles;
- EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
- EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
- BOOLEAN GetNext;
+ EFI_STATUS Status;
+ UINTN Index;
+ UINTN HandleCount;
+ EFI_HANDLE *Handles;
+ EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
+ EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
+ BOOLEAN GetNext;
EfiBootManagerConnectAll ();
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiLoadFileProtocolGuid, NULL, &HandleCount, &Handles);
if (EFI_ERROR (Status)) {
HandleCount = 0;
- Handles = NULL;
+ Handles = NULL;
}
NextFullPath = NULL;
- GetNext = (BOOLEAN)(FullPath == NULL);
+ GetNext = (BOOLEAN)(FullPath == NULL);
for (Index = 0; Index < HandleCount; Index++) {
NextFullPath = BmExpandLoadFile (Handles[Index], FilePath);
@@ -749,6 +778,7 @@ BmExpandUriDevicePath ( BmDestroyRamDisk (RamDiskDevicePath);
FreePool (RamDiskDevicePath);
}
+
FreePool (NextFullPath);
NextFullPath = NULL;
}
@@ -769,15 +799,15 @@ BmExpandUriDevicePath ( **/
VOID
BmCachePartitionDevicePath (
- IN OUT EFI_DEVICE_PATH_PROTOCOL **CachedDevicePath,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **CachedDevicePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
- UINTN Count;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ UINTN Count;
if (BmMatchDevicePaths (*CachedDevicePath, DevicePath)) {
- TempDevicePath = *CachedDevicePath;
+ TempDevicePath = *CachedDevicePath;
*CachedDevicePath = BmDelPartMatchInstance (*CachedDevicePath, DevicePath);
FreePool (TempDevicePath);
}
@@ -787,7 +817,7 @@ BmCachePartitionDevicePath ( return;
}
- TempDevicePath = *CachedDevicePath;
+ TempDevicePath = *CachedDevicePath;
*CachedDevicePath = AppendDevicePathInstance (DevicePath, *CachedDevicePath);
if (TempDevicePath != NULL) {
FreePool (TempDevicePath);
@@ -797,7 +827,7 @@ BmCachePartitionDevicePath ( // Here limit the device path instance number to 12, which is max number for a system support 3 IDE controller
// If the user try to boot many OS in different HDs or partitions, in theory, the 'HDDP' variable maybe become larger and larger.
//
- Count = 0;
+ Count = 0;
TempDevicePath = *CachedDevicePath;
while (!IsDevicePathEnd (TempDevicePath)) {
TempDevicePath = NextDevicePathNode (TempDevicePath);
@@ -807,6 +837,7 @@ BmCachePartitionDevicePath ( while (!IsDevicePathEndType (TempDevicePath)) {
TempDevicePath = NextDevicePathNode (TempDevicePath);
}
+
Count++;
//
// If the CachedDevicePath variable contain too much instance, only remain 12 instances.
@@ -855,7 +886,7 @@ BmExpandPartitionDevicePath ( // If exist, search the front path which point to partition node in the variable instants.
// If fail to find or 'HDDP' not exist, reconnect all and search in all system
//
- GetVariable2 (L"HDDP", &mBmHardDriveBootVariableGuid, (VOID **) &CachedDevicePath, &CachedDevicePathSize);
+ GetVariable2 (L"HDDP", &mBmHardDriveBootVariableGuid, (VOID **)&CachedDevicePath, &CachedDevicePathSize);
//
// Delete the invalid 'HDDP' variable.
@@ -863,28 +894,28 @@ BmExpandPartitionDevicePath ( if ((CachedDevicePath != NULL) && !IsDevicePathValid (CachedDevicePath, CachedDevicePathSize)) {
FreePool (CachedDevicePath);
CachedDevicePath = NULL;
- Status = gRT->SetVariable (
- L"HDDP",
- &mBmHardDriveBootVariableGuid,
- 0,
- 0,
- NULL
- );
+ Status = gRT->SetVariable (
+ L"HDDP",
+ &mBmHardDriveBootVariableGuid,
+ 0,
+ 0,
+ NULL
+ );
ASSERT_EFI_ERROR (Status);
}
FullPath = NULL;
if (CachedDevicePath != NULL) {
TempNewDevicePath = CachedDevicePath;
- NeedAdjust = FALSE;
+ NeedAdjust = FALSE;
do {
//
// Check every instance of the variable
// First, check whether the instance contain the partition node, which is needed for distinguishing multi
// partial partition boot option. Second, check whether the instance could be connected.
//
- Instance = GetNextDevicePathInstance (&TempNewDevicePath, &Size);
- if (BmMatchPartitionDevicePathNode (Instance, (HARDDRIVE_DEVICE_PATH *) FilePath)) {
+ Instance = GetNextDevicePathInstance (&TempNewDevicePath, &Size);
+ if (BmMatchPartitionDevicePathNode (Instance, (HARDDRIVE_DEVICE_PATH *)FilePath)) {
//
// Connect the device path instance, the device path point to hard drive media device path node
// e.g. ACPI() /PCI()/ATA()/Partition()
@@ -916,12 +947,12 @@ BmExpandPartitionDevicePath ( // Failing to save only impacts performance next time expanding the short-form device path
//
Status = gRT->SetVariable (
- L"HDDP",
- &mBmHardDriveBootVariableGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- GetDevicePathSize (CachedDevicePath),
- CachedDevicePath
- );
+ L"HDDP",
+ &mBmHardDriveBootVariableGuid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+ GetDevicePathSize (CachedDevicePath),
+ CachedDevicePath
+ );
}
FreePool (Instance);
@@ -930,11 +961,12 @@ BmExpandPartitionDevicePath ( }
}
}
+
//
// Come here means the first instance is not matched
//
NeedAdjust = TRUE;
- FreePool(Instance);
+ FreePool (Instance);
} while (TempNewDevicePath != NULL);
}
@@ -948,6 +980,7 @@ BmExpandPartitionDevicePath ( BlockIoHandleCount = 0;
BlockIoBuffer = NULL;
}
+
//
// Loop through all the device handles that support the BLOCK_IO Protocol
//
@@ -957,12 +990,12 @@ BmExpandPartitionDevicePath ( continue;
}
- if (BmMatchPartitionDevicePathNode (BlockIoDevicePath, (HARDDRIVE_DEVICE_PATH *) FilePath)) {
+ if (BmMatchPartitionDevicePathNode (BlockIoDevicePath, (HARDDRIVE_DEVICE_PATH *)FilePath)) {
//
// Find the matched partition device path
//
TempDevicePath = AppendDevicePath (BlockIoDevicePath, NextDevicePathNode (FilePath));
- FullPath = BmGetNextLoadOptionDevicePath (TempDevicePath, NULL);
+ FullPath = BmGetNextLoadOptionDevicePath (TempDevicePath, NULL);
FreePool (TempDevicePath);
if (FullPath != NULL) {
@@ -988,9 +1021,11 @@ BmExpandPartitionDevicePath ( if (CachedDevicePath != NULL) {
FreePool (CachedDevicePath);
}
+
if (BlockIoBuffer != NULL) {
FreePool (BlockIoBuffer);
}
+
return FullPath;
}
@@ -1007,29 +1042,29 @@ BmExpandPartitionDevicePath ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandMediaDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
)
{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- EFI_BLOCK_IO_PROTOCOL *BlockIo;
- VOID *Buffer;
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
- EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
- UINTN Size;
- UINTN TempSize;
- EFI_HANDLE *SimpleFileSystemHandles;
- UINTN NumberSimpleFileSystemHandles;
- UINTN Index;
- BOOLEAN GetNext;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;
+ VOID *Buffer;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *NextFullPath;
+ UINTN Size;
+ UINTN TempSize;
+ EFI_HANDLE *SimpleFileSystemHandles;
+ UINTN NumberSimpleFileSystemHandles;
+ UINTN Index;
+ BOOLEAN GetNext;
GetNext = (BOOLEAN)(FullPath == NULL);
//
// Check whether the device is connected
//
TempDevicePath = DevicePath;
- Status = gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid, &TempDevicePath, &Handle);
+ Status = gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid, &TempDevicePath, &Handle);
if (!EFI_ERROR (Status)) {
ASSERT (IsDevicePathEnd (TempDevicePath));
@@ -1062,20 +1097,21 @@ BmExpandMediaDevicePath ( // returned. After the Block IO protocol is reinstalled, subsequent
// Block IO read/write will success.
//
- Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo);
+ Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **)&BlockIo);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status)) {
return NULL;
}
+
Buffer = AllocatePool (BlockIo->Media->BlockSize);
if (Buffer != NULL) {
BlockIo->ReadBlocks (
- BlockIo,
- BlockIo->Media->MediaId,
- 0,
- BlockIo->Media->BlockSize,
- Buffer
- );
+ BlockIo,
+ BlockIo->Media->MediaId,
+ 0,
+ BlockIo->Media->BlockSize,
+ Buffer
+ );
FreePool (Buffer);
}
@@ -1083,7 +1119,7 @@ BmExpandMediaDevicePath ( // Detect the the default boot file from removable Media
//
NextFullPath = NULL;
- Size = GetDevicePathSize (DevicePath) - END_DEVICE_PATH_LENGTH;
+ Size = GetDevicePathSize (DevicePath) - END_DEVICE_PATH_LENGTH;
gBS->LocateHandleBuffer (
ByProtocol,
&gEfiSimpleFileSystemProtocolGuid,
@@ -1096,7 +1132,7 @@ BmExpandMediaDevicePath ( // Get the device path size of SimpleFileSystem handle
//
TempDevicePath = DevicePathFromHandle (SimpleFileSystemHandles[Index]);
- TempSize = GetDevicePathSize (TempDevicePath) - END_DEVICE_PATH_LENGTH;
+ TempSize = GetDevicePathSize (TempDevicePath) - END_DEVICE_PATH_LENGTH;
//
// Check whether the device path of boot option is part of the SimpleFileSystem handle's device path
//
@@ -1128,13 +1164,14 @@ BmExpandMediaDevicePath ( **/
BOOLEAN
BmMatchHttpBootDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *Left,
- IN EFI_DEVICE_PATH_PROTOCOL *Right
+ IN EFI_DEVICE_PATH_PROTOCOL *Left,
+ IN EFI_DEVICE_PATH_PROTOCOL *Right
)
{
- for (; !IsDevicePathEnd (Left) && !IsDevicePathEnd (Right)
- ; Left = NextDevicePathNode (Left), Right = NextDevicePathNode (Right)
- ) {
+ for ( ; !IsDevicePathEnd (Left) && !IsDevicePathEnd (Right)
+ ; Left = NextDevicePathNode (Left), Right = NextDevicePathNode (Right)
+ )
+ {
if (CompareMem (Left, Right, DevicePathNodeLength (Left)) != 0) {
if ((DevicePathType (Left) != MESSAGING_DEVICE_PATH) || (DevicePathType (Right) != MESSAGING_DEVICE_PATH)) {
return FALSE;
@@ -1151,12 +1188,14 @@ BmMatchHttpBootDevicePath ( if (((DevicePathSubType (Left) != MSG_IPv4_DP) || (DevicePathSubType (Right) != MSG_IPv4_DP)) &&
((DevicePathSubType (Left) != MSG_IPv6_DP) || (DevicePathSubType (Right) != MSG_IPv6_DP)) &&
((DevicePathSubType (Left) != MSG_URI_DP) || (DevicePathSubType (Right) != MSG_URI_DP))
- ) {
+ )
+ {
return FALSE;
}
}
}
- return (BOOLEAN) (IsDevicePathEnd (Left) && IsDevicePathEnd (Right));
+
+ return (BOOLEAN)(IsDevicePathEnd (Left) && IsDevicePathEnd (Right));
}
/**
@@ -1170,16 +1209,16 @@ BmMatchHttpBootDevicePath ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandNetworkFileSystem (
- IN EFI_HANDLE LoadFileHandle,
- OUT EFI_HANDLE *RamDiskHandle
+ IN EFI_HANDLE LoadFileHandle,
+ OUT EFI_HANDLE *RamDiskHandle
)
{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN Index;
- EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN Index;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
Status = gBS->LocateHandleBuffer (
ByProtocol,
@@ -1189,17 +1228,18 @@ BmExpandNetworkFileSystem ( &Handles
);
if (EFI_ERROR (Status)) {
- Handles = NULL;
+ Handles = NULL;
HandleCount = 0;
}
Handle = NULL;
for (Index = 0; Index < HandleCount; Index++) {
- Node = DevicePathFromHandle (Handles[Index]);
+ Node = DevicePathFromHandle (Handles[Index]);
Status = gBS->LocateDevicePath (&gEfiLoadFileProtocolGuid, &Node, &Handle);
if (!EFI_ERROR (Status) &&
(Handle == LoadFileHandle) &&
- (DevicePathType (Node) == MEDIA_DEVICE_PATH) && (DevicePathSubType (Node) == MEDIA_RAM_DISK_DP)) {
+ (DevicePathType (Node) == MEDIA_DEVICE_PATH) && (DevicePathSubType (Node) == MEDIA_RAM_DISK_DP))
+ {
//
// Find the BlockIo instance populated from the LoadFile.
//
@@ -1238,28 +1278,28 @@ BmExpandNetworkFileSystem ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmGetRamDiskDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
)
{
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
- EFI_DEVICE_PATH_PROTOCOL *Node;
- EFI_HANDLE Handle;
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_HANDLE Handle;
- Node = FilePath;
+ Node = FilePath;
Status = gBS->LocateDevicePath (&gEfiLoadFileProtocolGuid, &Node, &Handle);
if (!EFI_ERROR (Status) &&
(DevicePathType (Node) == MEDIA_DEVICE_PATH) &&
(DevicePathSubType (Node) == MEDIA_RAM_DISK_DP)
- ) {
-
+ )
+ {
//
// Construct the device path pointing to RAM Disk
//
- Node = NextDevicePathNode (Node);
+ Node = NextDevicePathNode (Node);
RamDiskDevicePath = DuplicateDevicePath (FilePath);
ASSERT (RamDiskDevicePath != NULL);
- SetDevicePathEndNode ((VOID *) ((UINTN) RamDiskDevicePath + ((UINTN) Node - (UINTN) FilePath)));
+ SetDevicePathEndNode ((VOID *)((UINTN)RamDiskDevicePath + ((UINTN)Node - (UINTN)FilePath)));
return RamDiskDevicePath;
}
@@ -1276,15 +1316,14 @@ BmGetRamDiskDevicePath ( **/
VOID *
BmGetRamDiskMemoryInfo (
- IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath,
- OUT UINTN *RamDiskSizeInPages
+ IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath,
+ OUT UINTN *RamDiskSizeInPages
)
{
-
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- UINT64 StartingAddr;
- UINT64 EndingAddr;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ UINT64 StartingAddr;
+ UINT64 EndingAddr;
ASSERT (RamDiskDevicePath != NULL);
@@ -1295,12 +1334,14 @@ BmGetRamDiskMemoryInfo ( //
Status = gBS->LocateDevicePath (&gEfiLoadFileProtocolGuid, &RamDiskDevicePath, &Handle);
ASSERT_EFI_ERROR (Status);
- ASSERT ((DevicePathType (RamDiskDevicePath) == MEDIA_DEVICE_PATH) &&
- (DevicePathSubType (RamDiskDevicePath) == MEDIA_RAM_DISK_DP));
- StartingAddr = ReadUnaligned64 ((UINT64 *) ((MEDIA_RAM_DISK_DEVICE_PATH *) RamDiskDevicePath)->StartingAddr);
- EndingAddr = ReadUnaligned64 ((UINT64 *) ((MEDIA_RAM_DISK_DEVICE_PATH *) RamDiskDevicePath)->EndingAddr);
- *RamDiskSizeInPages = EFI_SIZE_TO_PAGES ((UINTN) (EndingAddr - StartingAddr + 1));
- return (VOID *) (UINTN) StartingAddr;
+ ASSERT (
+ (DevicePathType (RamDiskDevicePath) == MEDIA_DEVICE_PATH) &&
+ (DevicePathSubType (RamDiskDevicePath) == MEDIA_RAM_DISK_DP)
+ );
+ StartingAddr = ReadUnaligned64 ((UINT64 *)((MEDIA_RAM_DISK_DEVICE_PATH *)RamDiskDevicePath)->StartingAddr);
+ EndingAddr = ReadUnaligned64 ((UINT64 *)((MEDIA_RAM_DISK_DEVICE_PATH *)RamDiskDevicePath)->EndingAddr);
+ *RamDiskSizeInPages = EFI_SIZE_TO_PAGES ((UINTN)(EndingAddr - StartingAddr + 1));
+ return (VOID *)(UINTN)StartingAddr;
}
/**
@@ -1314,12 +1355,12 @@ BmGetRamDiskMemoryInfo ( **/
VOID
BmDestroyRamDisk (
- IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath
)
{
- EFI_STATUS Status;
- VOID *RamDiskBuffer;
- UINTN RamDiskSizeInPages;
+ EFI_STATUS Status;
+ VOID *RamDiskBuffer;
+ UINTN RamDiskSizeInPages;
ASSERT (RamDiskDevicePath != NULL);
@@ -1329,9 +1370,10 @@ BmDestroyRamDisk ( // Destroy RAM Disk.
//
if (mRamDisk == NULL) {
- Status = gBS->LocateProtocol (&gEfiRamDiskProtocolGuid, NULL, (VOID *) &mRamDisk);
+ Status = gBS->LocateProtocol (&gEfiRamDiskProtocolGuid, NULL, (VOID *)&mRamDisk);
ASSERT_EFI_ERROR (Status);
}
+
Status = mRamDisk->Unregister (RamDiskDevicePath);
ASSERT_EFI_ERROR (Status);
FreePages (RamDiskBuffer, RamDiskSizeInPages);
@@ -1347,21 +1389,21 @@ BmDestroyRamDisk ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandLoadFile (
- IN EFI_HANDLE LoadFileHandle,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_HANDLE LoadFileHandle,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
)
{
- EFI_STATUS Status;
- EFI_LOAD_FILE_PROTOCOL *LoadFile;
- VOID *FileBuffer;
- EFI_HANDLE RamDiskHandle;
- UINTN BufferSize;
- EFI_DEVICE_PATH_PROTOCOL *FullPath;
+ EFI_STATUS Status;
+ EFI_LOAD_FILE_PROTOCOL *LoadFile;
+ VOID *FileBuffer;
+ EFI_HANDLE RamDiskHandle;
+ UINTN BufferSize;
+ EFI_DEVICE_PATH_PROTOCOL *FullPath;
Status = gBS->OpenProtocol (
LoadFileHandle,
&gEfiLoadFileProtocolGuid,
- (VOID **) &LoadFile,
+ (VOID **)&LoadFile,
gImageHandle,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
@@ -1370,7 +1412,7 @@ BmExpandLoadFile ( FileBuffer = NULL;
BufferSize = 0;
- Status = LoadFile->LoadFile (LoadFile, FilePath, TRUE, &BufferSize, FileBuffer);
+ Status = LoadFile->LoadFile (LoadFile, FilePath, TRUE, &BufferSize, FileBuffer);
if ((Status != EFI_WARN_FILE_SYSTEM) && (Status != EFI_BUFFER_TOO_SMALL)) {
return NULL;
}
@@ -1388,35 +1430,38 @@ BmExpandLoadFile ( FileBuffer = AllocateReservedPages (EFI_SIZE_TO_PAGES (BufferSize));
if (FileBuffer == NULL) {
DEBUG_CODE_BEGIN ();
- EFI_DEVICE_PATH *LoadFilePath;
- CHAR16 *LoadFileText;
- CHAR16 *FileText;
+ EFI_DEVICE_PATH *LoadFilePath;
+ CHAR16 *LoadFileText;
+ CHAR16 *FileText;
+
+ LoadFilePath = DevicePathFromHandle (LoadFileHandle);
+ if (LoadFilePath == NULL) {
+ LoadFileText = NULL;
+ } else {
+ LoadFileText = ConvertDevicePathToText (LoadFilePath, FALSE, FALSE);
+ }
+
+ FileText = ConvertDevicePathToText (FilePath, FALSE, FALSE);
+
+ DEBUG ((
+ DEBUG_ERROR,
+ "%a:%a: failed to allocate reserved pages: "
+ "BufferSize=%Lu LoadFile=\"%s\" FilePath=\"%s\"\n",
+ gEfiCallerBaseName,
+ __FUNCTION__,
+ (UINT64)BufferSize,
+ LoadFileText,
+ FileText
+ ));
+
+ if (FileText != NULL) {
+ FreePool (FileText);
+ }
+
+ if (LoadFileText != NULL) {
+ FreePool (LoadFileText);
+ }
- LoadFilePath = DevicePathFromHandle (LoadFileHandle);
- if (LoadFilePath == NULL) {
- LoadFileText = NULL;
- } else {
- LoadFileText = ConvertDevicePathToText (LoadFilePath, FALSE, FALSE);
- }
- FileText = ConvertDevicePathToText (FilePath, FALSE, FALSE);
-
- DEBUG ((
- DEBUG_ERROR,
- "%a:%a: failed to allocate reserved pages: "
- "BufferSize=%Lu LoadFile=\"%s\" FilePath=\"%s\"\n",
- gEfiCallerBaseName,
- __FUNCTION__,
- (UINT64)BufferSize,
- LoadFileText,
- FileText
- ));
-
- if (FileText != NULL) {
- FreePool (FileText);
- }
- if (LoadFileText != NULL) {
- FreePool (LoadFileText);
- }
DEBUG_CODE_END ();
return NULL;
}
@@ -1459,20 +1504,20 @@ BmExpandLoadFile ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandLoadFiles (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
)
{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN Index;
- EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN Index;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
//
// Get file buffer from load file instance.
//
- Node = FilePath;
+ Node = FilePath;
Status = gBS->LocateDevicePath (&gEfiLoadFileProtocolGuid, &Node, &Handle);
if (!EFI_ERROR (Status) && IsDevicePathEnd (Node)) {
//
@@ -1494,15 +1539,17 @@ BmExpandLoadFiles ( &Handles
);
if (EFI_ERROR (Status)) {
- Handles = NULL;
+ Handles = NULL;
HandleCount = 0;
}
+
for (Index = 0; Index < HandleCount; Index++) {
if (BmMatchHttpBootDevicePath (DevicePathFromHandle (Handles[Index]), FilePath)) {
Handle = Handles[Index];
break;
}
}
+
if (Handles != NULL) {
FreePool (Handles);
}
@@ -1530,9 +1577,9 @@ BmExpandLoadFiles ( VOID *
EFIAPI
EfiBootManagerGetLoadOptionBuffer (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
- OUT UINTN *FileSize
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
+ OUT UINTN *FileSize
)
{
*FullPath = NULL;
@@ -1557,20 +1604,20 @@ EfiBootManagerGetLoadOptionBuffer ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmGetNextLoadOptionDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
)
{
- EFI_HANDLE Handle;
- EFI_DEVICE_PATH_PROTOCOL *Node;
- EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_STATUS Status;
ASSERT (FilePath != NULL);
//
// Boot from media device by adding a default file name \EFI\BOOT\BOOT{machine type short-name}.EFI
//
- Node = FilePath;
+ Node = FilePath;
Status = gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid, &Node, &Handle);
if (EFI_ERROR (Status)) {
Status = gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &Node, &Handle);
@@ -1584,7 +1631,8 @@ BmGetNextLoadOptionDevicePath ( // Expand the short-form device path to full device path
//
if ((DevicePathType (FilePath) == MEDIA_DEVICE_PATH) &&
- (DevicePathSubType (FilePath) == MEDIA_HARDDRIVE_DP)) {
+ (DevicePathSubType (FilePath) == MEDIA_HARDDRIVE_DP))
+ {
//
// Expand the Harddrive device path
//
@@ -1594,19 +1642,21 @@ BmGetNextLoadOptionDevicePath ( return NULL;
}
} else if ((DevicePathType (FilePath) == MEDIA_DEVICE_PATH) &&
- (DevicePathSubType (FilePath) == MEDIA_FILEPATH_DP)) {
+ (DevicePathSubType (FilePath) == MEDIA_FILEPATH_DP))
+ {
//
// Expand the File-path device path
//
return BmExpandFileDevicePath (FilePath, FullPath);
} else if ((DevicePathType (FilePath) == MESSAGING_DEVICE_PATH) &&
- (DevicePathSubType (FilePath) == MSG_URI_DP)) {
+ (DevicePathSubType (FilePath) == MSG_URI_DP))
+ {
//
// Expand the URI device path
//
return BmExpandUriDevicePath (FilePath, FullPath);
} else {
- Node = FilePath;
+ Node = FilePath;
Status = gBS->LocateDevicePath (&gEfiUsbIoProtocolGuid, &Node, &Handle);
if (EFI_ERROR (Status)) {
//
@@ -1616,7 +1666,8 @@ BmGetNextLoadOptionDevicePath ( //
for (Node = FilePath; !IsDevicePathEnd (Node); Node = NextDevicePathNode (Node)) {
if ((DevicePathType (Node) == MESSAGING_DEVICE_PATH) &&
- ((DevicePathSubType (Node) == MSG_USB_CLASS_DP) || (DevicePathSubType (Node) == MSG_USB_WWID_DP))) {
+ ((DevicePathSubType (Node) == MSG_USB_CLASS_DP) || (DevicePathSubType (Node) == MSG_USB_WWID_DP)))
+ {
break;
}
}
@@ -1633,6 +1684,7 @@ BmGetNextLoadOptionDevicePath ( //
BmConnectUsbShortFormDevicePath (FilePath);
}
+
return BmExpandUsbDevicePath (FilePath, FullPath, Node);
}
}
@@ -1678,16 +1730,16 @@ BmGetNextLoadOptionDevicePath ( **/
BOOLEAN
BmIsBootManagerMenuFilePath (
- EFI_DEVICE_PATH_PROTOCOL *DevicePath
-)
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ )
{
- EFI_HANDLE FvHandle;
- VOID *NameGuid;
- EFI_STATUS Status;
+ EFI_HANDLE FvHandle;
+ VOID *NameGuid;
+ EFI_STATUS Status;
Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid, &DevicePath, &FvHandle);
if (!EFI_ERROR (Status)) {
- NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *) DevicePath);
+ NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevicePath);
if (NameGuid != NULL) {
return CompareGuid (NameGuid, PcdGetPtr (PcdBootManagerMenuFile));
}
@@ -1712,11 +1764,11 @@ BmIsBootManagerMenuFilePath ( **/
VOID
BmReportLoadFailure (
- IN UINT32 ErrorCode,
- IN EFI_STATUS FailureStatus
+ IN UINT32 ErrorCode,
+ IN EFI_STATUS FailureStatus
)
{
- EFI_RETURN_STATUS_EXTENDED_DATA ExtendedData;
+ EFI_RETURN_STATUS_EXTENDED_DATA ExtendedData;
if (!ReportErrorCodeEnabled ()) {
return;
@@ -1764,27 +1816,27 @@ BmReportLoadFailure ( VOID
EFIAPI
EfiBootManagerBoot (
- IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
+ IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
)
{
- EFI_STATUS Status;
- EFI_HANDLE ImageHandle;
- EFI_LOADED_IMAGE_PROTOCOL *ImageInfo;
- UINT16 Uint16;
- UINTN OptionNumber;
- UINTN OriginalOptionNumber;
- EFI_DEVICE_PATH_PROTOCOL *FilePath;
- EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
- VOID *FileBuffer;
- UINTN FileSize;
- EFI_BOOT_LOGO_PROTOCOL *BootLogo;
- EFI_EVENT LegacyBootEvent;
+ EFI_STATUS Status;
+ EFI_HANDLE ImageHandle;
+ EFI_LOADED_IMAGE_PROTOCOL *ImageInfo;
+ UINT16 Uint16;
+ UINTN OptionNumber;
+ UINTN OriginalOptionNumber;
+ EFI_DEVICE_PATH_PROTOCOL *FilePath;
+ EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
+ VOID *FileBuffer;
+ UINTN FileSize;
+ EFI_BOOT_LOGO_PROTOCOL *BootLogo;
+ EFI_EVENT LegacyBootEvent;
if (BootOption == NULL) {
return;
}
- if (BootOption->FilePath == NULL || BootOption->OptionType != LoadOptionTypeBoot) {
+ if ((BootOption->FilePath == NULL) || (BootOption->OptionType != LoadOptionTypeBoot)) {
BootOption->Status = EFI_INVALID_PARAMETER;
return;
}
@@ -1802,21 +1854,21 @@ EfiBootManagerBoot ( OptionNumber = Uint16;
OriginalOptionNumber = BootOption->OptionNumber;
BootOption->OptionNumber = OptionNumber;
- Status = EfiBootManagerLoadOptionToVariable (BootOption);
+ Status = EfiBootManagerLoadOptionToVariable (BootOption);
BootOption->OptionNumber = OriginalOptionNumber;
}
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "[Bds] Failed to create Boot#### for a temporary boot - %r!\n", Status));
BootOption->Status = Status;
- return ;
+ return;
}
}
//
// 2. Set BootCurrent
//
- Uint16 = (UINT16) OptionNumber;
+ Uint16 = (UINT16)OptionNumber;
BmSetVariableAndReportStatusCodeOnError (
L"BootCurrent",
&gEfiGlobalVariableGuid,
@@ -1833,7 +1885,7 @@ EfiBootManagerBoot ( DEBUG ((DEBUG_INFO, "[Bds] Booting Boot Manager Menu.\n"));
BmStopHotkeyService (NULL, NULL);
} else {
- EfiSignalEventReadyToBoot();
+ EfiSignalEventReadyToBoot ();
//
// Report Status Code to indicate ReadyToBoot was signalled
//
@@ -1844,15 +1896,15 @@ EfiBootManagerBoot ( BmRepairAllControllers (0);
}
- PERF_START_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32) OptionNumber);
+ PERF_START_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32)OptionNumber);
//
// 5. Adjust the different type memory page number just before booting
// and save the updated info into the variable for next boot to use
//
BmSetMemoryTypeInformationVariable (
- (BOOLEAN) ((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT)
- );
+ (BOOLEAN)((BootOption->Attributes & LOAD_OPTION_CATEGORY) == LOAD_OPTION_CATEGORY_BOOT)
+ );
//
// 6. Load EFI boot option to ImageHandle
@@ -1863,6 +1915,7 @@ EfiBootManagerBoot ( } else {
DEBUG ((DEBUG_INFO | DEBUG_LOAD, "[Bds]Booting %s\n", BootOption->Description));
}
+
DEBUG_CODE_END ();
ImageHandle = NULL;
@@ -1885,9 +1938,11 @@ EfiBootManagerBoot ( &ImageHandle
);
}
+
if (FileBuffer != NULL) {
FreePool (FileBuffer);
}
+
if (FilePath != NULL) {
FreePool (FilePath);
}
@@ -1902,6 +1957,7 @@ EfiBootManagerBoot ( if (Status == EFI_SECURITY_VIOLATION) {
gBS->UnloadImage (ImageHandle);
}
+
//
// Destroy the RAM disk
//
@@ -1909,6 +1965,7 @@ EfiBootManagerBoot ( BmDestroyRamDisk (RamDiskDevicePath);
FreePool (RamDiskDevicePath);
}
+
//
// Report Status Code with the failure status to indicate that the failure to load boot option
//
@@ -1931,28 +1988,28 @@ EfiBootManagerBoot ( //
// Create an event to be signalled when Legacy Boot occurs to write performance data.
//
- Status = EfiCreateEventLegacyBootEx(
+ Status = EfiCreateEventLegacyBootEx (
TPL_NOTIFY,
BmEndOfBdsPerfCode,
NULL,
&LegacyBootEvent
);
ASSERT_EFI_ERROR (Status);
- );
+ );
mBmLegacyBoot (BootOption);
} else {
BootOption->Status = EFI_UNSUPPORTED;
}
- PERF_END_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32) OptionNumber);
+ PERF_END_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32)OptionNumber);
return;
}
//
// Provide the image with its load options
//
- Status = gBS->HandleProtocol (ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &ImageInfo);
+ Status = gBS->HandleProtocol (ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **)&ImageInfo);
ASSERT_EFI_ERROR (Status);
if (!BmIsAutoCreateBootOption (BootOption)) {
@@ -1975,7 +2032,7 @@ EfiBootManagerBoot ( //
PERF_CODE (
BmEndOfBdsPerfCode (NULL, NULL);
- );
+ );
REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoaderStart));
@@ -1997,8 +2054,8 @@ EfiBootManagerBoot ( //
BmReportLoadFailure (EFI_SW_DXE_BS_EC_BOOT_OPTION_FAILED, Status);
}
- PERF_END_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32) OptionNumber);
+ PERF_END_EX (gImageHandle, "BdsAttempt", NULL, 0, (UINT32)OptionNumber);
//
// Clear the Watchdog Timer after the image returns
@@ -2009,7 +2066,7 @@ EfiBootManagerBoot ( // Set Logo status invalid after trying one boot option
//
BootLogo = NULL;
- Status = gBS->LocateProtocol (&gEfiBootLogoProtocolGuid, NULL, (VOID **) &BootLogo);
+ Status = gBS->LocateProtocol (&gEfiBootLogoProtocolGuid, NULL, (VOID **)&BootLogo);
if (!EFI_ERROR (Status) && (BootLogo != NULL)) {
Status = BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);
ASSERT_EFI_ERROR (Status);
@@ -2047,11 +2104,11 @@ EfiBootManagerBoot ( **/
BOOLEAN
BmMatchPartitionDevicePathNode (
- IN EFI_DEVICE_PATH_PROTOCOL *BlockIoDevicePath,
- IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *BlockIoDevicePath,
+ IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
)
{
- HARDDRIVE_DEVICE_PATH *Node;
+ HARDDRIVE_DEVICE_PATH *Node;
if ((BlockIoDevicePath == NULL) || (HardDriveDevicePath == NULL)) {
return FALSE;
@@ -2063,11 +2120,12 @@ BmMatchPartitionDevicePathNode ( while (!IsDevicePathEnd (BlockIoDevicePath)) {
if ((DevicePathType (BlockIoDevicePath) == MEDIA_DEVICE_PATH) &&
(DevicePathSubType (BlockIoDevicePath) == MEDIA_HARDDRIVE_DP)
- ) {
+ )
+ {
//
// See if the harddrive device path in blockio matches the orig Hard Drive Node
//
- Node = (HARDDRIVE_DEVICE_PATH *) BlockIoDevicePath;
+ Node = (HARDDRIVE_DEVICE_PATH *)BlockIoDevicePath;
//
// Match Signature and PartitionNumber.
@@ -2076,7 +2134,8 @@ BmMatchPartitionDevicePathNode ( if ((Node->PartitionNumber == HardDriveDevicePath->PartitionNumber) &&
(Node->MBRType == HardDriveDevicePath->MBRType) &&
(Node->SignatureType == HardDriveDevicePath->SignatureType) &&
- (CompareMem (Node->Signature, HardDriveDevicePath->Signature, sizeof (Node->Signature)) == 0)) {
+ (CompareMem (Node->Signature, HardDriveDevicePath->Signature, sizeof (Node->Signature)) == 0))
+ {
return TRUE;
}
}
@@ -2106,17 +2165,17 @@ BmMatchPartitionDevicePathNode ( **/
EFI_BOOT_MANAGER_LOAD_OPTION *
BmEnumerateBootOptions (
- UINTN *BootOptionCount
+ UINTN *BootOptionCount
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
- UINTN HandleCount;
- EFI_HANDLE *Handles;
- EFI_BLOCK_IO_PROTOCOL *BlkIo;
- UINTN Removable;
- UINTN Index;
- CHAR16 *Description;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN HandleCount;
+ EFI_HANDLE *Handles;
+ EFI_BLOCK_IO_PROTOCOL *BlkIo;
+ UINTN Removable;
+ UINTN Index;
+ CHAR16 *Description;
ASSERT (BootOptionCount != NULL);
@@ -2139,7 +2198,7 @@ BmEnumerateBootOptions ( Status = gBS->HandleProtocol (
Handles[Index],
&gEfiBlockIoProtocolGuid,
- (VOID **) &BlkIo
+ (VOID **)&BlkIo
);
if (EFI_ERROR (Status)) {
continue;
@@ -2201,14 +2260,15 @@ BmEnumerateBootOptions ( Status = gBS->HandleProtocol (
Handles[Index],
&gEfiBlockIoProtocolGuid,
- (VOID **) &BlkIo
+ (VOID **)&BlkIo
);
- if (!EFI_ERROR (Status)) {
+ if (!EFI_ERROR (Status)) {
//
// Skip if the file system handle supports a BlkIo protocol, which we've handled in above
//
continue;
}
+
Description = BmGetBootDescription (Handles[Index]);
BootOptions = ReallocatePool (
sizeof (EFI_BOOT_MANAGER_LOAD_OPTION) * (*BootOptionCount),
@@ -2292,15 +2352,15 @@ EfiBootManagerRefreshAllBootOption ( VOID
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_LOAD_OPTION *NvBootOptions;
- UINTN NvBootOptionCount;
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
- UINTN BootOptionCount;
- EFI_BOOT_MANAGER_LOAD_OPTION *UpdatedBootOptions;
- UINTN UpdatedBootOptionCount;
- UINTN Index;
- EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL *PlatformBootManager;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION *NvBootOptions;
+ UINTN NvBootOptionCount;
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN BootOptionCount;
+ EFI_BOOT_MANAGER_LOAD_OPTION *UpdatedBootOptions;
+ UINTN UpdatedBootOptionCount;
+ UINTN Index;
+ EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL *PlatformBootManager;
//
// Optionally refresh the legacy boot option
@@ -2309,7 +2369,7 @@ EfiBootManagerRefreshAllBootOption ( mBmRefreshLegacyBootOption ();
}
- BootOptions = BmEnumerateBootOptions (&BootOptionCount);
+ BootOptions = BmEnumerateBootOptions (&BootOptionCount);
//
// Mark the boot option as added by BDS by setting OptionalData to a special GUID
@@ -2322,21 +2382,25 @@ EfiBootManagerRefreshAllBootOption ( //
// Locate Platform Boot Options Protocol
//
- Status = gBS->LocateProtocol (&gEdkiiPlatformBootManagerProtocolGuid,
- NULL,
- (VOID **)&PlatformBootManager);
+ Status = gBS->LocateProtocol (
+ &gEdkiiPlatformBootManagerProtocolGuid,
+ NULL,
+ (VOID **)&PlatformBootManager
+ );
if (!EFI_ERROR (Status)) {
//
// If found, call platform specific refresh to all auto enumerated and NV
// boot options.
//
- Status = PlatformBootManager->RefreshAllBootOptions ((CONST EFI_BOOT_MANAGER_LOAD_OPTION *)BootOptions,
- (CONST UINTN)BootOptionCount,
- &UpdatedBootOptions,
- &UpdatedBootOptionCount);
+ Status = PlatformBootManager->RefreshAllBootOptions (
+ (CONST EFI_BOOT_MANAGER_LOAD_OPTION *)BootOptions,
+ (CONST UINTN)BootOptionCount,
+ &UpdatedBootOptions,
+ &UpdatedBootOptionCount
+ );
if (!EFI_ERROR (Status)) {
EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
- BootOptions = UpdatedBootOptions;
+ BootOptions = UpdatedBootOptions;
BootOptionCount = UpdatedBootOptionCount;
}
}
@@ -2349,8 +2413,9 @@ EfiBootManagerRefreshAllBootOption ( for (Index = 0; Index < NvBootOptionCount; Index++) {
if (((DevicePathType (NvBootOptions[Index].FilePath) != BBS_DEVICE_PATH) ||
(DevicePathSubType (NvBootOptions[Index].FilePath) != BBS_BBS_DP)
- ) && BmIsAutoCreateBootOption (&NvBootOptions[Index])
- ) {
+ ) && BmIsAutoCreateBootOption (&NvBootOptions[Index])
+ )
+ {
//
// Only check those added by BDS
// so that the boot options added by end-user or OS installer won't be deleted
@@ -2370,14 +2435,14 @@ EfiBootManagerRefreshAllBootOption ( //
for (Index = 0; Index < BootOptionCount; Index++) {
if (EfiBootManagerFindLoadOption (&BootOptions[Index], NvBootOptions, NvBootOptionCount) == -1) {
- EfiBootManagerAddLoadOptionVariable (&BootOptions[Index], (UINTN) -1);
+ EfiBootManagerAddLoadOptionVariable (&BootOptions[Index], (UINTN)-1);
//
// Try best to add the boot options so continue upon failure.
//
}
}
- EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
+ EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
EfiBootManagerFreeLoadOptions (NvBootOptions, NvBootOptionCount);
}
@@ -2398,18 +2463,18 @@ EfiBootManagerRefreshAllBootOption ( **/
EFI_STATUS
BmRegisterBootManagerMenu (
- OUT EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
+ OUT EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
)
{
- EFI_STATUS Status;
- CHAR16 *Description;
- UINTN DescriptionLength;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- UINTN HandleCount;
- EFI_HANDLE *Handles;
- UINTN Index;
-
- DevicePath = NULL;
+ EFI_STATUS Status;
+ CHAR16 *Description;
+ UINTN DescriptionLength;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ UINTN HandleCount;
+ EFI_HANDLE *Handles;
+ UINTN Index;
+
+ DevicePath = NULL;
Description = NULL;
//
// Try to find BootManagerMenu from LoadFile protocol
@@ -2428,6 +2493,7 @@ BmRegisterBootManagerMenu ( break;
}
}
+
if (HandleCount != 0) {
FreePool (Handles);
}
@@ -2443,6 +2509,7 @@ BmRegisterBootManagerMenu ( DEBUG ((DEBUG_WARN, "[Bds]BootManagerMenu FFS section can not be found, skip its boot option registration\n"));
return EFI_NOT_FOUND;
}
+
ASSERT (DevicePath != NULL);
//
// Get BootManagerMenu application's description from EFI User Interface Section.
@@ -2451,7 +2518,7 @@ BmRegisterBootManagerMenu ( PcdGetPtr (PcdBootManagerMenuFile),
EFI_SECTION_USER_INTERFACE,
0,
- (VOID **) &Description,
+ (VOID **)&Description,
&DescriptionLength
);
if (EFI_ERROR (Status)) {
@@ -2484,7 +2551,7 @@ BmRegisterBootManagerMenu ( EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
);
- return EfiBootManagerAddLoadOptionVariable (BootOption, (UINTN) -1);
+ return EfiBootManagerAddLoadOptionVariable (BootOption, (UINTN)-1);
}
/**
@@ -2502,30 +2569,30 @@ BmRegisterBootManagerMenu ( EFI_STATUS
EFIAPI
EfiBootManagerGetBootManagerMenu (
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
)
{
- EFI_STATUS Status;
- UINTN BootOptionCount;
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
- UINTN Index;
+ EFI_STATUS Status;
+ UINTN BootOptionCount;
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN Index;
BootOptions = EfiBootManagerGetLoadOptions (&BootOptionCount, LoadOptionTypeBoot);
for (Index = 0; Index < BootOptionCount; Index++) {
if (BmIsBootManagerMenuFilePath (BootOptions[Index].FilePath)) {
- Status = EfiBootManagerInitializeLoadOption (
- BootOption,
- BootOptions[Index].OptionNumber,
- BootOptions[Index].OptionType,
- BootOptions[Index].Attributes,
- BootOptions[Index].Description,
- BootOptions[Index].FilePath,
- BootOptions[Index].OptionalData,
- BootOptions[Index].OptionalDataSize
- );
- ASSERT_EFI_ERROR (Status);
- break;
+ Status = EfiBootManagerInitializeLoadOption (
+ BootOption,
+ BootOptions[Index].OptionNumber,
+ BootOptions[Index].OptionType,
+ BootOptions[Index].Attributes,
+ BootOptions[Index].Description,
+ BootOptions[Index].FilePath,
+ BootOptions[Index].OptionalData,
+ BootOptions[Index].OptionalDataSize
+ );
+ ASSERT_EFI_ERROR (Status);
+ break;
}
}
@@ -2558,9 +2625,9 @@ EfiBootManagerGetBootManagerMenu ( EFI_DEVICE_PATH_PROTOCOL *
EFIAPI
EfiBootManagerGetNextLoadOptionDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
)
{
- return BmGetNextLoadOptionDevicePath(FilePath, FullPath);
+ return BmGetNextLoadOptionDevicePath (FilePath, FullPath);
}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c index aa891feb17..fac33b9ee9 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c @@ -9,15 +9,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h"
-#define VENDOR_IDENTIFICATION_OFFSET 3
-#define VENDOR_IDENTIFICATION_LENGTH 8
-#define PRODUCT_IDENTIFICATION_OFFSET 11
-#define PRODUCT_IDENTIFICATION_LENGTH 16
+#define VENDOR_IDENTIFICATION_OFFSET 3
+#define VENDOR_IDENTIFICATION_LENGTH 8
+#define PRODUCT_IDENTIFICATION_OFFSET 11
+#define PRODUCT_IDENTIFICATION_LENGTH 16
-CONST UINT16 mBmUsbLangId = 0x0409; // English
-CHAR16 mBmUefiPrefix[] = L"UEFI ";
+CONST UINT16 mBmUsbLangId = 0x0409; // English
+CHAR16 mBmUefiPrefix[] = L"UEFI ";
-LIST_ENTRY mPlatformBootDescriptionHandlers = INITIALIZE_LIST_HEAD_VARIABLE (mPlatformBootDescriptionHandlers);
+LIST_ENTRY mPlatformBootDescriptionHandlers = INITIALIZE_LIST_HEAD_VARIABLE (mPlatformBootDescriptionHandlers);
/**
For a bootable Device path, return its boot type.
@@ -39,27 +39,28 @@ LIST_ENTRY mPlatformBootDescriptionHandlers = INITIALIZE_LIST_HEAD_VARIABLE (mPl **/
BM_BOOT_TYPE
BmDevicePathType (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- EFI_DEVICE_PATH_PROTOCOL *Node;
- EFI_DEVICE_PATH_PROTOCOL *NextNode;
+ EFI_DEVICE_PATH_PROTOCOL *Node;
+ EFI_DEVICE_PATH_PROTOCOL *NextNode;
ASSERT (DevicePath != NULL);
for (Node = DevicePath; !IsDevicePathEndType (Node); Node = NextDevicePathNode (Node)) {
switch (DevicePathType (Node)) {
-
case ACPI_DEVICE_PATH:
- if (EISA_ID_TO_NUM (((ACPI_HID_DEVICE_PATH *) Node)->HID) == 0x0604) {
+ if (EISA_ID_TO_NUM (((ACPI_HID_DEVICE_PATH *)Node)->HID) == 0x0604) {
return BmAcpiFloppyBoot;
}
+
break;
case HARDWARE_DEVICE_PATH:
if (DevicePathSubType (Node) == HW_CONTROLLER_DP) {
return BmHardwareDeviceBoot;
}
+
break;
case MESSAGING_DEVICE_PATH:
@@ -70,9 +71,9 @@ BmDevicePathType ( do {
NextNode = NextDevicePathNode (NextNode);
} while (
- (DevicePathType (NextNode) == MESSAGING_DEVICE_PATH) &&
- (DevicePathSubType(NextNode) == MSG_DEVICE_LOGICAL_UNIT_DP)
- );
+ (DevicePathType (NextNode) == MESSAGING_DEVICE_PATH) &&
+ (DevicePathSubType (NextNode) == MSG_DEVICE_LOGICAL_UNIT_DP)
+ );
//
// If the device path not only point to driver device, it is not a messaging device path,
@@ -82,21 +83,21 @@ BmDevicePathType ( }
switch (DevicePathSubType (Node)) {
- case MSG_ATAPI_DP:
- return BmMessageAtapiBoot;
- break;
+ case MSG_ATAPI_DP:
+ return BmMessageAtapiBoot;
+ break;
- case MSG_SATA_DP:
- return BmMessageSataBoot;
- break;
+ case MSG_SATA_DP:
+ return BmMessageSataBoot;
+ break;
- case MSG_USB_DP:
- return BmMessageUsbBoot;
- break;
+ case MSG_USB_DP:
+ return BmMessageUsbBoot;
+ break;
- case MSG_SCSI_DP:
- return BmMessageScsiBoot;
- break;
+ case MSG_SCSI_DP:
+ return BmMessageScsiBoot;
+ break;
}
}
}
@@ -111,17 +112,18 @@ BmDevicePathType ( **/
VOID
BmEliminateExtraSpaces (
- IN CHAR16 *Str
+ IN CHAR16 *Str
)
{
- UINTN Index;
- UINTN ActualIndex;
+ UINTN Index;
+ UINTN ActualIndex;
for (Index = 0, ActualIndex = 0; Str[Index] != L'\0'; Index++) {
if ((Str[Index] != L' ') || ((ActualIndex > 0) && (Str[ActualIndex - 1] != L' '))) {
Str[ActualIndex++] = Str[Index];
}
}
+
Str[ActualIndex] = L'\0';
}
@@ -134,70 +136,72 @@ BmEliminateExtraSpaces ( **/
CHAR16 *
BmGetDescriptionFromDiskInfo (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- UINTN Index;
- EFI_STATUS Status;
- EFI_DISK_INFO_PROTOCOL *DiskInfo;
- UINT32 BufferSize;
- EFI_ATAPI_IDENTIFY_DATA IdentifyData;
- EFI_SCSI_INQUIRY_DATA InquiryData;
- CHAR16 *Description;
- UINTN Length;
- CONST UINTN ModelNameLength = 40;
- CONST UINTN SerialNumberLength = 20;
- CHAR8 *StrPtr;
- UINT8 Temp;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
- Description = NULL;
+ UINTN Index;
+ EFI_STATUS Status;
+ EFI_DISK_INFO_PROTOCOL *DiskInfo;
+ UINT32 BufferSize;
+ EFI_ATAPI_IDENTIFY_DATA IdentifyData;
+ EFI_SCSI_INQUIRY_DATA InquiryData;
+ CHAR16 *Description;
+ UINTN Length;
+ CONST UINTN ModelNameLength = 40;
+ CONST UINTN SerialNumberLength = 20;
+ CHAR8 *StrPtr;
+ UINT8 Temp;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ Description = NULL;
Status = gBS->HandleProtocol (
Handle,
&gEfiDiskInfoProtocolGuid,
- (VOID **) &DiskInfo
+ (VOID **)&DiskInfo
);
if (EFI_ERROR (Status)) {
return NULL;
}
if (CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoAhciInterfaceGuid) ||
- CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoIdeInterfaceGuid)) {
- BufferSize = sizeof (EFI_ATAPI_IDENTIFY_DATA);
- Status = DiskInfo->Identify (
- DiskInfo,
- &IdentifyData,
- &BufferSize
- );
+ CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoIdeInterfaceGuid))
+ {
+ BufferSize = sizeof (EFI_ATAPI_IDENTIFY_DATA);
+ Status = DiskInfo->Identify (
+ DiskInfo,
+ &IdentifyData,
+ &BufferSize
+ );
if (!EFI_ERROR (Status)) {
Description = AllocateZeroPool ((ModelNameLength + SerialNumberLength + 2) * sizeof (CHAR16));
ASSERT (Description != NULL);
for (Index = 0; Index + 1 < ModelNameLength; Index += 2) {
- Description[Index] = (CHAR16) IdentifyData.ModelName[Index + 1];
- Description[Index + 1] = (CHAR16) IdentifyData.ModelName[Index];
+ Description[Index] = (CHAR16)IdentifyData.ModelName[Index + 1];
+ Description[Index + 1] = (CHAR16)IdentifyData.ModelName[Index];
}
- Length = Index;
+ Length = Index;
Description[Length++] = L' ';
for (Index = 0; Index + 1 < SerialNumberLength; Index += 2) {
- Description[Length + Index] = (CHAR16) IdentifyData.SerialNo[Index + 1];
- Description[Length + Index + 1] = (CHAR16) IdentifyData.SerialNo[Index];
+ Description[Length + Index] = (CHAR16)IdentifyData.SerialNo[Index + 1];
+ Description[Length + Index + 1] = (CHAR16)IdentifyData.SerialNo[Index];
}
- Length += Index;
+
+ Length += Index;
Description[Length++] = L'\0';
ASSERT (Length == ModelNameLength + SerialNumberLength + 2);
BmEliminateExtraSpaces (Description);
}
} else if (CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoScsiInterfaceGuid)) {
- BufferSize = sizeof (EFI_SCSI_INQUIRY_DATA);
- Status = DiskInfo->Inquiry (
- DiskInfo,
- &InquiryData,
- &BufferSize
- );
+ BufferSize = sizeof (EFI_SCSI_INQUIRY_DATA);
+ Status = DiskInfo->Inquiry (
+ DiskInfo,
+ &InquiryData,
+ &BufferSize
+ );
if (!EFI_ERROR (Status)) {
Description = AllocateZeroPool ((VENDOR_IDENTIFICATION_LENGTH + PRODUCT_IDENTIFICATION_LENGTH + 2) * sizeof (CHAR16));
ASSERT (Description != NULL);
@@ -207,8 +211,8 @@ BmGetDescriptionFromDiskInfo ( // EFI_SCSI_INQUIRY_DATA.Reserved_5_95[11 - 26] save the product identification,
// Here combine the vendor identification and product identification to the description.
//
- StrPtr = (CHAR8 *) (&InquiryData.Reserved_5_95[VENDOR_IDENTIFICATION_OFFSET]);
- Temp = StrPtr[VENDOR_IDENTIFICATION_LENGTH];
+ StrPtr = (CHAR8 *)(&InquiryData.Reserved_5_95[VENDOR_IDENTIFICATION_OFFSET]);
+ Temp = StrPtr[VENDOR_IDENTIFICATION_LENGTH];
StrPtr[VENDOR_IDENTIFICATION_LENGTH] = '\0';
AsciiStrToUnicodeStrS (StrPtr, Description, VENDOR_IDENTIFICATION_LENGTH + 1);
StrPtr[VENDOR_IDENTIFICATION_LENGTH] = Temp;
@@ -218,7 +222,7 @@ BmGetDescriptionFromDiskInfo ( //
Description[VENDOR_IDENTIFICATION_LENGTH] = L' ';
- StrPtr = (CHAR8 *) (&InquiryData.Reserved_5_95[PRODUCT_IDENTIFICATION_OFFSET]);
+ StrPtr = (CHAR8 *)(&InquiryData.Reserved_5_95[PRODUCT_IDENTIFICATION_OFFSET]);
StrPtr[PRODUCT_IDENTIFICATION_LENGTH] = '\0';
AsciiStrToUnicodeStrS (StrPtr, Description + VENDOR_IDENTIFICATION_LENGTH + 1, PRODUCT_IDENTIFICATION_LENGTH + 1);
@@ -233,6 +237,7 @@ BmGetDescriptionFromDiskInfo ( while (!IsDevicePathEnd (DevicePath) && (DevicePathType (DevicePath) != MESSAGING_DEVICE_PATH)) {
DevicePath = NextDevicePathNode (DevicePath);
}
+
if (IsDevicePathEnd (DevicePath)) {
return NULL;
}
@@ -260,23 +265,23 @@ BmGetDescriptionFromDiskInfo ( **/
CHAR16 *
BmGetUsbDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- EFI_STATUS Status;
- EFI_USB_IO_PROTOCOL *UsbIo;
- CHAR16 NullChar;
- CHAR16 *Manufacturer;
- CHAR16 *Product;
- CHAR16 *SerialNumber;
- CHAR16 *Description;
- EFI_USB_DEVICE_DESCRIPTOR DevDesc;
- UINTN DescMaxSize;
+ EFI_STATUS Status;
+ EFI_USB_IO_PROTOCOL *UsbIo;
+ CHAR16 NullChar;
+ CHAR16 *Manufacturer;
+ CHAR16 *Product;
+ CHAR16 *SerialNumber;
+ CHAR16 *Description;
+ EFI_USB_DEVICE_DESCRIPTOR DevDesc;
+ UINTN DescMaxSize;
Status = gBS->HandleProtocol (
Handle,
&gEfiUsbIoProtocolGuid,
- (VOID **) &UsbIo
+ (VOID **)&UsbIo
);
if (EFI_ERROR (Status)) {
return NULL;
@@ -322,27 +327,30 @@ BmGetUsbDescription ( if ((Manufacturer == &NullChar) &&
(Product == &NullChar) &&
(SerialNumber == &NullChar)
- ) {
+ )
+ {
return NULL;
}
DescMaxSize = StrSize (Manufacturer) + StrSize (Product) + StrSize (SerialNumber);
Description = AllocateZeroPool (DescMaxSize);
ASSERT (Description != NULL);
- StrCatS (Description, DescMaxSize/sizeof(CHAR16), Manufacturer);
- StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" ");
+ StrCatS (Description, DescMaxSize/sizeof (CHAR16), Manufacturer);
+ StrCatS (Description, DescMaxSize/sizeof (CHAR16), L" ");
- StrCatS (Description, DescMaxSize/sizeof(CHAR16), Product);
- StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" ");
+ StrCatS (Description, DescMaxSize/sizeof (CHAR16), Product);
+ StrCatS (Description, DescMaxSize/sizeof (CHAR16), L" ");
- StrCatS (Description, DescMaxSize/sizeof(CHAR16), SerialNumber);
+ StrCatS (Description, DescMaxSize/sizeof (CHAR16), SerialNumber);
if (Manufacturer != &NullChar) {
FreePool (Manufacturer);
}
+
if (Product != &NullChar) {
FreePool (Product);
}
+
if (SerialNumber != &NullChar) {
FreePool (SerialNumber);
}
@@ -361,17 +369,17 @@ BmGetUsbDescription ( **/
CHAR16 *
BmGetNetworkDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- MAC_ADDR_DEVICE_PATH *Mac;
- VLAN_DEVICE_PATH *Vlan;
- EFI_DEVICE_PATH_PROTOCOL *Ip;
- EFI_DEVICE_PATH_PROTOCOL *Uri;
- CHAR16 *Description;
- UINTN DescriptionSize;
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ MAC_ADDR_DEVICE_PATH *Mac;
+ VLAN_DEVICE_PATH *Vlan;
+ EFI_DEVICE_PATH_PROTOCOL *Ip;
+ EFI_DEVICE_PATH_PROTOCOL *Uri;
+ CHAR16 *Description;
+ UINTN DescriptionSize;
Status = gBS->OpenProtocol (
Handle,
@@ -388,7 +396,7 @@ BmGetNetworkDescription ( Status = gBS->OpenProtocol (
Handle,
&gEfiDevicePathProtocolGuid,
- (VOID **) &DevicePath,
+ (VOID **)&DevicePath,
gImageHandle,
Handle,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
@@ -410,7 +418,8 @@ BmGetNetworkDescription ( while (!IsDevicePathEnd (DevicePath) &&
((DevicePathType (DevicePath) != MESSAGING_DEVICE_PATH) ||
(DevicePathSubType (DevicePath) != MSG_MAC_ADDR_DP))
- ) {
+ )
+ {
DevicePath = NextDevicePathNode (DevicePath);
}
@@ -418,7 +427,7 @@ BmGetNetworkDescription ( return NULL;
}
- Mac = (MAC_ADDR_DEVICE_PATH *) DevicePath;
+ Mac = (MAC_ADDR_DEVICE_PATH *)DevicePath;
DevicePath = NextDevicePathNode (DevicePath);
//
@@ -426,8 +435,9 @@ BmGetNetworkDescription ( //
if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == MSG_VLAN_DP)
- ) {
- Vlan = (VLAN_DEVICE_PATH *) DevicePath;
+ )
+ {
+ Vlan = (VLAN_DEVICE_PATH *)DevicePath;
DevicePath = NextDevicePathNode (DevicePath);
} else {
Vlan = NULL;
@@ -438,7 +448,8 @@ BmGetNetworkDescription ( //
if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == MSG_WIFI_DP)
- ) {
+ )
+ {
DevicePath = NextDevicePathNode (DevicePath);
}
@@ -448,8 +459,9 @@ BmGetNetworkDescription ( if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
((DevicePathSubType (DevicePath) == MSG_IPv4_DP) ||
(DevicePathSubType (DevicePath) == MSG_IPv6_DP))
- ) {
- Ip = DevicePath;
+ )
+ {
+ Ip = DevicePath;
DevicePath = NextDevicePathNode (DevicePath);
} else {
Ip = NULL;
@@ -460,7 +472,8 @@ BmGetNetworkDescription ( //
if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == MSG_DNS_DP)
- ) {
+ )
+ {
DevicePath = NextDevicePathNode (DevicePath);
}
@@ -469,8 +482,9 @@ BmGetNetworkDescription ( //
if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == MSG_URI_DP)
- ) {
- Uri = DevicePath;
+ )
+ {
+ Uri = DevicePath;
DevicePath = NextDevicePathNode (DevicePath);
} else {
Uri = NULL;
@@ -485,14 +499,19 @@ BmGetNetworkDescription ( Description = AllocatePool (DescriptionSize);
ASSERT (Description != NULL);
UnicodeSPrint (
- Description, DescriptionSize,
+ Description,
+ DescriptionSize,
(Vlan == NULL) ?
L"%sv%d (MAC:%02x%02x%02x%02x%02x%02x)" :
L"%sv%d (MAC:%02x%02x%02x%02x%02x%02x VLAN%d)",
(Uri == NULL) ? L"PXE" : L"HTTP",
((Ip == NULL) || (DevicePathSubType (Ip) == MSG_IPv4_DP)) ? 4 : 6,
- Mac->MacAddress.Addr[0], Mac->MacAddress.Addr[1], Mac->MacAddress.Addr[2],
- Mac->MacAddress.Addr[3], Mac->MacAddress.Addr[4], Mac->MacAddress.Addr[5],
+ Mac->MacAddress.Addr[0],
+ Mac->MacAddress.Addr[1],
+ Mac->MacAddress.Addr[2],
+ Mac->MacAddress.Addr[3],
+ Mac->MacAddress.Addr[4],
+ Mac->MacAddress.Addr[5],
(Vlan == NULL) ? 0 : Vlan->VlanId
);
return Description;
@@ -507,14 +526,14 @@ BmGetNetworkDescription ( **/
CHAR16 *
BmGetLoadFileDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *FilePath;
- EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;
- CHAR16 *Description;
- EFI_LOAD_FILE_PROTOCOL *LoadFile;
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *FilePath;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;
+ CHAR16 *Description;
+ EFI_LOAD_FILE_PROTOCOL *LoadFile;
Status = gBS->HandleProtocol (Handle, &gEfiLoadFileProtocolGuid, (VOID **)&LoadFile);
if (EFI_ERROR (Status)) {
@@ -525,14 +544,15 @@ BmGetLoadFileDescription ( // Get the file name
//
Description = NULL;
- Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **)&FilePath);
+ Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **)&FilePath);
if (!EFI_ERROR (Status)) {
DevicePathNode = FilePath;
while (!IsDevicePathEnd (DevicePathNode)) {
- if (DevicePathNode->Type == MEDIA_DEVICE_PATH && DevicePathNode->SubType == MEDIA_FILEPATH_DP) {
+ if ((DevicePathNode->Type == MEDIA_DEVICE_PATH) && (DevicePathNode->SubType == MEDIA_FILEPATH_DP)) {
Description = (CHAR16 *)(DevicePathNode + 1);
break;
}
+
DevicePathNode = NextDevicePathNode (DevicePathNode);
}
}
@@ -553,21 +573,21 @@ BmGetLoadFileDescription ( **/
CHAR16 *
BmGetNvmeDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- EFI_STATUS Status;
- EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *NvmePassthru;
- EFI_DEV_PATH_PTR DevicePath;
- EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET CommandPacket;
- EFI_NVM_EXPRESS_COMMAND Command;
- EFI_NVM_EXPRESS_COMPLETION Completion;
- NVME_ADMIN_CONTROLLER_DATA ControllerData;
- CHAR16 *Description;
- CHAR16 *Char;
- UINTN Index;
-
- Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **) &DevicePath.DevPath);
+ EFI_STATUS Status;
+ EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *NvmePassthru;
+ EFI_DEV_PATH_PTR DevicePath;
+ EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET CommandPacket;
+ EFI_NVM_EXPRESS_COMMAND Command;
+ EFI_NVM_EXPRESS_COMPLETION Completion;
+ NVME_ADMIN_CONTROLLER_DATA ControllerData;
+ CHAR16 *Description;
+ CHAR16 *Char;
+ UINTN Index;
+
+ Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **)&DevicePath.DevPath);
if (EFI_ERROR (Status)) {
return NULL;
}
@@ -575,7 +595,8 @@ BmGetNvmeDescription ( Status = gBS->LocateDevicePath (&gEfiNvmExpressPassThruProtocolGuid, &DevicePath.DevPath, &Handle);
if (EFI_ERROR (Status) ||
(DevicePathType (DevicePath.DevPath) != MESSAGING_DEVICE_PATH) ||
- (DevicePathSubType (DevicePath.DevPath) != MSG_NVME_NAMESPACE_DP)) {
+ (DevicePathSubType (DevicePath.DevPath) != MSG_NVME_NAMESPACE_DP))
+ {
//
// Do not return description when the Handle is not a child of NVME controller.
//
@@ -585,19 +606,19 @@ BmGetNvmeDescription ( //
// Send ADMIN_IDENTIFY command to NVME controller to get the model and serial number.
//
- Status = gBS->HandleProtocol (Handle, &gEfiNvmExpressPassThruProtocolGuid, (VOID **) &NvmePassthru);
+ Status = gBS->HandleProtocol (Handle, &gEfiNvmExpressPassThruProtocolGuid, (VOID **)&NvmePassthru);
ASSERT_EFI_ERROR (Status);
- ZeroMem (&CommandPacket, sizeof(EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET));
- ZeroMem (&Command, sizeof(EFI_NVM_EXPRESS_COMMAND));
- ZeroMem (&Completion, sizeof(EFI_NVM_EXPRESS_COMPLETION));
+ ZeroMem (&CommandPacket, sizeof (EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET));
+ ZeroMem (&Command, sizeof (EFI_NVM_EXPRESS_COMMAND));
+ ZeroMem (&Completion, sizeof (EFI_NVM_EXPRESS_COMPLETION));
Command.Cdw0.Opcode = NVME_ADMIN_IDENTIFY_CMD;
//
// According to Nvm Express 1.1 spec Figure 38, When not used, the field shall be cleared to 0h.
// For the Identify command, the Namespace Identifier is only used for the Namespace data structure.
//
- Command.Nsid = 0;
+ Command.Nsid = 0;
CommandPacket.NvmeCmd = &Command;
CommandPacket.NvmeCompletion = &Completion;
CommandPacket.TransferBuffer = &ControllerData;
@@ -607,15 +628,15 @@ BmGetNvmeDescription ( //
// Set bit 0 (Cns bit) to 1 to identify a controller
//
- Command.Cdw10 = 1;
- Command.Flags = CDW10_VALID;
+ Command.Cdw10 = 1;
+ Command.Flags = CDW10_VALID;
Status = NvmePassthru->PassThru (
- NvmePassthru,
- 0,
- &CommandPacket,
- NULL
- );
+ NvmePassthru,
+ 0,
+ &CommandPacket,
+ NULL
+ );
if (EFI_ERROR (Status)) {
return NULL;
}
@@ -624,20 +645,26 @@ BmGetNvmeDescription ( (ARRAY_SIZE (ControllerData.Mn) + 1
+ ARRAY_SIZE (ControllerData.Sn) + 1
+ MAXIMUM_VALUE_CHARACTERS + 1
- ) * sizeof (CHAR16));
+ ) * sizeof (CHAR16)
+ );
if (Description != NULL) {
Char = Description;
for (Index = 0; Index < ARRAY_SIZE (ControllerData.Mn); Index++) {
- *(Char++) = (CHAR16) ControllerData.Mn[Index];
+ *(Char++) = (CHAR16)ControllerData.Mn[Index];
}
+
*(Char++) = L' ';
for (Index = 0; Index < ARRAY_SIZE (ControllerData.Sn); Index++) {
- *(Char++) = (CHAR16) ControllerData.Sn[Index];
+ *(Char++) = (CHAR16)ControllerData.Sn[Index];
}
+
*(Char++) = L' ';
UnicodeValueToStringS (
- Char, sizeof (CHAR16) * (MAXIMUM_VALUE_CHARACTERS + 1),
- 0, DevicePath.NvmeNamespace->NamespaceId, 0
+ Char,
+ sizeof (CHAR16) * (MAXIMUM_VALUE_CHARACTERS + 1),
+ 0,
+ DevicePath.NvmeNamespace->NamespaceId,
+ 0
);
BmEliminateExtraSpaces (Description);
}
@@ -654,54 +681,56 @@ BmGetNvmeDescription ( **/
CHAR16 *
BmGetMiscDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- EFI_STATUS Status;
- CHAR16 *Description;
- EFI_BLOCK_IO_PROTOCOL *BlockIo;
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Fs;
+ EFI_STATUS Status;
+ CHAR16 *Description;
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Fs;
switch (BmDevicePathType (DevicePathFromHandle (Handle))) {
- case BmAcpiFloppyBoot:
- Description = L"Floppy";
- break;
-
- case BmMessageAtapiBoot:
- case BmMessageSataBoot:
- Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo);
- ASSERT_EFI_ERROR (Status);
- //
- // Assume a removable SATA device should be the DVD/CD device
- //
- Description = BlockIo->Media->RemovableMedia ? L"DVD/CDROM" : L"Hard Drive";
- break;
+ case BmAcpiFloppyBoot:
+ Description = L"Floppy";
+ break;
+
+ case BmMessageAtapiBoot:
+ case BmMessageSataBoot:
+ Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **)&BlockIo);
+ ASSERT_EFI_ERROR (Status);
+ //
+ // Assume a removable SATA device should be the DVD/CD device
+ //
+ Description = BlockIo->Media->RemovableMedia ? L"DVD/CDROM" : L"Hard Drive";
+ break;
- case BmMessageUsbBoot:
- Description = L"USB Device";
- break;
+ case BmMessageUsbBoot:
+ Description = L"USB Device";
+ break;
- case BmMessageScsiBoot:
- Description = L"SCSI Device";
- break;
+ case BmMessageScsiBoot:
+ Description = L"SCSI Device";
+ break;
- case BmHardwareDeviceBoot:
- Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo);
- if (!EFI_ERROR (Status)) {
- Description = BlockIo->Media->RemovableMedia ? L"Removable Disk" : L"Hard Drive";
- } else {
- Description = L"Misc Device";
- }
- break;
+ case BmHardwareDeviceBoot:
+ Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **)&BlockIo);
+ if (!EFI_ERROR (Status)) {
+ Description = BlockIo->Media->RemovableMedia ? L"Removable Disk" : L"Hard Drive";
+ } else {
+ Description = L"Misc Device";
+ }
- default:
- Status = gBS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID **) &Fs);
- if (!EFI_ERROR (Status)) {
- Description = L"Non-Block Boot Device";
- } else {
- Description = L"Misc Device";
- }
- break;
+ break;
+
+ default:
+ Status = gBS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID **)&Fs);
+ if (!EFI_ERROR (Status)) {
+ Description = L"Non-Block Boot Device";
+ } else {
+ Description = L"Misc Device";
+ }
+
+ break;
}
return AllocateCopyPool (StrSize (Description), Description);
@@ -722,13 +751,14 @@ EfiBootManagerRegisterBootDescriptionHandler ( IN EFI_BOOT_MANAGER_BOOT_DESCRIPTION_HANDLER Handler
)
{
- LIST_ENTRY *Link;
- BM_BOOT_DESCRIPTION_ENTRY *Entry;
+ LIST_ENTRY *Link;
+ BM_BOOT_DESCRIPTION_ENTRY *Entry;
for ( Link = GetFirstNode (&mPlatformBootDescriptionHandlers)
- ; !IsNull (&mPlatformBootDescriptionHandlers, Link)
- ; Link = GetNextNode (&mPlatformBootDescriptionHandlers, Link)
- ) {
+ ; !IsNull (&mPlatformBootDescriptionHandlers, Link)
+ ; Link = GetNextNode (&mPlatformBootDescriptionHandlers, Link)
+ )
+ {
Entry = CR (Link, BM_BOOT_DESCRIPTION_ENTRY, Link, BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE);
if (Entry->Handler == Handler) {
return EFI_ALREADY_STARTED;
@@ -746,7 +776,7 @@ EfiBootManagerRegisterBootDescriptionHandler ( return EFI_SUCCESS;
}
-BM_GET_BOOT_DESCRIPTION mBmBootDescriptionHandlers[] = {
+BM_GET_BOOT_DESCRIPTION mBmBootDescriptionHandlers[] = {
BmGetUsbDescription,
BmGetDescriptionFromDiskInfo,
BmGetNetworkDescription,
@@ -764,22 +794,22 @@ BM_GET_BOOT_DESCRIPTION mBmBootDescriptionHandlers[] = { **/
CHAR16 *
BmGetBootDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
)
{
- LIST_ENTRY *Link;
- BM_BOOT_DESCRIPTION_ENTRY *Entry;
- CHAR16 *Description;
- CHAR16 *DefaultDescription;
- CHAR16 *Temp;
- UINTN Index;
+ LIST_ENTRY *Link;
+ BM_BOOT_DESCRIPTION_ENTRY *Entry;
+ CHAR16 *Description;
+ CHAR16 *DefaultDescription;
+ CHAR16 *Temp;
+ UINTN Index;
//
// Firstly get the default boot description
//
DefaultDescription = NULL;
for (Index = 0; Index < ARRAY_SIZE (mBmBootDescriptionHandlers); Index++) {
- DefaultDescription = mBmBootDescriptionHandlers[Index] (Handle);
+ DefaultDescription = mBmBootDescriptionHandlers[Index](Handle);
if (DefaultDescription != NULL) {
//
// Avoid description confusion between UEFI & Legacy boot option by adding "UEFI " prefix
@@ -794,16 +824,18 @@ BmGetBootDescription ( break;
}
}
+
ASSERT (DefaultDescription != NULL);
//
// Secondly query platform for the better boot description
//
for ( Link = GetFirstNode (&mPlatformBootDescriptionHandlers)
- ; !IsNull (&mPlatformBootDescriptionHandlers, Link)
- ; Link = GetNextNode (&mPlatformBootDescriptionHandlers, Link)
- ) {
- Entry = CR (Link, BM_BOOT_DESCRIPTION_ENTRY, Link, BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE);
+ ; !IsNull (&mPlatformBootDescriptionHandlers, Link)
+ ; Link = GetNextNode (&mPlatformBootDescriptionHandlers, Link)
+ )
+ {
+ Entry = CR (Link, BM_BOOT_DESCRIPTION_ENTRY, Link, BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE);
Description = Entry->Handler (Handle, DefaultDescription);
if (Description != NULL) {
FreePool (DefaultDescription);
@@ -823,16 +855,16 @@ BmGetBootDescription ( **/
VOID
BmMakeBootOptionDescriptionUnique (
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions,
- UINTN BootOptionCount
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions,
+ UINTN BootOptionCount
)
{
- UINTN Base;
- UINTN Index;
- UINTN DescriptionSize;
- UINTN MaxSuffixSize;
- BOOLEAN *Visited;
- UINTN MatchCount;
+ UINTN Base;
+ UINTN Index;
+ UINTN DescriptionSize;
+ UINTN MaxSuffixSize;
+ BOOLEAN *Visited;
+ UINTN MatchCount;
if (BootOptionCount == 0) {
return;
@@ -856,15 +888,17 @@ BmMakeBootOptionDescriptionUnique ( Visited[Base] = TRUE;
DescriptionSize = StrSize (BootOptions[Base].Description);
for (Index = Base + 1; Index < BootOptionCount; Index++) {
- if (!Visited[Index] && StrCmp (BootOptions[Base].Description, BootOptions[Index].Description) == 0) {
+ if (!Visited[Index] && (StrCmp (BootOptions[Base].Description, BootOptions[Index].Description) == 0)) {
Visited[Index] = TRUE;
MatchCount++;
FreePool (BootOptions[Index].Description);
BootOptions[Index].Description = AllocatePool (DescriptionSize + MaxSuffixSize);
UnicodeSPrint (
- BootOptions[Index].Description, DescriptionSize + MaxSuffixSize,
+ BootOptions[Index].Description,
+ DescriptionSize + MaxSuffixSize,
L"%s %d",
- BootOptions[Base].Description, MatchCount
+ BootOptions[Base].Description,
+ MatchCount
);
}
}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmConnect.c b/MdeModulePkg/Library/UefiBootManagerLib/BmConnect.c index d4a263b8fe..d1fb0f72ba 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmConnect.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmConnect.c @@ -52,7 +52,6 @@ BmConnectAllDriversToAllControllers ( // the connect again.
//
Status = gDS->Dispatch ();
-
} while (!EFI_ERROR (Status));
}
@@ -154,7 +153,6 @@ EfiBootManagerConnectDevicePath ( }
}
-
if (!EFI_ERROR (Status)) {
PreviousHandle = Handle;
//
@@ -175,11 +173,13 @@ EfiBootManagerConnectDevicePath ( if (Status == EFI_NOT_FOUND) {
Status = EFI_SUCCESS;
}
+
if (MatchingHandle != NULL) {
*MatchingHandle = Handle;
}
}
}
+
//
// Loop until RemainingDevicePath is an empty device path
//
@@ -243,16 +243,16 @@ EfiBootManagerDisconnectAll ( **/
EFI_STATUS
BmConnectUsbShortFormDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- EFI_STATUS Status;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN Index;
- EFI_PCI_IO_PROTOCOL *PciIo;
- UINT8 Class[3];
- BOOLEAN AtLeastOneConnected;
+ EFI_STATUS Status;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN Index;
+ EFI_PCI_IO_PROTOCOL *PciIo;
+ UINT8 Class[3];
+ BOOLEAN AtLeastOneConnected;
//
// Check the passed in parameters
@@ -263,7 +263,8 @@ BmConnectUsbShortFormDevicePath ( if ((DevicePathType (DevicePath) != MESSAGING_DEVICE_PATH) ||
((DevicePathSubType (DevicePath) != MSG_USB_CLASS_DP) && (DevicePathSubType (DevicePath) != MSG_USB_WWID_DP))
- ) {
+ )
+ {
return EFI_INVALID_PARAMETER;
}
@@ -271,19 +272,19 @@ BmConnectUsbShortFormDevicePath ( // Find the usb host controller firstly, then connect with the remaining device path
//
AtLeastOneConnected = FALSE;
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiPciIoProtocolGuid,
- NULL,
- &HandleCount,
- &Handles
- );
+ Status = gBS->LocateHandleBuffer (
+ ByProtocol,
+ &gEfiPciIoProtocolGuid,
+ NULL,
+ &HandleCount,
+ &Handles
+ );
if (!EFI_ERROR (Status)) {
for (Index = 0; Index < HandleCount; Index++) {
Status = gBS->HandleProtocol (
Handles[Index],
&gEfiPciIoProtocolGuid,
- (VOID **) &PciIo
+ (VOID **)&PciIo
);
if (!EFI_ERROR (Status)) {
//
@@ -292,14 +293,15 @@ BmConnectUsbShortFormDevicePath ( Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint8, 0x09, 3, &Class);
if (!EFI_ERROR (Status) &&
((PCI_CLASS_SERIAL == Class[2]) && (PCI_CLASS_SERIAL_USB == Class[1]))
- ) {
+ )
+ {
Status = gBS->ConnectController (
Handles[Index],
NULL,
DevicePath,
FALSE
);
- if (!EFI_ERROR(Status)) {
+ if (!EFI_ERROR (Status)) {
AtLeastOneConnected = TRUE;
}
}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c index bdbb9a8770..60e7b1099a 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c @@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h"
-CHAR16 *mConVarName[] = {
+CHAR16 *mConVarName[] = {
L"ConIn",
L"ConOut",
L"ErrOut",
@@ -28,16 +28,16 @@ BmGetVideoController ( VOID
)
{
- EFI_STATUS Status;
- UINTN RootBridgeHandleCount;
- EFI_HANDLE *RootBridgeHandleBuffer;
- UINTN HandleCount;
- EFI_HANDLE *HandleBuffer;
- UINTN RootBridgeIndex;
- UINTN Index;
- EFI_HANDLE VideoController;
- EFI_PCI_IO_PROTOCOL *PciIo;
- PCI_TYPE00 Pci;
+ EFI_STATUS Status;
+ UINTN RootBridgeHandleCount;
+ EFI_HANDLE *RootBridgeHandleBuffer;
+ UINTN HandleCount;
+ EFI_HANDLE *HandleBuffer;
+ UINTN RootBridgeIndex;
+ UINTN Index;
+ EFI_HANDLE VideoController;
+ EFI_PCI_IO_PROTOCOL *PciIo;
+ PCI_TYPE00 Pci;
//
// Make all the PCI_IO protocols show up
@@ -72,18 +72,18 @@ BmGetVideoController ( }
for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->HandleProtocol (HandleBuffer[Index], &gEfiPciIoProtocolGuid, (VOID **) &PciIo);
+ Status = gBS->HandleProtocol (HandleBuffer[Index], &gEfiPciIoProtocolGuid, (VOID **)&PciIo);
if (!EFI_ERROR (Status)) {
//
// Check for all video controller
//
Status = PciIo->Pci.Read (
- PciIo,
- EfiPciIoWidthUint32,
- 0,
- sizeof (Pci) / sizeof (UINT32),
- &Pci
- );
+ PciIo,
+ EfiPciIoWidthUint32,
+ 0,
+ sizeof (Pci) / sizeof (UINT32),
+ &Pci
+ );
if (!EFI_ERROR (Status) && IS_PCI_VGA (&Pci)) {
// TODO: use IS_PCI_DISPLAY??
VideoController = HandleBuffer[Index];
@@ -91,12 +91,14 @@ BmGetVideoController ( }
}
}
+
FreePool (HandleBuffer);
if (VideoController != NULL) {
break;
}
}
+
FreePool (RootBridgeHandleBuffer);
return VideoController;
@@ -113,7 +115,7 @@ BmGetVideoController ( EFI_DEVICE_PATH_PROTOCOL *
EFIAPI
EfiBootManagerGetGopDevicePath (
- IN EFI_HANDLE VideoController
+ IN EFI_HANDLE VideoController
)
{
UINTN Index;
@@ -130,7 +132,6 @@ EfiBootManagerGetGopDevicePath ( EFI_DEVICE_PATH_PROTOCOL *GopPool;
EFI_DEVICE_PATH_PROTOCOL *ReturnDevicePath;
-
Status = gBS->ProtocolsPerHandle (
VideoController,
&ProtocolBuffer,
@@ -161,7 +162,7 @@ EfiBootManagerGetGopDevicePath ( Status = gBS->OpenProtocol (
OpenInfoBuffer[Index].ControllerHandle,
&gEfiDevicePathProtocolGuid,
- (VOID **) &DevicePath,
+ (VOID **)&DevicePath,
NULL,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
@@ -174,9 +175,10 @@ EfiBootManagerGetGopDevicePath ( for (Next = DevicePath; !IsDevicePathEnd (Next); Next = NextDevicePathNode (Next)) {
Previous = Next;
}
+
ASSERT (Previous != NULL);
- if (DevicePathType (Previous) == ACPI_DEVICE_PATH && DevicePathSubType (Previous) == ACPI_ADR_DP) {
+ if ((DevicePathType (Previous) == ACPI_DEVICE_PATH) && (DevicePathSubType (Previous) == ACPI_ADR_DP)) {
Status = gBS->OpenProtocol (
OpenInfoBuffer[Index].ControllerHandle,
&gEfiGraphicsOutputProtocolGuid,
@@ -190,19 +192,19 @@ EfiBootManagerGetGopDevicePath ( // Append the device path to GOP pool when there is GOP protocol installed.
//
TempDevicePath = GopPool;
- GopPool = AppendDevicePathInstance (GopPool, DevicePath);
+ GopPool = AppendDevicePathInstance (GopPool, DevicePath);
gBS->FreePool (TempDevicePath);
}
}
- if (DevicePathType (Previous) == HARDWARE_DEVICE_PATH && DevicePathSubType (Previous) == HW_CONTROLLER_DP) {
+ if ((DevicePathType (Previous) == HARDWARE_DEVICE_PATH) && (DevicePathSubType (Previous) == HW_CONTROLLER_DP)) {
//
// Recursively look for GOP child in this frame buffer handle
//
DEBUG ((DEBUG_INFO, "[Bds] Looking for GOP child deeper ... \n"));
- TempDevicePath = GopPool;
+ TempDevicePath = GopPool;
ReturnDevicePath = EfiBootManagerGetGopDevicePath (OpenInfoBuffer[Index].ControllerHandle);
- GopPool = AppendDevicePathInstance (GopPool, ReturnDevicePath);
+ GopPool = AppendDevicePathInstance (GopPool, ReturnDevicePath);
gBS->FreePool (ReturnDevicePath);
gBS->FreePool (TempDevicePath);
}
@@ -228,10 +230,10 @@ EfiBootManagerGetGopDevicePath ( EFI_STATUS
EFIAPI
EfiBootManagerConnectVideoController (
- EFI_HANDLE VideoController OPTIONAL
+ EFI_HANDLE VideoController OPTIONAL
)
{
- EFI_DEVICE_PATH_PROTOCOL *Gop;
+ EFI_DEVICE_PATH_PROTOCOL *Gop;
if (VideoController == NULL) {
//
@@ -285,21 +287,21 @@ EfiBootManagerConnectVideoController ( **/
BOOLEAN
BmUpdateSystemTableConsole (
- IN CHAR16 *VarName,
- IN EFI_GUID *ConsoleGuid,
- IN OUT EFI_HANDLE *ConsoleHandle,
- IN OUT VOID **ProtocolInterface
+ IN CHAR16 *VarName,
+ IN EFI_GUID *ConsoleGuid,
+ IN OUT EFI_HANDLE *ConsoleHandle,
+ IN OUT VOID **ProtocolInterface
)
{
- EFI_STATUS Status;
- UINTN DevicePathSize;
- EFI_DEVICE_PATH_PROTOCOL *FullDevicePath;
- EFI_DEVICE_PATH_PROTOCOL *VarConsole;
- EFI_DEVICE_PATH_PROTOCOL *Instance;
- EFI_DEVICE_PATH_PROTOCOL *FullInstance;
- VOID *Interface;
- EFI_HANDLE NewHandle;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;
+ EFI_STATUS Status;
+ UINTN DevicePathSize;
+ EFI_DEVICE_PATH_PROTOCOL *FullDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *VarConsole;
+ EFI_DEVICE_PATH_PROTOCOL *Instance;
+ EFI_DEVICE_PATH_PROTOCOL *FullInstance;
+ VOID *Interface;
+ EFI_HANDLE NewHandle;
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;
ASSERT (VarName != NULL);
ASSERT (ConsoleHandle != NULL);
@@ -308,11 +310,11 @@ BmUpdateSystemTableConsole ( if (*ConsoleHandle != NULL) {
Status = gBS->HandleProtocol (
- *ConsoleHandle,
- ConsoleGuid,
- &Interface
- );
- if (Status == EFI_SUCCESS && Interface == *ProtocolInterface) {
+ *ConsoleHandle,
+ ConsoleGuid,
+ &Interface
+ );
+ if ((Status == EFI_SUCCESS) && (Interface == *ProtocolInterface)) {
//
// If ConsoleHandle is valid and console protocol on this handle also
// also matched, just return.
@@ -324,7 +326,7 @@ BmUpdateSystemTableConsole ( //
// Get all possible consoles device path from EFI variable
//
- GetEfiGlobalVariable2 (VarName, (VOID **) &VarConsole, NULL);
+ GetEfiGlobalVariable2 (VarName, (VOID **)&VarConsole, NULL);
if (VarConsole == NULL) {
//
// If there is no any console device, just return.
@@ -338,7 +340,7 @@ BmUpdateSystemTableConsole ( //
// Check every instance of the console variable
//
- Instance = GetNextDevicePathInstance (&VarConsole, &DevicePathSize);
+ Instance = GetNextDevicePathInstance (&VarConsole, &DevicePathSize);
if (Instance == NULL) {
DEBUG ((DEBUG_ERROR, "[Bds] No valid console instance is found for %s!\n", VarName));
// We should not ASSERT when all the console devices are removed.
@@ -351,11 +353,11 @@ BmUpdateSystemTableConsole ( // Find console device handle by device path instance
//
FullInstance = Instance;
- Status = gBS->LocateDevicePath (
- ConsoleGuid,
- &Instance,
- &NewHandle
- );
+ Status = gBS->LocateDevicePath (
+ ConsoleGuid,
+ &Instance,
+ &NewHandle
+ );
FreePool (FullInstance);
if (!EFI_ERROR (Status)) {
//
@@ -376,16 +378,16 @@ BmUpdateSystemTableConsole ( //
// If it is console out device, set console mode 80x25 if current mode is invalid.
//
- TextOut = (EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *) Interface;
+ TextOut = (EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)Interface;
if (TextOut->Mode->Mode == -1) {
TextOut->SetMode (TextOut, 0);
}
}
+
FreePool (FullDevicePath);
return TRUE;
}
}
-
} while (Instance != NULL);
//
@@ -435,10 +437,11 @@ EfiBootManagerUpdateConsoleVariable ( if (CustomizedConDevicePath == ExclusiveDevicePath) {
return EFI_UNSUPPORTED;
}
+
//
// Delete the ExclusiveDevicePath from current default console
//
- GetEfiGlobalVariable2 (mConVarName[ConsoleType], (VOID **) &VarConsole, NULL);
+ GetEfiGlobalVariable2 (mConVarName[ConsoleType], (VOID **)&VarConsole, NULL);
//
// Initialize NewDevicePath
//
@@ -448,9 +451,10 @@ EfiBootManagerUpdateConsoleVariable ( // If ExclusiveDevicePath is even the part of the instance in VarConsole, delete it.
// In the end, NewDevicePath is the final device path.
//
- if (ExclusiveDevicePath != NULL && VarConsole != NULL) {
- NewDevicePath = BmDelPartMatchInstance (VarConsole, ExclusiveDevicePath);
+ if ((ExclusiveDevicePath != NULL) && (VarConsole != NULL)) {
+ NewDevicePath = BmDelPartMatchInstance (VarConsole, ExclusiveDevicePath);
}
+
//
// Try to append customized device path to NewDevicePath.
//
@@ -465,9 +469,9 @@ EfiBootManagerUpdateConsoleVariable ( // just append current customized device path
//
TempNewDevicePath = NewDevicePath;
- NewDevicePath = AppendDevicePathInstance (NewDevicePath, CustomizedConDevicePath);
+ NewDevicePath = AppendDevicePathInstance (NewDevicePath, CustomizedConDevicePath);
if (TempNewDevicePath != NULL) {
- FreePool(TempNewDevicePath);
+ FreePool (TempNewDevicePath);
}
}
}
@@ -479,28 +483,28 @@ EfiBootManagerUpdateConsoleVariable ( mConVarName[ConsoleType],
&gEfiGlobalVariableGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS
- | ((ConsoleType < ConInDev) ? EFI_VARIABLE_NON_VOLATILE : 0),
+ | ((ConsoleType < ConInDev) ? EFI_VARIABLE_NON_VOLATILE : 0),
GetDevicePathSize (NewDevicePath),
NewDevicePath
);
if (VarConsole == NewDevicePath) {
if (VarConsole != NULL) {
- FreePool(VarConsole);
+ FreePool (VarConsole);
}
} else {
if (VarConsole != NULL) {
- FreePool(VarConsole);
+ FreePool (VarConsole);
}
+
if (NewDevicePath != NULL) {
- FreePool(NewDevicePath);
+ FreePool (NewDevicePath);
}
}
return Status;
}
-
/**
Connect the console device base on the variable ConsoleType.
@@ -515,7 +519,7 @@ EfiBootManagerUpdateConsoleVariable ( EFI_STATUS
EFIAPI
EfiBootManagerConnectConsoleVariable (
- IN CONSOLE_TYPE ConsoleType
+ IN CONSOLE_TYPE ConsoleType
)
{
EFI_STATUS Status;
@@ -538,7 +542,7 @@ EfiBootManagerConnectConsoleVariable ( //
// Check if the console variable exist
//
- GetEfiGlobalVariable2 (mConVarName[ConsoleType], (VOID **) &StartDevicePath, NULL);
+ GetEfiGlobalVariable2 (mConVarName[ConsoleType], (VOID **)&StartDevicePath, NULL);
if (StartDevicePath == NULL) {
return EFI_UNSUPPORTED;
}
@@ -548,13 +552,13 @@ EfiBootManagerConnectConsoleVariable ( //
// Check every instance of the console variable
//
- Instance = GetNextDevicePathInstance (&CopyOfDevicePath, &Size);
+ Instance = GetNextDevicePathInstance (&CopyOfDevicePath, &Size);
if (Instance == NULL) {
FreePool (StartDevicePath);
return EFI_UNSUPPORTED;
}
- Next = Instance;
+ Next = Instance;
while (!IsDevicePathEndType (Next)) {
Next = NextDevicePathNode (Next);
}
@@ -568,23 +572,26 @@ EfiBootManagerConnectConsoleVariable ( //
if ((DevicePathType (Instance) == MESSAGING_DEVICE_PATH) &&
((DevicePathSubType (Instance) == MSG_USB_CLASS_DP) || (DevicePathSubType (Instance) == MSG_USB_WWID_DP))
- ) {
+ )
+ {
Status = BmConnectUsbShortFormDevicePath (Instance);
if (!EFI_ERROR (Status)) {
DeviceExist = TRUE;
}
} else {
for (Next = Instance; !IsDevicePathEnd (Next); Next = NextDevicePathNode (Next)) {
- if (DevicePathType (Next) == ACPI_DEVICE_PATH && DevicePathSubType (Next) == ACPI_ADR_DP) {
+ if ((DevicePathType (Next) == ACPI_DEVICE_PATH) && (DevicePathSubType (Next) == ACPI_ADR_DP)) {
break;
- } else if (DevicePathType (Next) == HARDWARE_DEVICE_PATH &&
- DevicePathSubType (Next) == HW_CONTROLLER_DP &&
- DevicePathType (NextDevicePathNode (Next)) == ACPI_DEVICE_PATH &&
- DevicePathSubType (NextDevicePathNode (Next)) == ACPI_ADR_DP
- ) {
+ } else if ((DevicePathType (Next) == HARDWARE_DEVICE_PATH) &&
+ (DevicePathSubType (Next) == HW_CONTROLLER_DP) &&
+ (DevicePathType (NextDevicePathNode (Next)) == ACPI_DEVICE_PATH) &&
+ (DevicePathSubType (NextDevicePathNode (Next)) == ACPI_ADR_DP)
+ )
+ {
break;
}
}
+
if (!IsDevicePathEnd (Next)) {
//
// For GOP device path, start the video driver with NULL remaining device path
@@ -597,6 +604,7 @@ EfiBootManagerConnectConsoleVariable ( } else {
Status = EfiBootManagerConnectDevicePath (Instance, NULL);
}
+
if (EFI_ERROR (Status)) {
//
// Delete the instance from the console varialbe
@@ -606,7 +614,8 @@ EfiBootManagerConnectConsoleVariable ( DeviceExist = TRUE;
}
}
- FreePool(Instance);
+
+ FreePool (Instance);
} while (CopyOfDevicePath != NULL);
FreePool (StartDevicePath);
@@ -618,7 +627,6 @@ EfiBootManagerConnectConsoleVariable ( return EFI_SUCCESS;
}
-
/**
This function will search every input/output device in current system,
and make every input/output device as potential console device.
@@ -643,46 +651,46 @@ EfiBootManagerConnectAllConsoles ( // Update all the console variables
//
gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiSimpleTextInProtocolGuid,
- NULL,
- &HandleCount,
- &HandleBuffer
- );
+ ByProtocol,
+ &gEfiSimpleTextInProtocolGuid,
+ NULL,
+ &HandleCount,
+ &HandleBuffer
+ );
for (Index = 0; Index < HandleCount; Index++) {
gBS->HandleProtocol (
- HandleBuffer[Index],
- &gEfiDevicePathProtocolGuid,
- (VOID **) &ConDevicePath
- );
+ HandleBuffer[Index],
+ &gEfiDevicePathProtocolGuid,
+ (VOID **)&ConDevicePath
+ );
EfiBootManagerUpdateConsoleVariable (ConIn, ConDevicePath, NULL);
}
if (HandleBuffer != NULL) {
- FreePool(HandleBuffer);
+ FreePool (HandleBuffer);
HandleBuffer = NULL;
}
gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiSimpleTextOutProtocolGuid,
- NULL,
- &HandleCount,
- &HandleBuffer
- );
+ ByProtocol,
+ &gEfiSimpleTextOutProtocolGuid,
+ NULL,
+ &HandleCount,
+ &HandleBuffer
+ );
for (Index = 0; Index < HandleCount; Index++) {
gBS->HandleProtocol (
- HandleBuffer[Index],
- &gEfiDevicePathProtocolGuid,
- (VOID **) &ConDevicePath
- );
+ HandleBuffer[Index],
+ &gEfiDevicePathProtocolGuid,
+ (VOID **)&ConDevicePath
+ );
EfiBootManagerUpdateConsoleVariable (ConOut, ConDevicePath, NULL);
EfiBootManagerUpdateConsoleVariable (ErrOut, ConDevicePath, NULL);
}
if (HandleBuffer != NULL) {
- FreePool(HandleBuffer);
+ FreePool (HandleBuffer);
}
//
@@ -691,7 +699,6 @@ EfiBootManagerConnectAllConsoles ( EfiBootManagerConnectAllDefaultConsoles ();
}
-
/**
This function will connect all the console devices base on the console
device variable ConIn, ConOut and ErrOut.
@@ -706,9 +713,9 @@ EfiBootManagerConnectAllDefaultConsoles ( VOID
)
{
- EFI_STATUS Status;
- BOOLEAN OneConnected;
- BOOLEAN SystemTableUpdated;
+ EFI_STATUS Status;
+ BOOLEAN OneConnected;
+ BOOLEAN SystemTableUpdated;
OneConnected = FALSE;
@@ -716,32 +723,36 @@ EfiBootManagerConnectAllDefaultConsoles ( if (!EFI_ERROR (Status)) {
OneConnected = TRUE;
}
- PERF_EVENT ("ConOutReady");
+ PERF_EVENT ("ConOutReady");
Status = EfiBootManagerConnectConsoleVariable (ConIn);
if (!EFI_ERROR (Status)) {
OneConnected = TRUE;
}
+
PERF_EVENT ("ConInReady");
Status = EfiBootManagerConnectConsoleVariable (ErrOut);
if (!EFI_ERROR (Status)) {
OneConnected = TRUE;
}
+
PERF_EVENT ("ErrOutReady");
SystemTableUpdated = FALSE;
//
// Fill console handles in System Table if no console device assignd.
//
- if (BmUpdateSystemTableConsole (L"ConIn", &gEfiSimpleTextInProtocolGuid, &gST->ConsoleInHandle, (VOID **) &gST->ConIn)) {
+ if (BmUpdateSystemTableConsole (L"ConIn", &gEfiSimpleTextInProtocolGuid, &gST->ConsoleInHandle, (VOID **)&gST->ConIn)) {
SystemTableUpdated = TRUE;
}
- if (BmUpdateSystemTableConsole (L"ConOut", &gEfiSimpleTextOutProtocolGuid, &gST->ConsoleOutHandle, (VOID **) &gST->ConOut)) {
+
+ if (BmUpdateSystemTableConsole (L"ConOut", &gEfiSimpleTextOutProtocolGuid, &gST->ConsoleOutHandle, (VOID **)&gST->ConOut)) {
SystemTableUpdated = TRUE;
}
- if (BmUpdateSystemTableConsole (L"ErrOut", &gEfiSimpleTextOutProtocolGuid, &gST->StandardErrorHandle, (VOID **) &gST->StdErr)) {
+
+ if (BmUpdateSystemTableConsole (L"ErrOut", &gEfiSimpleTextOutProtocolGuid, &gST->StandardErrorHandle, (VOID **)&gST->StdErr)) {
SystemTableUpdated = TRUE;
}
@@ -751,10 +762,10 @@ EfiBootManagerConnectAllDefaultConsoles ( //
gST->Hdr.CRC32 = 0;
gBS->CalculateCrc32 (
- (UINT8 *) &gST->Hdr,
- gST->Hdr.HeaderSize,
- &gST->Hdr.CRC32
- );
+ (UINT8 *)&gST->Hdr,
+ gST->Hdr.HeaderSize,
+ &gST->Hdr.CRC32
+ );
}
return OneConnected ? EFI_SUCCESS : EFI_DEVICE_ERROR;
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c index eacd45439b..46a2fa2016 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c @@ -11,14 +11,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h"
GLOBAL_REMOVE_IF_UNREFERENCED
- CHAR16 *mBmHealthStatusText[] = {
- L"Healthy",
- L"Repair Required",
- L"Configuration Required",
- L"Failed",
- L"Reconnect Required",
- L"Reboot Required"
- };
+CHAR16 *mBmHealthStatusText[] = {
+ L"Healthy",
+ L"Repair Required",
+ L"Configuration Required",
+ L"Failed",
+ L"Reconnect Required",
+ L"Reboot Required"
+};
/**
Return the controller name.
@@ -37,17 +37,17 @@ GLOBAL_REMOVE_IF_UNREFERENCED **/
CHAR16 *
BmGetControllerName (
- IN EFI_HANDLE DriverHealthHandle,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_HANDLE ChildHandle
+ IN EFI_HANDLE DriverHealthHandle,
+ IN EFI_HANDLE ControllerHandle,
+ IN EFI_HANDLE ChildHandle
)
{
- EFI_STATUS Status;
- CHAR16 *ControllerName;
- CHAR8 *LanguageVariable;
- CHAR8 *BestLanguage;
- BOOLEAN Iso639Language;
- EFI_COMPONENT_NAME_PROTOCOL *ComponentName;
+ EFI_STATUS Status;
+ CHAR16 *ControllerName;
+ CHAR8 *LanguageVariable;
+ CHAR8 *BestLanguage;
+ BOOLEAN Iso639Language;
+ EFI_COMPONENT_NAME_PROTOCOL *ComponentName;
ControllerName = NULL;
@@ -55,16 +55,16 @@ BmGetControllerName ( // Locate Component Name (2) protocol on the driver binging handle.
//
Iso639Language = FALSE;
- Status = gBS->HandleProtocol (
- DriverHealthHandle,
- &gEfiComponentName2ProtocolGuid,
- (VOID **) &ComponentName
- );
+ Status = gBS->HandleProtocol (
+ DriverHealthHandle,
+ &gEfiComponentName2ProtocolGuid,
+ (VOID **)&ComponentName
+ );
if (EFI_ERROR (Status)) {
Status = gBS->HandleProtocol (
DriverHealthHandle,
&gEfiComponentNameProtocolGuid,
- (VOID **) &ComponentName
+ (VOID **)&ComponentName
);
if (!EFI_ERROR (Status)) {
Iso639Language = TRUE;
@@ -72,14 +72,14 @@ BmGetControllerName ( }
if (!EFI_ERROR (Status)) {
- GetEfiGlobalVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", (VOID**)&LanguageVariable, NULL);
- BestLanguage = GetBestLanguage(
- ComponentName->SupportedLanguages,
- Iso639Language,
- (LanguageVariable != NULL) ? LanguageVariable : "",
- Iso639Language ? "eng" : "en-US",
- NULL
- );
+ GetEfiGlobalVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", (VOID **)&LanguageVariable, NULL);
+ BestLanguage = GetBestLanguage (
+ ComponentName->SupportedLanguages,
+ Iso639Language,
+ (LanguageVariable != NULL) ? LanguageVariable : "",
+ Iso639Language ? "eng" : "en-US",
+ NULL
+ );
if (LanguageVariable != NULL) {
FreePool (LanguageVariable);
}
@@ -111,15 +111,16 @@ BmGetControllerName ( **/
VOID
BmDisplayMessages (
- IN EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo
+ IN EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo
)
{
- UINTN Index;
- EFI_STRING String;
- CHAR16 *ControllerName;
+ UINTN Index;
+ EFI_STRING String;
+ CHAR16 *ControllerName;
- if (DriverHealthInfo->MessageList == NULL ||
- DriverHealthInfo->MessageList[0].HiiHandle == NULL) {
+ if ((DriverHealthInfo->MessageList == NULL) ||
+ (DriverHealthInfo->MessageList[0].HiiHandle == NULL))
+ {
return;
}
@@ -163,8 +164,8 @@ BmDisplayMessages ( EFI_STATUS
EFIAPI
BmRepairNotify (
- IN UINTN Value,
- IN UINTN Limit
+ IN UINTN Value,
+ IN UINTN Limit
)
{
DEBUG ((DEBUG_INFO, "[BDS]RepairNotify: %d/%d\n", Value, Limit));
@@ -189,11 +190,11 @@ BmRepairNotify ( **/
EFI_STATUS
BmGetSingleControllerHealthStatus (
- IN OUT EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO **DriverHealthInfo,
- IN OUT UINTN *Count,
- IN EFI_HANDLE DriverHealthHandle,
- IN EFI_HANDLE ControllerHandle OPTIONAL,
- IN EFI_HANDLE ChildHandle OPTIONAL
+ IN OUT EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO **DriverHealthInfo,
+ IN OUT UINTN *Count,
+ IN EFI_HANDLE DriverHealthHandle,
+ IN EFI_HANDLE ControllerHandle OPTIONAL,
+ IN EFI_HANDLE ChildHandle OPTIONAL
)
{
EFI_STATUS Status;
@@ -209,17 +210,16 @@ BmGetSingleControllerHealthStatus ( Status = gBS->HandleProtocol (
DriverHealthHandle,
&gEfiDriverHealthProtocolGuid,
- (VOID **) &DriverHealth
+ (VOID **)&DriverHealth
);
ASSERT_EFI_ERROR (Status);
-
if (ControllerHandle == NULL) {
//
// If ControllerHandle is NULL, the return the cumulative health status of the driver
//
Status = DriverHealth->GetHealthStatus (DriverHealth, NULL, NULL, &HealthStatus, NULL, NULL);
- if (!EFI_ERROR (Status) && HealthStatus == EfiDriverHealthStatusHealthy) {
+ if (!EFI_ERROR (Status) && (HealthStatus == EfiDriverHealthStatusHealthy)) {
*DriverHealthInfo = ReallocatePool (
(*Count) * sizeof (EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO),
(*Count + 1) * sizeof (EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO),
@@ -235,6 +235,7 @@ BmGetSingleControllerHealthStatus ( Status = EFI_ABORTED;
}
+
return Status;
}
@@ -285,28 +286,28 @@ BmGetSingleControllerHealthStatus ( EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *
EFIAPI
EfiBootManagerGetDriverHealthInfo (
- UINTN *Count
+ UINTN *Count
)
{
- EFI_STATUS Status;
- UINTN NumHandles;
- EFI_HANDLE *DriverHealthHandles;
- UINTN DriverHealthIndex;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN ControllerIndex;
- UINTN ChildIndex;
+ EFI_STATUS Status;
+ UINTN NumHandles;
+ EFI_HANDLE *DriverHealthHandles;
+ UINTN DriverHealthIndex;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN ControllerIndex;
+ UINTN ChildIndex;
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;
//
// Initialize local variables
//
- *Count = 0;
- DriverHealthInfo = NULL;
- Handles = NULL;
- DriverHealthHandles = NULL;
- NumHandles = 0;
- HandleCount = 0;
+ *Count = 0;
+ DriverHealthInfo = NULL;
+ Handles = NULL;
+ DriverHealthHandles = NULL;
+ NumHandles = 0;
+ HandleCount = 0;
Status = gBS->LocateHandleBuffer (
ByProtocol,
@@ -316,7 +317,7 @@ EfiBootManagerGetDriverHealthInfo ( &DriverHealthHandles
);
- if (Status == EFI_NOT_FOUND || NumHandles == 0) {
+ if ((Status == EFI_NOT_FOUND) || (NumHandles == 0)) {
//
// If there are no Driver Health Protocols handles, then return EFI_NOT_FOUND
//
@@ -348,14 +349,15 @@ EfiBootManagerGetDriverHealthInfo ( // Retrieve the list of all handles from the handle database
//
Status = gBS->LocateHandleBuffer (
- AllHandles,
- NULL,
- NULL,
- &HandleCount,
- &Handles
- );
+ AllHandles,
+ NULL,
+ NULL,
+ &HandleCount,
+ &Handles
+ );
ASSERT_EFI_ERROR (Status);
}
+
//
// Loop through all the controller handles in the handle database
//
@@ -382,6 +384,7 @@ EfiBootManagerGetDriverHealthInfo ( if (Handles != NULL) {
FreePool (Handles);
}
+
if (DriverHealthHandles != NULL) {
FreePool (DriverHealthHandles);
}
@@ -401,17 +404,18 @@ EfiBootManagerGetDriverHealthInfo ( EFI_STATUS
EFIAPI
EfiBootManagerFreeDriverHealthInfo (
- EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo,
- UINTN Count
+ EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo,
+ UINTN Count
)
{
- UINTN Index;
+ UINTN Index;
for (Index = 0; Index < Count; Index++) {
if (DriverHealthInfo[Index].MessageList != NULL) {
FreePool (DriverHealthInfo[Index].MessageList);
}
}
+
return gBS->FreePool (DriverHealthInfo);
}
@@ -423,22 +427,22 @@ EfiBootManagerFreeDriverHealthInfo ( **/
VOID
BmRepairAllControllers (
- UINTN ReconnectRepairCount
+ UINTN ReconnectRepairCount
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;
- EFI_DRIVER_HEALTH_STATUS HealthStatus;
- UINTN Count;
- UINTN Index;
- BOOLEAN RepairRequired;
- BOOLEAN ConfigurationRequired;
- BOOLEAN ReconnectRequired;
- BOOLEAN RebootRequired;
- EFI_HII_HANDLE *HiiHandles;
- EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
- UINT32 MaxRepairCount;
- UINT32 RepairCount;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;
+ EFI_DRIVER_HEALTH_STATUS HealthStatus;
+ UINTN Count;
+ UINTN Index;
+ BOOLEAN RepairRequired;
+ BOOLEAN ConfigurationRequired;
+ BOOLEAN ReconnectRequired;
+ BOOLEAN RebootRequired;
+ EFI_HII_HANDLE *HiiHandles;
+ EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
+ UINT32 MaxRepairCount;
+ UINT32 RepairCount;
//
// Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver health check.
@@ -447,11 +451,11 @@ BmRepairAllControllers ( return;
}
- Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);
+ Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **)&FormBrowser2);
ASSERT_EFI_ERROR (Status);
MaxRepairCount = PcdGet32 (PcdMaxRepairCount);
- RepairCount = 0;
+ RepairCount = 0;
do {
RepairRequired = FALSE;
@@ -467,7 +471,7 @@ BmRepairAllControllers ( }
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusRepairRequired) {
- RepairRequired = TRUE;
+ RepairRequired = TRUE;
BmDisplayMessages (&DriverHealthInfo[Index]);
@@ -510,6 +514,7 @@ BmRepairAllControllers ( break;
}
}
+
FreePool (HiiHandles);
}
}
@@ -522,7 +527,6 @@ BmRepairAllControllers ( ReconnectRequired = FALSE;
DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);
for (Index = 0; Index < Count; Index++) {
-
BmDisplayMessages (&DriverHealthInfo[Index]);
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusReconnectRequired) {
@@ -531,7 +535,7 @@ BmRepairAllControllers ( //
// Disconnect failed. Need to promote reconnect to a reboot.
//
- RebootRequired = TRUE;
+ RebootRequired = TRUE;
} else {
gBS->ConnectController (DriverHealthInfo[Index].ControllerHandle, NULL, NULL, TRUE);
ReconnectRequired = TRUE;
@@ -539,42 +543,48 @@ BmRepairAllControllers ( }
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusRebootRequired) {
- RebootRequired = TRUE;
+ RebootRequired = TRUE;
}
}
- EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
+ EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
DEBUG_CODE_BEGIN ();
- CHAR16 *ControllerName;
+ CHAR16 *ControllerName;
- DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);
- for (Index = 0; Index < Count; Index++) {
- ControllerName = BmGetControllerName (
- DriverHealthInfo[Index].DriverHealthHandle,
- DriverHealthInfo[Index].ControllerHandle,
- DriverHealthInfo[Index].ChildHandle
- );
- DEBUG ((
- DEBUG_INFO,
- "%02d: %s - %s\n",
- Index,
- ControllerName,
- mBmHealthStatusText[DriverHealthInfo[Index].HealthStatus]
- ));
- if (ControllerName != NULL) {
- FreePool (ControllerName);
- }
+ DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);
+ for (Index = 0; Index < Count; Index++) {
+ ControllerName = BmGetControllerName (
+ DriverHealthInfo[Index].DriverHealthHandle,
+ DriverHealthInfo[Index].ControllerHandle,
+ DriverHealthInfo[Index].ChildHandle
+ );
+ DEBUG ((
+ DEBUG_INFO,
+ "%02d: %s - %s\n",
+ Index,
+ ControllerName,
+ mBmHealthStatusText[DriverHealthInfo[Index].HealthStatus]
+ ));
+ if (ControllerName != NULL) {
+ FreePool (ControllerName);
}
- EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
+ }
+
+ EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
DEBUG_CODE_END ();
if (ReconnectRequired) {
if (ReconnectRepairCount < MAX_RECONNECT_REPAIR) {
BmRepairAllControllers (ReconnectRepairCount + 1);
} else {
- DEBUG ((DEBUG_ERROR, "[%a:%d] Repair failed after %d retries.\n",
- __FUNCTION__, DEBUG_LINE_NUMBER, ReconnectRepairCount));
+ DEBUG ((
+ DEBUG_ERROR,
+ "[%a:%d] Repair failed after %d retries.\n",
+ __FUNCTION__,
+ DEBUG_LINE_NUMBER,
+ ReconnectRepairCount
+ ));
}
}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c index 9dd3c56617..90bee73a23 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c @@ -12,20 +12,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent //
// Lock for linked list
//
-EFI_LOCK mBmHotkeyLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);
-LIST_ENTRY mBmHotkeyList = INITIALIZE_LIST_HEAD_VARIABLE (mBmHotkeyList);
-EFI_EVENT mBmHotkeyTriggered = NULL;
-BOOLEAN mBmHotkeyServiceStarted = FALSE;
-UINTN mBmHotkeySupportCount = 0;
+EFI_LOCK mBmHotkeyLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);
+LIST_ENTRY mBmHotkeyList = INITIALIZE_LIST_HEAD_VARIABLE (mBmHotkeyList);
+EFI_EVENT mBmHotkeyTriggered = NULL;
+BOOLEAN mBmHotkeyServiceStarted = FALSE;
+UINTN mBmHotkeySupportCount = 0;
//
// Set OptionNumber as unassigned value to indicate the option isn't initialized
//
-EFI_BOOT_MANAGER_LOAD_OPTION mBmHotkeyBootOption = { LoadOptionNumberUnassigned };
-
-EFI_BOOT_MANAGER_KEY_OPTION *mBmContinueKeyOption = NULL;
-VOID *mBmTxtInExRegistration = NULL;
+EFI_BOOT_MANAGER_LOAD_OPTION mBmHotkeyBootOption = { LoadOptionNumberUnassigned };
+EFI_BOOT_MANAGER_KEY_OPTION *mBmContinueKeyOption = NULL;
+VOID *mBmTxtInExRegistration = NULL;
/**
Return the buffer size of the EFI_BOOT_MANAGER_KEY_OPTION data.
@@ -40,7 +39,7 @@ BmSizeOfKeyOption ( )
{
return OFFSET_OF (EFI_BOOT_MANAGER_KEY_OPTION, Keys)
- + KeyOption->KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY);
+ + KeyOption->KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY);
}
/**
@@ -55,14 +54,14 @@ BmSizeOfKeyOption ( **/
BOOLEAN
BmIsKeyOptionValid (
- IN CONST EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,
- IN UINTN KeyOptionSize
-)
+ IN CONST EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,
+ IN UINTN KeyOptionSize
+ )
{
- UINT16 OptionName[BM_OPTION_NAME_LEN];
- UINT8 *BootOption;
- UINTN BootOptionSize;
- UINT32 Crc;
+ UINT16 OptionName[BM_OPTION_NAME_LEN];
+ UINT8 *BootOption;
+ UINTN BootOptionSize;
+ UINT32 Crc;
if (BmSizeOfKeyOption (KeyOption) != KeyOptionSize) {
return FALSE;
@@ -72,10 +71,13 @@ BmIsKeyOptionValid ( // Check whether corresponding Boot Option exist
//
UnicodeSPrint (
- OptionName, sizeof (OptionName), L"%s%04x",
- mBmLoadOptionName[LoadOptionTypeBoot], KeyOption->BootOption
+ OptionName,
+ sizeof (OptionName),
+ L"%s%04x",
+ mBmLoadOptionName[LoadOptionTypeBoot],
+ KeyOption->BootOption
);
- GetEfiGlobalVariable2 (OptionName, (VOID **) &BootOption, &BootOptionSize);
+ GetEfiGlobalVariable2 (OptionName, (VOID **)&BootOption, &BootOptionSize);
if (BootOption == NULL) {
return FALSE;
@@ -87,7 +89,7 @@ BmIsKeyOptionValid ( gBS->CalculateCrc32 (BootOption, BootOptionSize, &Crc);
FreePool (BootOption);
- return (BOOLEAN) (KeyOption->BootOptionCrc == Crc);
+ return (BOOLEAN)(KeyOption->BootOptionCrc == Crc);
}
/**
@@ -103,18 +105,19 @@ BmIsKeyOptionValid ( **/
BOOLEAN
BmIsKeyOptionVariable (
- CHAR16 *Name,
- EFI_GUID *Guid,
- UINT16 *OptionNumber
+ CHAR16 *Name,
+ EFI_GUID *Guid,
+ UINT16 *OptionNumber
)
{
- UINTN Index;
- UINTN Uint;
+ UINTN Index;
+ UINTN Uint;
if (!CompareGuid (Guid, &gEfiGlobalVariableGuid) ||
(StrSize (Name) != sizeof (L"Key####")) ||
(StrnCmp (Name, L"Key", 3) != 0)
- ) {
+ )
+ {
return FALSE;
}
@@ -124,7 +127,7 @@ BmIsKeyOptionVariable ( if (Uint == -1) {
return FALSE;
} else {
- *OptionNumber = (UINT16) Uint + *OptionNumber * 0x10;
+ *OptionNumber = (UINT16)Uint + *OptionNumber * 0x10;
}
}
@@ -132,8 +135,8 @@ BmIsKeyOptionVariable ( }
typedef struct {
- EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
- UINTN KeyOptionCount;
+ EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
+ UINTN KeyOptionCount;
} BM_COLLECT_KEY_OPTIONS_PARAM;
/**
@@ -145,18 +148,18 @@ typedef struct { **/
VOID
BmCollectKeyOptions (
- CHAR16 *Name,
- EFI_GUID *Guid,
- VOID *Context
+ CHAR16 *Name,
+ EFI_GUID *Guid,
+ VOID *Context
)
{
- UINTN Index;
- BM_COLLECT_KEY_OPTIONS_PARAM *Param;
- VOID *KeyOption;
- UINT16 OptionNumber;
- UINTN KeyOptionSize;
+ UINTN Index;
+ BM_COLLECT_KEY_OPTIONS_PARAM *Param;
+ VOID *KeyOption;
+ UINT16 OptionNumber;
+ UINTN KeyOptionSize;
- Param = (BM_COLLECT_KEY_OPTIONS_PARAM *) Context;
+ Param = (BM_COLLECT_KEY_OPTIONS_PARAM *)Context;
if (BmIsKeyOptionVariable (Name, Guid, &OptionNumber)) {
GetEfiGlobalVariable2 (Name, &KeyOption, &KeyOptionSize);
@@ -176,11 +179,13 @@ BmCollectKeyOptions ( break;
}
}
+
CopyMem (&Param->KeyOptions[Index + 1], &Param->KeyOptions[Index], (Param->KeyOptionCount - Index) * sizeof (EFI_BOOT_MANAGER_KEY_OPTION));
CopyMem (&Param->KeyOptions[Index], KeyOption, KeyOptionSize);
Param->KeyOptions[Index].OptionNumber = OptionNumber;
Param->KeyOptionCount++;
}
+
FreePool (KeyOption);
}
}
@@ -195,19 +200,19 @@ BmCollectKeyOptions ( **/
EFI_BOOT_MANAGER_KEY_OPTION *
BmGetKeyOptions (
- OUT UINTN *Count
+ OUT UINTN *Count
)
{
- BM_COLLECT_KEY_OPTIONS_PARAM Param;
+ BM_COLLECT_KEY_OPTIONS_PARAM Param;
if (Count == NULL) {
return NULL;
}
- Param.KeyOptions = NULL;
+ Param.KeyOptions = NULL;
Param.KeyOptionCount = 0;
- BmForEachVariable (BmCollectKeyOptions, (VOID *) &Param);
+ BmForEachVariable (BmCollectKeyOptions, (VOID *)&Param);
*Count = Param.KeyOptionCount;
@@ -225,11 +230,11 @@ BmGetKeyOptions ( **/
BOOLEAN
BmBitSet (
- IN UINT32 Value,
- IN UINT32 Bit
+ IN UINT32 Value,
+ IN UINT32 Bit
)
{
- return (BOOLEAN) ((Value & Bit) != 0);
+ return (BOOLEAN)((Value & Bit) != 0);
}
/**
@@ -244,12 +249,12 @@ BmBitSet ( **/
EFI_STATUS
BmInitializeKeyFields (
- IN UINT32 Modifier,
- IN VA_LIST Args,
- OUT EFI_BOOT_MANAGER_KEY_OPTION *KeyOption
+ IN UINT32 Modifier,
+ IN VA_LIST Args,
+ OUT EFI_BOOT_MANAGER_KEY_OPTION *KeyOption
)
{
- EFI_INPUT_KEY *Key;
+ EFI_INPUT_KEY *Key;
if (KeyOption == NULL) {
return EFI_INVALID_PARAMETER;
@@ -261,6 +266,7 @@ BmInitializeKeyFields ( if (Key == NULL) {
break;
}
+
CopyMem (
&KeyOption->Keys[KeyOption->KeyData.Options.InputKeyCount],
Key,
@@ -277,30 +283,36 @@ BmInitializeKeyFields ( }
if ((Modifier & ~(EFI_BOOT_MANAGER_SHIFT_PRESSED
- | EFI_BOOT_MANAGER_CONTROL_PRESSED
- | EFI_BOOT_MANAGER_ALT_PRESSED
- | EFI_BOOT_MANAGER_LOGO_PRESSED
- | EFI_BOOT_MANAGER_MENU_KEY_PRESSED
- | EFI_BOOT_MANAGER_SYS_REQ_PRESSED
- )) != 0) {
+ | EFI_BOOT_MANAGER_CONTROL_PRESSED
+ | EFI_BOOT_MANAGER_ALT_PRESSED
+ | EFI_BOOT_MANAGER_LOGO_PRESSED
+ | EFI_BOOT_MANAGER_MENU_KEY_PRESSED
+ | EFI_BOOT_MANAGER_SYS_REQ_PRESSED
+ )) != 0)
+ {
return EFI_INVALID_PARAMETER;
}
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_SHIFT_PRESSED)) {
KeyOption->KeyData.Options.ShiftPressed = 1;
}
+
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_CONTROL_PRESSED)) {
KeyOption->KeyData.Options.ControlPressed = 1;
}
+
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_ALT_PRESSED)) {
KeyOption->KeyData.Options.AltPressed = 1;
}
+
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_LOGO_PRESSED)) {
KeyOption->KeyData.Options.LogoPressed = 1;
}
+
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_MENU_KEY_PRESSED)) {
KeyOption->KeyData.Options.MenuPressed = 1;
}
+
if (BmBitSet (Modifier, EFI_BOOT_MANAGER_SYS_REQ_PRESSED)) {
KeyOption->KeyData.Options.SysReqPressed = 1;
}
@@ -337,14 +349,14 @@ EfiBootManagerHotkeyBoot ( EFI_STATUS
EFIAPI
BmHotkeyCallback (
- IN EFI_KEY_DATA *KeyData
-)
+ IN EFI_KEY_DATA *KeyData
+ )
{
- LIST_ENTRY *Link;
- BM_HOTKEY *Hotkey;
- CHAR16 OptionName[BM_OPTION_NAME_LEN];
- EFI_STATUS Status;
- EFI_KEY_DATA *HotkeyData;
+ LIST_ENTRY *Link;
+ BM_HOTKEY *Hotkey;
+ CHAR16 OptionName[BM_OPTION_NAME_LEN];
+ EFI_STATUS Status;
+ EFI_KEY_DATA *HotkeyData;
if (mBmHotkeyBootOption.OptionNumber != LoadOptionNumberUnassigned) {
//
@@ -357,9 +369,10 @@ BmHotkeyCallback ( EfiAcquireLock (&mBmHotkeyLock);
for ( Link = GetFirstNode (&mBmHotkeyList)
- ; !IsNull (&mBmHotkeyList, Link)
- ; Link = GetNextNode (&mBmHotkeyList, Link)
- ) {
+ ; !IsNull (&mBmHotkeyList, Link)
+ ; Link = GetNextNode (&mBmHotkeyList, Link)
+ )
+ {
Hotkey = BM_HOTKEY_FROM_LINK (Link);
//
@@ -370,10 +383,10 @@ BmHotkeyCallback ( if ((KeyData->Key.ScanCode == HotkeyData->Key.ScanCode) &&
(KeyData->Key.UnicodeChar == HotkeyData->Key.UnicodeChar) &&
(((KeyData->KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID) != 0) ?
- (KeyData->KeyState.KeyShiftState == HotkeyData->KeyState.KeyShiftState) : TRUE
+ (KeyData->KeyState.KeyShiftState == HotkeyData->KeyState.KeyShiftState) : TRUE
)
- ) {
-
+ )
+ {
//
// Receive an expecting key stroke, transit to next waiting state
//
@@ -395,8 +408,11 @@ BmHotkeyCallback ( // Launch its BootOption
//
UnicodeSPrint (
- OptionName, sizeof (OptionName), L"%s%04x",
- mBmLoadOptionName[LoadOptionTypeBoot], Hotkey->BootOption
+ OptionName,
+ sizeof (OptionName),
+ L"%s%04x",
+ mBmLoadOptionName[LoadOptionTypeBoot],
+ Hotkey->BootOption
);
Status = EfiBootManagerVariableToLoadOption (OptionName, &mBmHotkeyBootOption);
DEBUG ((DEBUG_INFO, "[Bds]Hotkey for %s pressed - %r\n", OptionName, Status));
@@ -413,8 +429,8 @@ BmHotkeyCallback ( //
Hotkey->WaitingKey = 0;
}
-
}
+
EfiReleaseLock (&mBmHotkeyLock);
return EFI_SUCCESS;
@@ -432,11 +448,11 @@ BmHotkeyCallback ( **/
EFI_HANDLE *
BmGetActiveConsoleIn (
- OUT UINTN *Count
+ OUT UINTN *Count
)
{
- EFI_STATUS Status;
- EFI_HANDLE *Handles;
+ EFI_STATUS Status;
+ EFI_HANDLE *Handles;
Handles = NULL;
*Count = 0;
@@ -479,20 +495,20 @@ BmGetActiveConsoleIn ( **/
EFI_STATUS
BmUnregisterHotkeyNotify (
- IN BM_HOTKEY *Hotkey
+ IN BM_HOTKEY *Hotkey
)
{
- EFI_STATUS Status;
- UINTN Index;
- UINTN KeyIndex;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;
- VOID *NotifyHandle;
+ EFI_STATUS Status;
+ UINTN Index;
+ UINTN KeyIndex;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;
+ VOID *NotifyHandle;
Handles = BmGetActiveConsoleIn (&HandleCount);
for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->HandleProtocol (Handles[Index], &gEfiSimpleTextInputExProtocolGuid, (VOID **) &TxtInEx);
+ Status = gBS->HandleProtocol (Handles[Index], &gEfiSimpleTextInputExProtocolGuid, (VOID **)&TxtInEx);
ASSERT_EFI_ERROR (Status);
for (KeyIndex = 0; KeyIndex < Hotkey->CodeCount; KeyIndex++) {
Status = TxtInEx->RegisterKeyNotify (
@@ -530,9 +546,9 @@ BmRegisterHotkeyNotify ( IN BM_HOTKEY *Hotkey
)
{
- EFI_STATUS Status;
- UINTN Index;
- VOID *NotifyHandle;
+ EFI_STATUS Status;
+ UINTN Index;
+ VOID *NotifyHandle;
for (Index = 0; Index < Hotkey->CodeCount; Index++) {
Status = TxtInEx->RegisterKeyNotify (
@@ -573,58 +589,64 @@ BmRegisterHotkeyNotify ( **/
VOID
BmGenerateKeyShiftState (
- IN UINTN Depth,
- IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,
- IN UINT32 KeyShiftState,
- IN UINT32 *KeyShiftStates,
- IN UINTN *KeyShiftStateCount
+ IN UINTN Depth,
+ IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,
+ IN UINT32 KeyShiftState,
+ IN UINT32 *KeyShiftStates,
+ IN UINTN *KeyShiftStateCount
)
{
switch (Depth) {
- case 0:
- if (KeyOption->KeyData.Options.ShiftPressed) {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_SHIFT_PRESSED, KeyShiftStates, KeyShiftStateCount);
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_SHIFT_PRESSED, KeyShiftStates, KeyShiftStateCount);
- } else {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
- }
- break;
+ case 0:
+ if (KeyOption->KeyData.Options.ShiftPressed) {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_SHIFT_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_SHIFT_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ } else {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
+ }
- case 1:
- if (KeyOption->KeyData.Options.ControlPressed) {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_CONTROL_PRESSED, KeyShiftStates, KeyShiftStateCount);
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_CONTROL_PRESSED, KeyShiftStates, KeyShiftStateCount);
- } else {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
- }
- break;
+ break;
- case 2:
- if (KeyOption->KeyData.Options.AltPressed) {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_ALT_PRESSED, KeyShiftStates, KeyShiftStateCount);
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_ALT_PRESSED, KeyShiftStates, KeyShiftStateCount);
- } else {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
- }
- break;
- case 3:
- if (KeyOption->KeyData.Options.LogoPressed) {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_LOGO_PRESSED, KeyShiftStates, KeyShiftStateCount);
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_LOGO_PRESSED, KeyShiftStates, KeyShiftStateCount);
- } else {
- BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
- }
- break;
- case 4:
- if (KeyOption->KeyData.Options.MenuPressed) {
- KeyShiftState |= EFI_MENU_KEY_PRESSED;
- }
- if (KeyOption->KeyData.Options.SysReqPressed) {
- KeyShiftState |= EFI_SYS_REQ_PRESSED;
- }
- KeyShiftStates[*KeyShiftStateCount] = KeyShiftState;
- (*KeyShiftStateCount)++;
- break;
+ case 1:
+ if (KeyOption->KeyData.Options.ControlPressed) {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_CONTROL_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_CONTROL_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ } else {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
+ }
+
+ break;
+
+ case 2:
+ if (KeyOption->KeyData.Options.AltPressed) {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_ALT_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_ALT_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ } else {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
+ }
+
+ break;
+ case 3:
+ if (KeyOption->KeyData.Options.LogoPressed) {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_RIGHT_LOGO_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState | EFI_LEFT_LOGO_PRESSED, KeyShiftStates, KeyShiftStateCount);
+ } else {
+ BmGenerateKeyShiftState (Depth + 1, KeyOption, KeyShiftState, KeyShiftStates, KeyShiftStateCount);
+ }
+
+ break;
+ case 4:
+ if (KeyOption->KeyData.Options.MenuPressed) {
+ KeyShiftState |= EFI_MENU_KEY_PRESSED;
+ }
+
+ if (KeyOption->KeyData.Options.SysReqPressed) {
+ KeyShiftState |= EFI_SYS_REQ_PRESSED;
+ }
+
+ KeyShiftStates[*KeyShiftStateCount] = KeyShiftState;
+ (*KeyShiftStateCount)++;
+ break;
}
}
@@ -636,22 +658,22 @@ BmGenerateKeyShiftState ( **/
EFI_STATUS
BmProcessKeyOption (
- IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOption
+ IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOption
)
{
- EFI_STATUS Status;
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;
- EFI_HANDLE *Handles;
- UINTN HandleCount;
- UINTN HandleIndex;
- UINTN Index;
- BM_HOTKEY *Hotkey;
- UINTN KeyIndex;
+ EFI_STATUS Status;
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;
+ EFI_HANDLE *Handles;
+ UINTN HandleCount;
+ UINTN HandleIndex;
+ UINTN Index;
+ BM_HOTKEY *Hotkey;
+ UINTN KeyIndex;
//
// 16 is enough to enumerate all the possible combination of LEFT_XXX and RIGHT_XXX
//
- UINT32 KeyShiftStates[16];
- UINTN KeyShiftStateCount;
+ UINT32 KeyShiftStates[16];
+ UINTN KeyShiftStateCount;
if (KeyOption->KeyData.Options.InputKeyCount > mBmHotkeySupportCount) {
return EFI_UNSUPPORTED;
@@ -671,17 +693,18 @@ BmProcessKeyOption ( Hotkey->Signature = BM_HOTKEY_SIGNATURE;
Hotkey->BootOption = KeyOption->BootOption;
- Hotkey->IsContinue = (BOOLEAN) (KeyOption == mBmContinueKeyOption);
- Hotkey->CodeCount = (UINT8) KeyOption->KeyData.Options.InputKeyCount;
+ Hotkey->IsContinue = (BOOLEAN)(KeyOption == mBmContinueKeyOption);
+ Hotkey->CodeCount = (UINT8)KeyOption->KeyData.Options.InputKeyCount;
for (KeyIndex = 0; KeyIndex < Hotkey->CodeCount; KeyIndex++) {
CopyMem (&Hotkey->KeyData[KeyIndex].Key, &KeyOption->Keys[KeyIndex], sizeof (EFI_INPUT_KEY));
Hotkey->KeyData[KeyIndex].KeyState.KeyShiftState = KeyShiftStates[Index];
}
+
InsertTailList (&mBmHotkeyList, &Hotkey->Link);
for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) {
- Status = gBS->HandleProtocol (Handles[HandleIndex], &gEfiSimpleTextInputExProtocolGuid, (VOID **) &TxtInEx);
+ Status = gBS->HandleProtocol (Handles[HandleIndex], &gEfiSimpleTextInputExProtocolGuid, (VOID **)&TxtInEx);
ASSERT_EFI_ERROR (Status);
BmRegisterHotkeyNotify (TxtInEx, Hotkey);
}
@@ -690,6 +713,7 @@ BmProcessKeyOption ( if (Handles != NULL) {
FreePool (Handles);
}
+
EfiReleaseLock (&mBmHotkeyLock);
return EFI_SUCCESS;
@@ -705,8 +729,8 @@ BmProcessKeyOption ( VOID
EFIAPI
BmTxtInExCallback (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
EFI_STATUS Status;
@@ -717,24 +741,24 @@ BmTxtInExCallback ( while (TRUE) {
BufferSize = sizeof (EFI_HANDLE);
- Status = gBS->LocateHandle (
- ByRegisterNotify,
- NULL,
- mBmTxtInExRegistration,
- &BufferSize,
- &Handle
- );
+ Status = gBS->LocateHandle (
+ ByRegisterNotify,
+ NULL,
+ mBmTxtInExRegistration,
+ &BufferSize,
+ &Handle
+ );
if (EFI_ERROR (Status)) {
//
// If no more notification events exist
//
- return ;
+ return;
}
Status = gBS->HandleProtocol (
Handle,
&gEfiSimpleTextInputExProtocolGuid,
- (VOID **) &TxtInEx
+ (VOID **)&TxtInEx
);
ASSERT_EFI_ERROR (Status);
@@ -745,6 +769,7 @@ BmTxtInExCallback ( for (Link = GetFirstNode (&mBmHotkeyList); !IsNull (&mBmHotkeyList, Link); Link = GetNextNode (&mBmHotkeyList, Link)) {
BmRegisterHotkeyNotify (TxtInEx, BM_HOTKEY_FROM_LINK (Link));
}
+
EfiReleaseLock (&mBmHotkeyLock);
}
}
@@ -760,8 +785,8 @@ BmTxtInExCallback ( **/
EFI_STATUS
BmFreeKeyOptions (
- IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions,
- IN UINTN KeyOptionCount
+ IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions,
+ IN UINTN KeyOptionCount
)
{
if (KeyOptions != NULL) {
@@ -786,7 +811,7 @@ BmFreeKeyOptions ( EFI_STATUS
EFIAPI
EfiBootManagerRegisterContinueKeyOption (
- IN UINT32 Modifier,
+ IN UINT32 Modifier,
...
)
{
@@ -823,12 +848,12 @@ EfiBootManagerRegisterContinueKeyOption ( VOID
EFIAPI
BmStopHotkeyService (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
- LIST_ENTRY *Link;
- BM_HOTKEY *Hotkey;
+ LIST_ENTRY *Link;
+ BM_HOTKEY *Hotkey;
DEBUG ((DEBUG_INFO, "[Bds]Stop Hotkey Service!\n"));
gBS->CloseEvent (Event);
@@ -837,9 +862,10 @@ BmStopHotkeyService ( for (Link = GetFirstNode (&mBmHotkeyList); !IsNull (&mBmHotkeyList, Link); ) {
Hotkey = BM_HOTKEY_FROM_LINK (Link);
BmUnregisterHotkeyNotify (Hotkey);
- Link = RemoveEntryList (Link);
+ Link = RemoveEntryList (Link);
FreePool (Hotkey);
}
+
EfiReleaseLock (&mBmHotkeyLock);
}
@@ -854,7 +880,7 @@ BmStopHotkeyService ( EFI_STATUS
EFIAPI
EfiBootManagerStartHotkeyService (
- IN EFI_EVENT *HotkeyTriggered
+ IN EFI_EVENT *HotkeyTriggered
)
{
EFI_STATUS Status;
@@ -864,11 +890,12 @@ EfiBootManagerStartHotkeyService ( EFI_EVENT Event;
UINT32 *BootOptionSupport;
- GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **) &BootOptionSupport, NULL);
+ GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **)&BootOptionSupport, NULL);
if (BootOptionSupport != NULL) {
if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY) != 0) {
mBmHotkeySupportCount = ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT));
}
+
FreePool (BootOptionSupport);
}
@@ -891,9 +918,10 @@ EfiBootManagerStartHotkeyService ( }
KeyOptions = BmGetKeyOptions (&KeyOptionCount);
- for (Index = 0; Index < KeyOptionCount; Index ++) {
+ for (Index = 0; Index < KeyOptionCount; Index++) {
BmProcessKeyOption (&KeyOptions[Index]);
}
+
BmFreeKeyOptions (KeyOptions, KeyOptionCount);
if (mBmContinueKeyOption != NULL) {
@@ -942,27 +970,30 @@ EfiBootManagerStartHotkeyService ( EFI_STATUS
EFIAPI
EfiBootManagerAddKeyOptionVariable (
- OUT EFI_BOOT_MANAGER_KEY_OPTION *AddedOption OPTIONAL,
- IN UINT16 BootOptionNumber,
- IN UINT32 Modifier,
+ OUT EFI_BOOT_MANAGER_KEY_OPTION *AddedOption OPTIONAL,
+ IN UINT16 BootOptionNumber,
+ IN UINT32 Modifier,
...
)
{
- EFI_STATUS Status;
- VA_LIST Args;
- VOID *BootOption;
- UINTN BootOptionSize;
- CHAR16 BootOptionName[BM_OPTION_NAME_LEN];
- EFI_BOOT_MANAGER_KEY_OPTION KeyOption;
- EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
- UINTN KeyOptionCount;
- UINTN Index;
- UINTN KeyOptionNumber;
- CHAR16 KeyOptionName[sizeof ("Key####")];
+ EFI_STATUS Status;
+ VA_LIST Args;
+ VOID *BootOption;
+ UINTN BootOptionSize;
+ CHAR16 BootOptionName[BM_OPTION_NAME_LEN];
+ EFI_BOOT_MANAGER_KEY_OPTION KeyOption;
+ EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
+ UINTN KeyOptionCount;
+ UINTN Index;
+ UINTN KeyOptionNumber;
+ CHAR16 KeyOptionName[sizeof ("Key####")];
UnicodeSPrint (
- BootOptionName, sizeof (BootOptionName), L"%s%04x",
- mBmLoadOptionName[LoadOptionTypeBoot], BootOptionNumber
+ BootOptionName,
+ sizeof (BootOptionName),
+ L"%s%04x",
+ mBmLoadOptionName[LoadOptionTypeBoot],
+ BootOptionNumber
);
GetEfiGlobalVariable2 (BootOptionName, &BootOption, &BootOptionSize);
@@ -972,7 +1003,7 @@ EfiBootManagerAddKeyOptionVariable ( ZeroMem (&KeyOption, sizeof (EFI_BOOT_MANAGER_KEY_OPTION));
KeyOption.BootOption = BootOptionNumber;
- Status = gBS->CalculateCrc32 (BootOption, BootOptionSize, &KeyOption.BootOptionCrc);
+ Status = gBS->CalculateCrc32 (BootOption, BootOptionSize, &KeyOption.BootOptionCrc);
ASSERT_EFI_ERROR (Status);
FreePool (BootOption);
@@ -990,16 +1021,19 @@ EfiBootManagerAddKeyOptionVariable ( KeyOptions = BmGetKeyOptions (&KeyOptionCount);
for (Index = 0; Index < KeyOptionCount; Index++) {
if ((KeyOptions[Index].KeyData.PackedValue == KeyOption.KeyData.PackedValue) &&
- (CompareMem (KeyOptions[Index].Keys, KeyOption.Keys, KeyOption.KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY)) == 0)) {
+ (CompareMem (KeyOptions[Index].Keys, KeyOption.Keys, KeyOption.KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY)) == 0))
+ {
break;
}
if ((KeyOptionNumber == LoadOptionNumberUnassigned) &&
(KeyOptions[Index].OptionNumber > Index)
- ){
+ )
+ {
KeyOptionNumber = Index;
}
}
+
BmFreeKeyOptions (KeyOptions, KeyOptionCount);
if (Index < KeyOptionCount) {
@@ -1053,22 +1087,22 @@ EfiBootManagerAddKeyOptionVariable ( EFI_STATUS
EFIAPI
EfiBootManagerDeleteKeyOptionVariable (
- IN EFI_BOOT_MANAGER_KEY_OPTION *DeletedOption OPTIONAL,
- IN UINT32 Modifier,
+ IN EFI_BOOT_MANAGER_KEY_OPTION *DeletedOption OPTIONAL,
+ IN UINT32 Modifier,
...
)
{
- EFI_STATUS Status;
- UINTN Index;
- VA_LIST Args;
- EFI_BOOT_MANAGER_KEY_OPTION KeyOption;
- EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
- UINTN KeyOptionCount;
- LIST_ENTRY *Link;
- BM_HOTKEY *Hotkey;
- UINT32 ShiftState;
- BOOLEAN Match;
- CHAR16 KeyOptionName[sizeof ("Key####")];
+ EFI_STATUS Status;
+ UINTN Index;
+ VA_LIST Args;
+ EFI_BOOT_MANAGER_KEY_OPTION KeyOption;
+ EFI_BOOT_MANAGER_KEY_OPTION *KeyOptions;
+ UINTN KeyOptionCount;
+ LIST_ENTRY *Link;
+ BM_HOTKEY *Hotkey;
+ UINT32 ShiftState;
+ BOOLEAN Match;
+ CHAR16 KeyOptionName[sizeof ("Key####")];
ZeroMem (&KeyOption, sizeof (EFI_BOOT_MANAGER_KEY_OPTION));
VA_START (Args, Modifier);
@@ -1086,19 +1120,20 @@ EfiBootManagerDeleteKeyOptionVariable ( //
for (Link = GetFirstNode (&mBmHotkeyList); !IsNull (&mBmHotkeyList, Link); ) {
Hotkey = BM_HOTKEY_FROM_LINK (Link);
- Match = (BOOLEAN) (Hotkey->CodeCount == KeyOption.KeyData.Options.InputKeyCount);
+ Match = (BOOLEAN)(Hotkey->CodeCount == KeyOption.KeyData.Options.InputKeyCount);
for (Index = 0; Match && (Index < Hotkey->CodeCount); Index++) {
ShiftState = Hotkey->KeyData[Index].KeyState.KeyShiftState;
if (
- (BmBitSet (ShiftState, EFI_RIGHT_SHIFT_PRESSED | EFI_LEFT_SHIFT_PRESSED) != KeyOption.KeyData.Options.ShiftPressed) ||
- (BmBitSet (ShiftState, EFI_RIGHT_CONTROL_PRESSED | EFI_LEFT_CONTROL_PRESSED) != KeyOption.KeyData.Options.ControlPressed) ||
- (BmBitSet (ShiftState, EFI_RIGHT_ALT_PRESSED | EFI_LEFT_ALT_PRESSED) != KeyOption.KeyData.Options.AltPressed) ||
- (BmBitSet (ShiftState, EFI_RIGHT_LOGO_PRESSED | EFI_LEFT_LOGO_PRESSED) != KeyOption.KeyData.Options.LogoPressed) ||
- (BmBitSet (ShiftState, EFI_MENU_KEY_PRESSED) != KeyOption.KeyData.Options.MenuPressed) ||
- (BmBitSet (ShiftState, EFI_SYS_REQ_PRESSED) != KeyOption.KeyData.Options.SysReqPressed) ||
- (CompareMem (&Hotkey->KeyData[Index].Key, &KeyOption.Keys[Index], sizeof (EFI_INPUT_KEY)) != 0)
- ) {
+ (BmBitSet (ShiftState, EFI_RIGHT_SHIFT_PRESSED | EFI_LEFT_SHIFT_PRESSED) != KeyOption.KeyData.Options.ShiftPressed) ||
+ (BmBitSet (ShiftState, EFI_RIGHT_CONTROL_PRESSED | EFI_LEFT_CONTROL_PRESSED) != KeyOption.KeyData.Options.ControlPressed) ||
+ (BmBitSet (ShiftState, EFI_RIGHT_ALT_PRESSED | EFI_LEFT_ALT_PRESSED) != KeyOption.KeyData.Options.AltPressed) ||
+ (BmBitSet (ShiftState, EFI_RIGHT_LOGO_PRESSED | EFI_LEFT_LOGO_PRESSED) != KeyOption.KeyData.Options.LogoPressed) ||
+ (BmBitSet (ShiftState, EFI_MENU_KEY_PRESSED) != KeyOption.KeyData.Options.MenuPressed) ||
+ (BmBitSet (ShiftState, EFI_SYS_REQ_PRESSED) != KeyOption.KeyData.Options.SysReqPressed) ||
+ (CompareMem (&Hotkey->KeyData[Index].Key, &KeyOption.Keys[Index], sizeof (EFI_INPUT_KEY)) != 0)
+ )
+ {
//
// Break when any field doesn't match
//
@@ -1123,26 +1158,31 @@ EfiBootManagerDeleteKeyOptionVariable ( for (Index = 0; Index < KeyOptionCount; Index++) {
if ((KeyOptions[Index].KeyData.PackedValue == KeyOption.KeyData.PackedValue) &&
(CompareMem (
- KeyOptions[Index].Keys, KeyOption.Keys,
- KeyOption.KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY)) == 0)
- ) {
+ KeyOptions[Index].Keys,
+ KeyOption.Keys,
+ KeyOption.KeyData.Options.InputKeyCount * sizeof (EFI_INPUT_KEY)
+ ) == 0)
+ )
+ {
UnicodeSPrint (KeyOptionName, sizeof (KeyOptionName), L"Key%04x", KeyOptions[Index].OptionNumber);
Status = gRT->SetVariable (
- KeyOptionName,
- &gEfiGlobalVariableGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- 0,
- NULL
- );
+ KeyOptionName,
+ &gEfiGlobalVariableGuid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+ 0,
+ NULL
+ );
//
// Return the deleted key option in case needed by caller
//
if (DeletedOption != NULL) {
CopyMem (DeletedOption, &KeyOptions[Index], sizeof (EFI_BOOT_MANAGER_KEY_OPTION));
}
+
break;
}
}
+
BmFreeKeyOptions (KeyOptions, KeyOptionCount);
EfiReleaseLock (&mBmHotkeyLock);
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c index de9dde2d3d..32a9cbb425 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c @@ -10,20 +10,20 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "InternalBm.h"
GLOBAL_REMOVE_IF_UNREFERENCED
- CHAR16 *mBmLoadOptionName[] = {
- L"Driver",
- L"SysPrep",
- L"Boot",
- L"PlatformRecovery"
- };
+CHAR16 *mBmLoadOptionName[] = {
+ L"Driver",
+ L"SysPrep",
+ L"Boot",
+ L"PlatformRecovery"
+};
GLOBAL_REMOVE_IF_UNREFERENCED
- CHAR16 *mBmLoadOptionOrderName[] = {
- EFI_DRIVER_ORDER_VARIABLE_NAME,
- EFI_SYS_PREP_ORDER_VARIABLE_NAME,
- EFI_BOOT_ORDER_VARIABLE_NAME,
- NULL // PlatformRecovery#### doesn't have associated *Order variable
- };
+CHAR16 *mBmLoadOptionOrderName[] = {
+ EFI_DRIVER_ORDER_VARIABLE_NAME,
+ EFI_SYS_PREP_ORDER_VARIABLE_NAME,
+ EFI_BOOT_ORDER_VARIABLE_NAME,
+ NULL // PlatformRecovery#### doesn't have associated *Order variable
+};
/**
Call Visitor function for each variable in variable storage.
@@ -33,32 +33,33 @@ GLOBAL_REMOVE_IF_UNREFERENCED **/
VOID
BmForEachVariable (
- BM_VARIABLE_VISITOR Visitor,
- VOID *Context
+ BM_VARIABLE_VISITOR Visitor,
+ VOID *Context
)
{
- EFI_STATUS Status;
- CHAR16 *Name;
- EFI_GUID Guid;
- UINTN NameSize;
- UINTN NewNameSize;
+ EFI_STATUS Status;
+ CHAR16 *Name;
+ EFI_GUID Guid;
+ UINTN NameSize;
+ UINTN NewNameSize;
NameSize = sizeof (CHAR16);
- Name = AllocateZeroPool (NameSize);
+ Name = AllocateZeroPool (NameSize);
ASSERT (Name != NULL);
while (TRUE) {
NewNameSize = NameSize;
- Status = gRT->GetNextVariableName (&NewNameSize, Name, &Guid);
+ Status = gRT->GetNextVariableName (&NewNameSize, Name, &Guid);
if (Status == EFI_BUFFER_TOO_SMALL) {
Name = ReallocatePool (NameSize, NewNameSize, Name);
ASSERT (Name != NULL);
- Status = gRT->GetNextVariableName (&NewNameSize, Name, &Guid);
+ Status = gRT->GetNextVariableName (&NewNameSize, Name, &Guid);
NameSize = NewNameSize;
}
if (Status == EFI_NOT_FOUND) {
break;
}
+
ASSERT_EFI_ERROR (Status);
Visitor (Name, &Guid, Context);
@@ -80,35 +81,37 @@ BmForEachVariable ( **/
EFI_STATUS
BmGetFreeOptionNumber (
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType,
- OUT UINT16 *FreeOptionNumber
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType,
+ OUT UINT16 *FreeOptionNumber
)
{
-
- UINTN OptionNumber;
- UINTN Index;
- UINT16 *OptionOrder;
- UINTN OptionOrderSize;
- UINT16 *BootNext;
+ UINTN OptionNumber;
+ UINTN Index;
+ UINT16 *OptionOrder;
+ UINTN OptionOrderSize;
+ UINT16 *BootNext;
ASSERT (FreeOptionNumber != NULL);
- ASSERT (LoadOptionType == LoadOptionTypeDriver ||
- LoadOptionType == LoadOptionTypeBoot ||
- LoadOptionType == LoadOptionTypeSysPrep);
+ ASSERT (
+ LoadOptionType == LoadOptionTypeDriver ||
+ LoadOptionType == LoadOptionTypeBoot ||
+ LoadOptionType == LoadOptionTypeSysPrep
+ );
- GetEfiGlobalVariable2 (mBmLoadOptionOrderName[LoadOptionType], (VOID **) &OptionOrder, &OptionOrderSize);
+ GetEfiGlobalVariable2 (mBmLoadOptionOrderName[LoadOptionType], (VOID **)&OptionOrder, &OptionOrderSize);
ASSERT ((OptionOrder != NULL && OptionOrderSize != 0) || (OptionOrder == NULL && OptionOrderSize == 0));
BootNext = NULL;
if (LoadOptionType == LoadOptionTypeBoot) {
- GetEfiGlobalVariable2 (L"BootNext", (VOID**) &BootNext, NULL);
+ GetEfiGlobalVariable2 (L"BootNext", (VOID **)&BootNext, NULL);
}
for (OptionNumber = 0;
OptionNumber < OptionOrderSize / sizeof (UINT16)
- + ((BootNext != NULL) ? 1 : 0);
+ + ((BootNext != NULL) ? 1 : 0);
OptionNumber++
- ) {
+ )
+ {
//
// Search in OptionOrder whether the OptionNumber exists
//
@@ -124,10 +127,12 @@ BmGetFreeOptionNumber ( //
if ((Index == OptionOrderSize / sizeof (UINT16)) &&
((BootNext == NULL) || (OptionNumber != *BootNext))
- ) {
+ )
+ {
break;
}
}
+
if (OptionOrder != NULL) {
FreePool (OptionOrder);
}
@@ -144,7 +149,7 @@ BmGetFreeOptionNumber ( if (OptionNumber == 0x10000) {
return EFI_OUT_OF_RESOURCES;
} else {
- *FreeOptionNumber = (UINT16) OptionNumber;
+ *FreeOptionNumber = (UINT16)OptionNumber;
return EFI_SUCCESS;
}
}
@@ -161,23 +166,24 @@ BmGetFreeOptionNumber ( EFI_STATUS
EFIAPI
EfiBootManagerLoadOptionToVariable (
- IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Option
+ IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Option
)
{
- EFI_STATUS Status;
- UINTN VariableSize;
- UINT8 *Variable;
- UINT8 *Ptr;
- CHAR16 OptionName[BM_OPTION_NAME_LEN];
- CHAR16 *Description;
- CHAR16 NullChar;
- EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock;
- UINT32 VariableAttributes;
+ EFI_STATUS Status;
+ UINTN VariableSize;
+ UINT8 *Variable;
+ UINT8 *Ptr;
+ CHAR16 OptionName[BM_OPTION_NAME_LEN];
+ CHAR16 *Description;
+ CHAR16 NullChar;
+ EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock;
+ UINT32 VariableAttributes;
if ((Option->OptionNumber == LoadOptionNumberUnassigned) ||
(Option->FilePath == NULL) ||
- ((UINT32) Option->OptionType >= LoadOptionTypeMax)
- ) {
+ ((UINT32)Option->OptionType >= LoadOptionTypeMax)
+ )
+ {
return EFI_INVALID_PARAMETER;
}
@@ -206,26 +212,26 @@ in the array is variable length, and ends at the device path end structure.
*/
VariableSize = sizeof (Option->Attributes)
- + sizeof (UINT16)
- + StrSize (Description)
- + GetDevicePathSize (Option->FilePath)
- + Option->OptionalDataSize;
+ + sizeof (UINT16)
+ + StrSize (Description)
+ + GetDevicePathSize (Option->FilePath)
+ + Option->OptionalDataSize;
- Variable = AllocatePool (VariableSize);
+ Variable = AllocatePool (VariableSize);
ASSERT (Variable != NULL);
- Ptr = Variable;
- WriteUnaligned32 ((UINT32 *) Ptr, Option->Attributes);
- Ptr += sizeof (Option->Attributes);
+ Ptr = Variable;
+ WriteUnaligned32 ((UINT32 *)Ptr, Option->Attributes);
+ Ptr += sizeof (Option->Attributes);
- WriteUnaligned16 ((UINT16 *) Ptr, (UINT16) GetDevicePathSize (Option->FilePath));
- Ptr += sizeof (UINT16);
+ WriteUnaligned16 ((UINT16 *)Ptr, (UINT16)GetDevicePathSize (Option->FilePath));
+ Ptr += sizeof (UINT16);
CopyMem (Ptr, Description, StrSize (Description));
- Ptr += StrSize (Description);
+ Ptr += StrSize (Description);
CopyMem (Ptr, Option->FilePath, GetDevicePathSize (Option->FilePath));
- Ptr += GetDevicePathSize (Option->FilePath);
+ Ptr += GetDevicePathSize (Option->FilePath);
CopyMem (Ptr, Option->OptionalData, Option->OptionalDataSize);
@@ -236,11 +242,12 @@ structure. //
// Lock the PlatformRecovery####
//
- Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **) &VariableLock);
+ Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **)&VariableLock);
if (!EFI_ERROR (Status)) {
Status = VariableLock->RequestToLock (VariableLock, OptionName, &gEfiGlobalVariableGuid);
ASSERT_EFI_ERROR (Status);
}
+
VariableAttributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
}
@@ -270,20 +277,21 @@ structure. **/
EFI_STATUS
BmAddOptionNumberToOrderVariable (
- IN CHAR16 *OptionOrderName,
- IN UINT16 OptionNumber,
- IN UINTN Position
+ IN CHAR16 *OptionOrderName,
+ IN UINT16 OptionNumber,
+ IN UINTN Position
)
{
- EFI_STATUS Status;
- UINTN Index;
- UINT16 *OptionOrder;
- UINT16 *NewOptionOrder;
- UINTN OptionOrderSize;
+ EFI_STATUS Status;
+ UINTN Index;
+ UINT16 *OptionOrder;
+ UINT16 *NewOptionOrder;
+ UINTN OptionOrderSize;
+
//
// Update the option order variable
//
- GetEfiGlobalVariable2 (OptionOrderName, (VOID **) &OptionOrder, &OptionOrderSize);
+ GetEfiGlobalVariable2 (OptionOrderName, (VOID **)&OptionOrder, &OptionOrderSize);
ASSERT ((OptionOrder != NULL && OptionOrderSize != 0) || (OptionOrder == NULL && OptionOrderSize == 0));
Status = EFI_SUCCESS;
@@ -295,7 +303,7 @@ BmAddOptionNumberToOrderVariable ( }
if (!EFI_ERROR (Status)) {
- Position = MIN (Position, OptionOrderSize / sizeof (UINT16));
+ Position = MIN (Position, OptionOrderSize / sizeof (UINT16));
NewOptionOrder = AllocatePool (OptionOrderSize + sizeof (UINT16));
ASSERT (NewOptionOrder != NULL);
@@ -303,6 +311,7 @@ BmAddOptionNumberToOrderVariable ( CopyMem (NewOptionOrder, OptionOrder, Position * sizeof (UINT16));
CopyMem (&NewOptionOrder[Position + 1], &OptionOrder[Position], OptionOrderSize - Position * sizeof (UINT16));
}
+
NewOptionOrder[Position] = OptionNumber;
Status = gRT->SetVariable (
@@ -345,21 +354,22 @@ BmAddOptionNumberToOrderVariable ( EFI_STATUS
EFIAPI
EfiBootManagerAddLoadOptionVariable (
- IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option,
- IN UINTN Position
+ IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option,
+ IN UINTN Position
)
{
- EFI_STATUS Status;
- UINT16 OptionNumber;
+ EFI_STATUS Status;
+ UINT16 OptionNumber;
if (Option == NULL) {
return EFI_INVALID_PARAMETER;
}
- if (Option->OptionType != LoadOptionTypeDriver &&
- Option->OptionType != LoadOptionTypeSysPrep &&
- Option->OptionType != LoadOptionTypeBoot
- ) {
+ if ((Option->OptionType != LoadOptionTypeDriver) &&
+ (Option->OptionType != LoadOptionTypeSysPrep) &&
+ (Option->OptionType != LoadOptionTypeBoot)
+ )
+ {
return EFI_INVALID_PARAMETER;
}
@@ -371,6 +381,7 @@ EfiBootManagerAddLoadOptionVariable ( if (EFI_ERROR (Status)) {
return Status;
}
+
Option->OptionNumber = OptionNumber;
}
@@ -378,7 +389,7 @@ EfiBootManagerAddLoadOptionVariable ( return EFI_INVALID_PARAMETER;
}
- Status = BmAddOptionNumberToOrderVariable (mBmLoadOptionOrderName[Option->OptionType], (UINT16) Option->OptionNumber, Position);
+ Status = BmAddOptionNumberToOrderVariable (mBmLoadOptionOrderName[Option->OptionType], (UINT16)Option->OptionNumber, Position);
if (!EFI_ERROR (Status)) {
//
// Save the Boot#### or Driver#### variable
@@ -405,15 +416,15 @@ EfiBootManagerAddLoadOptionVariable ( VOID
EFIAPI
EfiBootManagerSortLoadOptionVariable (
- EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
- SORT_COMPARE CompareFunction
+ EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
+ SORT_COMPARE CompareFunction
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption;
- UINTN LoadOptionCount;
- UINTN Index;
- UINT16 *OptionOrder;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption;
+ UINTN LoadOptionCount;
+ UINTN Index;
+ UINT16 *OptionOrder;
LoadOption = EfiBootManagerGetLoadOptions (&LoadOptionCount, OptionType);
@@ -433,7 +444,7 @@ EfiBootManagerSortLoadOptionVariable ( OptionOrder = AllocatePool (LoadOptionCount * sizeof (UINT16));
ASSERT (OptionOrder != NULL);
for (Index = 0; Index < LoadOptionCount; Index++) {
- OptionOrder[Index] = (UINT16) LoadOption[Index].OptionNumber;
+ OptionOrder[Index] = (UINT16)LoadOption[Index].OptionNumber;
}
Status = gRT->SetVariable (
@@ -470,14 +481,14 @@ EfiBootManagerSortLoadOptionVariable ( EFI_STATUS
EFIAPI
EfiBootManagerInitializeLoadOption (
- IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option,
- IN UINTN OptionNumber,
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
- IN UINT32 Attributes,
- IN CHAR16 *Description,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN UINT8 *OptionalData OPTIONAL,
- IN UINT32 OptionalDataSize
+ IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option,
+ IN UINTN OptionNumber,
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
+ IN UINT32 Attributes,
+ IN CHAR16 *Description,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN UINT8 *OptionalData OPTIONAL,
+ IN UINT32 OptionalDataSize
)
{
if ((Option == NULL) || (Description == NULL) || (FilePath == NULL)) {
@@ -485,20 +496,21 @@ EfiBootManagerInitializeLoadOption ( }
if (((OptionalData != NULL) && (OptionalDataSize == 0)) ||
- ((OptionalData == NULL) && (OptionalDataSize != 0))) {
+ ((OptionalData == NULL) && (OptionalDataSize != 0)))
+ {
return EFI_INVALID_PARAMETER;
}
- if ((UINT32) OptionType >= LoadOptionTypeMax) {
+ if ((UINT32)OptionType >= LoadOptionTypeMax) {
return EFI_INVALID_PARAMETER;
}
ZeroMem (Option, sizeof (EFI_BOOT_MANAGER_LOAD_OPTION));
- Option->OptionNumber = OptionNumber;
- Option->OptionType = OptionType;
- Option->Attributes = Attributes;
- Option->Description = AllocateCopyPool (StrSize (Description), Description);
- Option->FilePath = DuplicateDevicePath (FilePath);
+ Option->OptionNumber = OptionNumber;
+ Option->OptionType = OptionType;
+ Option->Attributes = Attributes;
+ Option->Description = AllocateCopyPool (StrSize (Description), Description);
+ Option->FilePath = DuplicateDevicePath (FilePath);
if (OptionalData != NULL) {
Option->OptionalData = AllocateCopyPool (OptionalDataSize, OptionalData);
Option->OptionalDataSize = OptionalDataSize;
@@ -507,7 +519,6 @@ EfiBootManagerInitializeLoadOption ( return EFI_SUCCESS;
}
-
/**
Return the index of the load option in the load option array.
@@ -524,12 +535,12 @@ EfiBootManagerInitializeLoadOption ( INTN
EFIAPI
EfiBootManagerFindLoadOption (
- IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Key,
- IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Array,
- IN UINTN Count
+ IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Key,
+ IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Array,
+ IN UINTN Count
)
{
- UINTN Index;
+ UINTN Index;
for (Index = 0; Index < Count; Index++) {
if ((Key->OptionType == Array[Index].OptionType) &&
@@ -537,8 +548,9 @@ EfiBootManagerFindLoadOption ( (StrCmp (Key->Description, Array[Index].Description) == 0) &&
(CompareMem (Key->FilePath, Array[Index].FilePath, GetDevicePathSize (Key->FilePath)) == 0) &&
(Key->OptionalDataSize == Array[Index].OptionalDataSize) &&
- (CompareMem (Key->OptionalData, Array[Index].OptionalData, Key->OptionalDataSize) == 0)) {
- return (INTN) Index;
+ (CompareMem (Key->OptionalData, Array[Index].OptionalData, Key->OptionalDataSize) == 0))
+ {
+ return (INTN)Index;
}
}
@@ -563,21 +575,21 @@ EfiBootManagerDeleteLoadOptionVariable ( IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType
)
{
- UINT16 *OptionOrder;
- UINTN OptionOrderSize;
- UINTN Index;
- CHAR16 OptionName[BM_OPTION_NAME_LEN];
+ UINT16 *OptionOrder;
+ UINTN OptionOrderSize;
+ UINTN Index;
+ CHAR16 OptionName[BM_OPTION_NAME_LEN];
- if (((UINT32) OptionType >= LoadOptionTypeMax) || (OptionNumber >= LoadOptionNumberMax)) {
+ if (((UINT32)OptionType >= LoadOptionTypeMax) || (OptionNumber >= LoadOptionNumberMax)) {
return EFI_INVALID_PARAMETER;
}
- if (OptionType == LoadOptionTypeDriver || OptionType == LoadOptionTypeSysPrep || OptionType == LoadOptionTypeBoot) {
+ if ((OptionType == LoadOptionTypeDriver) || (OptionType == LoadOptionTypeSysPrep) || (OptionType == LoadOptionTypeBoot)) {
//
// If the associated *Order exists, firstly remove the reference in *Order for
// Driver####, SysPrep#### and Boot####.
//
- GetEfiGlobalVariable2 (mBmLoadOptionOrderName[OptionType], (VOID **) &OptionOrder, &OptionOrderSize);
+ GetEfiGlobalVariable2 (mBmLoadOptionOrderName[OptionType], (VOID **)&OptionOrder, &OptionOrderSize);
ASSERT ((OptionOrder != NULL && OptionOrderSize != 0) || (OptionOrder == NULL && OptionOrderSize == 0));
for (Index = 0; Index < OptionOrderSize / sizeof (UINT16); Index++) {
@@ -594,6 +606,7 @@ EfiBootManagerDeleteLoadOptionVariable ( break;
}
}
+
if (OptionOrder != NULL) {
FreePool (OptionOrder);
}
@@ -650,12 +663,15 @@ BmGetDevicePathSizeEx ( if (NodeSize == 0) {
return 0;
}
+
Size += NodeSize;
if (Size > MaxSize) {
return 0;
}
+
DevicePath = NextDevicePathNode (DevicePath);
}
+
Size += DevicePathNodeLength (DevicePath);
if (Size > MaxSize) {
return 0;
@@ -684,18 +700,19 @@ BmGetDevicePathSizeEx ( **/
UINTN
BmStrSizeEx (
- IN CONST CHAR16 *String,
- IN UINTN MaxStringLen
+ IN CONST CHAR16 *String,
+ IN UINTN MaxStringLen
)
{
- UINTN Length;
+ UINTN Length;
ASSERT (String != NULL && MaxStringLen != 0);
- ASSERT (((UINTN) String & BIT0) == 0);
+ ASSERT (((UINTN)String & BIT0) == 0);
- for (Length = 0; *String != L'\0' && MaxStringLen != Length; String++, Length+=2);
+ for (Length = 0; *String != L'\0' && MaxStringLen != Length; String++, Length += 2) {
+ }
- if (*String != L'\0' && MaxStringLen == Length) {
+ if ((*String != L'\0') && (MaxStringLen == Length)) {
return 0;
}
@@ -715,8 +732,8 @@ BmStrSizeEx ( **/
BOOLEAN
BmValidateOption (
- UINT8 *Variable,
- UINTN VariableSize
+ UINT8 *Variable,
+ UINTN VariableSize
)
{
UINT16 FilePathSize;
@@ -735,19 +752,19 @@ BmValidateOption ( //
// Get the option's device path size
//
- FilePathSize = ReadUnaligned16 ((UINT16 *) Variable);
- Variable += sizeof (UINT16);
+ FilePathSize = ReadUnaligned16 ((UINT16 *)Variable);
+ Variable += sizeof (UINT16);
//
// Get the option's description string size
//
- DescriptionSize = BmStrSizeEx ((CHAR16 *) Variable, VariableSize - sizeof (UINT16) - sizeof (UINT32));
- Variable += DescriptionSize;
+ DescriptionSize = BmStrSizeEx ((CHAR16 *)Variable, VariableSize - sizeof (UINT16) - sizeof (UINT32));
+ Variable += DescriptionSize;
//
// Get the option's device path
//
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) Variable;
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)Variable;
//
// Validation boot option variable.
@@ -760,7 +777,7 @@ BmValidateOption ( return FALSE;
}
- return (BOOLEAN) (BmGetDevicePathSizeEx (DevicePath, FilePathSize) != 0);
+ return (BOOLEAN)(BmGetDevicePathSizeEx (DevicePath, FilePathSize) != 0);
}
/**
@@ -778,16 +795,16 @@ BmValidateOption ( BOOLEAN
EFIAPI
EfiBootManagerIsValidLoadOptionVariableName (
- IN CHAR16 *VariableName,
- OUT EFI_BOOT_MANAGER_LOAD_OPTION_TYPE *OptionType OPTIONAL,
- OUT UINT16 *OptionNumber OPTIONAL
+ IN CHAR16 *VariableName,
+ OUT EFI_BOOT_MANAGER_LOAD_OPTION_TYPE *OptionType OPTIONAL,
+ OUT UINT16 *OptionNumber OPTIONAL
)
{
- UINTN VariableNameLen;
- UINTN Index;
- UINTN Uint;
- EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LocalOptionType;
- UINT16 LocalOptionNumber;
+ UINTN VariableNameLen;
+ UINTN Index;
+ UINTN Uint;
+ EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LocalOptionType;
+ UINT16 LocalOptionNumber;
if (VariableName == NULL) {
return FALSE;
@@ -808,10 +825,12 @@ EfiBootManagerIsValidLoadOptionVariableName ( for (LocalOptionType = 0; LocalOptionType < ARRAY_SIZE (mBmLoadOptionName); LocalOptionType++) {
if ((VariableNameLen - 4 == StrLen (mBmLoadOptionName[LocalOptionType])) &&
(StrnCmp (VariableName, mBmLoadOptionName[LocalOptionType], VariableNameLen - 4) == 0)
- ) {
+ )
+ {
break;
}
}
+
if (LocalOptionType == ARRAY_SIZE (mBmLoadOptionName)) {
return FALSE;
}
@@ -825,9 +844,10 @@ EfiBootManagerIsValidLoadOptionVariableName ( if (Uint == -1) {
break;
} else {
- LocalOptionNumber = (UINT16) Uint + LocalOptionNumber * 0x10;
+ LocalOptionNumber = (UINT16)Uint + LocalOptionNumber * 0x10;
}
}
+
if (Index != VariableNameLen) {
return FALSE;
}
@@ -857,9 +877,9 @@ EfiBootManagerIsValidLoadOptionVariableName ( EFI_STATUS
EFIAPI
EfiBootManagerVariableToLoadOptionEx (
- IN CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid,
- IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option
+ IN CHAR16 *VariableName,
+ IN EFI_GUID *VendorGuid,
+ IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option
)
{
EFI_STATUS Status;
@@ -886,7 +906,7 @@ EfiBootManagerVariableToLoadOptionEx ( //
// Read the variable
//
- GetVariable2 (VariableName, VendorGuid, (VOID **) &Variable, &VariableSize);
+ GetVariable2 (VariableName, VendorGuid, (VOID **)&Variable, &VariableSize);
if (Variable == NULL) {
return EFI_NOT_FOUND;
}
@@ -894,7 +914,7 @@ EfiBootManagerVariableToLoadOptionEx ( //
// Validate *#### variable data.
//
- if (!BmValidateOption(Variable, VariableSize)) {
+ if (!BmValidateOption (Variable, VariableSize)) {
FreePool (Variable);
return EFI_INVALID_PARAMETER;
}
@@ -902,33 +922,33 @@ EfiBootManagerVariableToLoadOptionEx ( //
// Get the option attribute
//
- VariablePtr = Variable;
- Attribute = ReadUnaligned32 ((UINT32 *) VariablePtr);
+ VariablePtr = Variable;
+ Attribute = ReadUnaligned32 ((UINT32 *)VariablePtr);
VariablePtr += sizeof (UINT32);
//
// Get the option's device path size
//
- FilePathSize = ReadUnaligned16 ((UINT16 *) VariablePtr);
+ FilePathSize = ReadUnaligned16 ((UINT16 *)VariablePtr);
VariablePtr += sizeof (UINT16);
//
// Get the option's description string
//
- Description = (CHAR16 *) VariablePtr;
+ Description = (CHAR16 *)VariablePtr;
//
// Get the option's description string size
//
- VariablePtr += StrSize ((CHAR16 *) VariablePtr);
+ VariablePtr += StrSize ((CHAR16 *)VariablePtr);
//
// Get the option's device path
//
- FilePath = (EFI_DEVICE_PATH_PROTOCOL *) VariablePtr;
+ FilePath = (EFI_DEVICE_PATH_PROTOCOL *)VariablePtr;
VariablePtr += FilePathSize;
- OptionalDataSize = (UINT32) (VariableSize - ((UINTN) VariablePtr - (UINTN) Variable));
+ OptionalDataSize = (UINT32)(VariableSize - ((UINTN)VariablePtr - (UINTN)Variable));
if (OptionalDataSize == 0) {
OptionalData = NULL;
} else {
@@ -965,18 +985,18 @@ Build the Boot#### or Driver#### option from the VariableName. EFI_STATUS
EFIAPI
EfiBootManagerVariableToLoadOption (
- IN CHAR16 *VariableName,
- IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option
+ IN CHAR16 *VariableName,
+ IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option
)
{
return EfiBootManagerVariableToLoadOptionEx (VariableName, &gEfiGlobalVariableGuid, Option);
}
typedef struct {
- EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType;
- EFI_GUID *Guid;
- EFI_BOOT_MANAGER_LOAD_OPTION *Options;
- UINTN OptionCount;
+ EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType;
+ EFI_GUID *Guid;
+ EFI_BOOT_MANAGER_LOAD_OPTION *Options;
+ UINTN OptionCount;
} BM_COLLECT_LOAD_OPTIONS_PARAM;
/**
@@ -989,25 +1009,26 @@ typedef struct { **/
VOID
BmCollectLoadOptions (
- IN CHAR16 *Name,
- IN EFI_GUID *Guid,
- IN VOID *Context
+ IN CHAR16 *Name,
+ IN EFI_GUID *Guid,
+ IN VOID *Context
)
{
- EFI_STATUS Status;
- EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType;
- UINT16 OptionNumber;
- EFI_BOOT_MANAGER_LOAD_OPTION Option;
- UINTN Index;
- BM_COLLECT_LOAD_OPTIONS_PARAM *Param;
+ EFI_STATUS Status;
+ EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType;
+ UINT16 OptionNumber;
+ EFI_BOOT_MANAGER_LOAD_OPTION Option;
+ UINTN Index;
+ BM_COLLECT_LOAD_OPTIONS_PARAM *Param;
- Param = (BM_COLLECT_LOAD_OPTIONS_PARAM *) Context;
+ Param = (BM_COLLECT_LOAD_OPTIONS_PARAM *)Context;
if (CompareGuid (Guid, Param->Guid) && (
- Param->OptionType == LoadOptionTypePlatformRecovery &&
- EfiBootManagerIsValidLoadOptionVariableName (Name, &OptionType, &OptionNumber) &&
- OptionType == LoadOptionTypePlatformRecovery
- )) {
+ (Param->OptionType == LoadOptionTypePlatformRecovery) &&
+ EfiBootManagerIsValidLoadOptionVariableName (Name, &OptionType, &OptionNumber) &&
+ (OptionType == LoadOptionTypePlatformRecovery)
+ ))
+ {
Status = EfiBootManagerVariableToLoadOptionEx (Name, Guid, &Option);
if (!EFI_ERROR (Status)) {
for (Index = 0; Index < Param->OptionCount; Index++) {
@@ -1015,6 +1036,7 @@ BmCollectLoadOptions ( break;
}
}
+
Param->Options = ReallocatePool (
Param->OptionCount * sizeof (EFI_BOOT_MANAGER_LOAD_OPTION),
(Param->OptionCount + 1) * sizeof (EFI_BOOT_MANAGER_LOAD_OPTION),
@@ -1047,24 +1069,24 @@ EfiBootManagerGetLoadOptions ( IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType
)
{
- EFI_STATUS Status;
- UINT16 *OptionOrder;
- UINTN OptionOrderSize;
- UINTN Index;
- UINTN OptionIndex;
- EFI_BOOT_MANAGER_LOAD_OPTION *Options;
- CHAR16 OptionName[BM_OPTION_NAME_LEN];
- UINT16 OptionNumber;
- BM_COLLECT_LOAD_OPTIONS_PARAM Param;
+ EFI_STATUS Status;
+ UINT16 *OptionOrder;
+ UINTN OptionOrderSize;
+ UINTN Index;
+ UINTN OptionIndex;
+ EFI_BOOT_MANAGER_LOAD_OPTION *Options;
+ CHAR16 OptionName[BM_OPTION_NAME_LEN];
+ UINT16 OptionNumber;
+ BM_COLLECT_LOAD_OPTIONS_PARAM Param;
*OptionCount = 0;
Options = NULL;
- if (LoadOptionType == LoadOptionTypeDriver || LoadOptionType == LoadOptionTypeSysPrep || LoadOptionType == LoadOptionTypeBoot) {
+ if ((LoadOptionType == LoadOptionTypeDriver) || (LoadOptionType == LoadOptionTypeSysPrep) || (LoadOptionType == LoadOptionTypeBoot)) {
//
// Read the BootOrder, or DriverOrder variable.
//
- GetEfiGlobalVariable2 (mBmLoadOptionOrderName[LoadOptionType], (VOID **) &OptionOrder, &OptionOrderSize);
+ GetEfiGlobalVariable2 (mBmLoadOptionOrderName[LoadOptionType], (VOID **)&OptionOrder, &OptionOrderSize);
if (OptionOrder == NULL) {
return NULL;
}
@@ -1098,17 +1120,16 @@ EfiBootManagerGetLoadOptions ( ASSERT (Options != NULL);
*OptionCount = OptionIndex;
}
-
} else if (LoadOptionType == LoadOptionTypePlatformRecovery) {
- Param.OptionType = LoadOptionTypePlatformRecovery;
- Param.Options = NULL;
+ Param.OptionType = LoadOptionTypePlatformRecovery;
+ Param.Options = NULL;
Param.OptionCount = 0;
- Param.Guid = &gEfiGlobalVariableGuid;
+ Param.Guid = &gEfiGlobalVariableGuid;
- BmForEachVariable (BmCollectLoadOptions, (VOID *) &Param);
+ BmForEachVariable (BmCollectLoadOptions, (VOID *)&Param);
*OptionCount = Param.OptionCount;
- Options = Param.Options;
+ Options = Param.Options;
}
return Options;
@@ -1136,9 +1157,11 @@ EfiBootManagerFreeLoadOption ( if (LoadOption->Description != NULL) {
FreePool (LoadOption->Description);
}
+
if (LoadOption->FilePath != NULL) {
FreePool (LoadOption->FilePath);
}
+
if (LoadOption->OptionalData != NULL) {
FreePool (LoadOption->OptionalData);
}
@@ -1164,13 +1187,13 @@ EfiBootManagerFreeLoadOptions ( IN UINTN OptionCount
)
{
- UINTN Index;
+ UINTN Index;
if (Option == NULL) {
return EFI_NOT_FOUND;
}
- for (Index = 0;Index < OptionCount; Index++) {
+ for (Index = 0; Index < OptionCount; Index++) {
EfiBootManagerFreeLoadOption (&Option[Index]);
}
@@ -1195,40 +1218,43 @@ EfiBootManagerFreeLoadOptions ( **/
BOOLEAN
BmIsLoadOptionPeHeaderValid (
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
- IN VOID *FileBuffer,
- IN UINTN FileSize
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
+ IN VOID *FileBuffer,
+ IN UINTN FileSize
)
{
- EFI_IMAGE_DOS_HEADER *DosHeader;
- EFI_IMAGE_OPTIONAL_HEADER_UNION *PeHeader;
- EFI_IMAGE_OPTIONAL_HEADER32 *OptionalHeader;
- UINT16 Subsystem;
+ EFI_IMAGE_DOS_HEADER *DosHeader;
+ EFI_IMAGE_OPTIONAL_HEADER_UNION *PeHeader;
+ EFI_IMAGE_OPTIONAL_HEADER32 *OptionalHeader;
+ UINT16 Subsystem;
- if (FileBuffer == NULL || FileSize == 0) {
+ if ((FileBuffer == NULL) || (FileSize == 0)) {
return FALSE;
}
//
// Read dos header
//
- DosHeader = (EFI_IMAGE_DOS_HEADER *) FileBuffer;
- if (FileSize >= sizeof (EFI_IMAGE_DOS_HEADER) &&
- FileSize > DosHeader->e_lfanew && DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE
- ) {
+ DosHeader = (EFI_IMAGE_DOS_HEADER *)FileBuffer;
+ if ((FileSize >= sizeof (EFI_IMAGE_DOS_HEADER)) &&
+ (FileSize > DosHeader->e_lfanew) && (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE)
+ )
+ {
//
// Read and check PE signature
//
- PeHeader = (EFI_IMAGE_OPTIONAL_HEADER_UNION *) ((UINT8 *) FileBuffer + DosHeader->e_lfanew);
- if (FileSize >= DosHeader->e_lfanew + sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION) &&
- PeHeader->Pe32.Signature == EFI_IMAGE_NT_SIGNATURE
- ) {
+ PeHeader = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((UINT8 *)FileBuffer + DosHeader->e_lfanew);
+ if ((FileSize >= DosHeader->e_lfanew + sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION)) &&
+ (PeHeader->Pe32.Signature == EFI_IMAGE_NT_SIGNATURE)
+ )
+ {
//
// Check PE32 or PE32+ magic, and machine type
//
- OptionalHeader = (EFI_IMAGE_OPTIONAL_HEADER32 *) &PeHeader->Pe32.OptionalHeader;
- if (OptionalHeader->Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC ||
- OptionalHeader->Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
+ OptionalHeader = (EFI_IMAGE_OPTIONAL_HEADER32 *)&PeHeader->Pe32.OptionalHeader;
+ if ((OptionalHeader->Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) ||
+ (OptionalHeader->Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC))
+ {
//
// Check the Subsystem:
// Driver#### must be of type BootServiceDriver or RuntimeDriver
@@ -1236,12 +1262,13 @@ BmIsLoadOptionPeHeaderValid ( //
Subsystem = OptionalHeader->Subsystem;
if ((Type == LoadOptionTypeMax) ||
- (Type == LoadOptionTypeDriver && Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER) ||
- (Type == LoadOptionTypeDriver && Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER) ||
- (Type == LoadOptionTypeSysPrep && Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION) ||
- (Type == LoadOptionTypeBoot && Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION) ||
- (Type == LoadOptionTypePlatformRecovery && Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION)
- ) {
+ ((Type == LoadOptionTypeDriver) && (Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER)) ||
+ ((Type == LoadOptionTypeDriver) && (Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER)) ||
+ ((Type == LoadOptionTypeSysPrep) && (Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION)) ||
+ ((Type == LoadOptionTypeBoot) && (Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION)) ||
+ ((Type == LoadOptionTypePlatformRecovery) && (Subsystem == EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION))
+ )
+ {
return TRUE;
}
}
@@ -1273,22 +1300,22 @@ BmIsLoadOptionPeHeaderValid ( **/
VOID *
BmGetNextLoadOptionBuffer (
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
- OUT UINTN *FileSize
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
+ OUT UINTN *FileSize
)
{
- VOID *FileBuffer;
- EFI_DEVICE_PATH_PROTOCOL *PreFullPath;
- EFI_DEVICE_PATH_PROTOCOL *CurFullPath;
- UINTN LocalFileSize;
- UINT32 AuthenticationStatus;
- EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
+ VOID *FileBuffer;
+ EFI_DEVICE_PATH_PROTOCOL *PreFullPath;
+ EFI_DEVICE_PATH_PROTOCOL *CurFullPath;
+ UINTN LocalFileSize;
+ UINT32 AuthenticationStatus;
+ EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath;
LocalFileSize = 0;
- FileBuffer = NULL;
- CurFullPath = *FullPath;
+ FileBuffer = NULL;
+ CurFullPath = *FullPath;
do {
PreFullPath = CurFullPath;
CurFullPath = BmGetNextLoadOptionDevicePath (FilePath, CurFullPath);
@@ -1298,9 +1325,11 @@ BmGetNextLoadOptionBuffer ( if ((PreFullPath != NULL) && (PreFullPath != *FullPath)) {
FreePool (PreFullPath);
}
+
if (CurFullPath == NULL) {
break;
}
+
FileBuffer = GetFileBufferByFilePath (TRUE, CurFullPath, &LocalFileSize, &AuthenticationStatus);
if ((FileBuffer != NULL) && !BmIsLoadOptionPeHeaderValid (Type, FileBuffer, LocalFileSize)) {
//
@@ -1321,7 +1350,7 @@ BmGetNextLoadOptionBuffer ( } while (FileBuffer == NULL);
if (FileBuffer == NULL) {
- CurFullPath = NULL;
+ CurFullPath = NULL;
LocalFileSize = 0;
}
@@ -1349,18 +1378,18 @@ BmGetNextLoadOptionBuffer ( EFI_STATUS
EFIAPI
EfiBootManagerProcessLoadOption (
- IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption
+ IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption
)
{
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *PreFullPath;
- EFI_DEVICE_PATH_PROTOCOL *CurFullPath;
- EFI_HANDLE ImageHandle;
- EFI_LOADED_IMAGE_PROTOCOL *ImageInfo;
- VOID *FileBuffer;
- UINTN FileSize;
-
- if ((UINT32) LoadOption->OptionType >= LoadOptionTypeMax) {
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *PreFullPath;
+ EFI_DEVICE_PATH_PROTOCOL *CurFullPath;
+ EFI_HANDLE ImageHandle;
+ EFI_LOADED_IMAGE_PROTOCOL *ImageInfo;
+ VOID *FileBuffer;
+ UINTN FileSize;
+
+ if ((UINT32)LoadOption->OptionType >= LoadOptionTypeMax) {
return EFI_INVALID_PARAMETER;
}
@@ -1380,8 +1409,10 @@ EfiBootManagerProcessLoadOption ( // Load and start the load option.
//
DEBUG ((
- DEBUG_INFO | DEBUG_LOAD, "Process %s%04x (%s) ...\n",
- mBmLoadOptionName[LoadOption->OptionType], LoadOption->OptionNumber,
+ DEBUG_INFO | DEBUG_LOAD,
+ "Process %s%04x (%s) ...\n",
+ mBmLoadOptionName[LoadOption->OptionType],
+ LoadOption->OptionNumber,
LoadOption->Description
));
ImageHandle = NULL;
@@ -1398,9 +1429,11 @@ EfiBootManagerProcessLoadOption ( if (PreFullPath != NULL) {
FreePool (PreFullPath);
}
+
if (FileBuffer == NULL) {
break;
}
+
Status = gBS->LoadImage (
FALSE,
gImageHandle,
@@ -1426,7 +1459,7 @@ EfiBootManagerProcessLoadOption ( ASSERT_EFI_ERROR (Status);
ImageInfo->LoadOptionsSize = LoadOption->OptionalDataSize;
- ImageInfo->LoadOptions = LoadOption->OptionalData;
+ ImageInfo->LoadOptions = LoadOption->OptionalData;
//
// Before calling the image, enable the Watchdog Timer for the 5-minute period
//
@@ -1434,9 +1467,12 @@ EfiBootManagerProcessLoadOption ( LoadOption->Status = gBS->StartImage (ImageHandle, &LoadOption->ExitDataSize, &LoadOption->ExitData);
DEBUG ((
- DEBUG_INFO | DEBUG_LOAD, "%s%04x Return Status = %r\n",
- mBmLoadOptionName[LoadOption->OptionType], LoadOption->OptionNumber, LoadOption->Status
- ));
+ DEBUG_INFO | DEBUG_LOAD,
+ "%s%04x Return Status = %r\n",
+ mBmLoadOptionName[LoadOption->OptionType],
+ LoadOption->OptionNumber,
+ LoadOption->Status
+ ));
//
// Clear the Watchdog Timer after the image returns
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c index 6e7af3e3d9..a5e32ebdba 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c @@ -37,27 +37,27 @@ BmDelPartMatchInstance ( NewDevicePath = NULL;
TempNewDevicePath = NULL;
- if (Multi == NULL || Single == NULL) {
+ if ((Multi == NULL) || (Single == NULL)) {
return Multi;
}
- Instance = GetNextDevicePathInstance (&Multi, &InstanceSize);
- SingleDpSize = GetDevicePathSize (Single) - END_DEVICE_PATH_LENGTH;
- InstanceSize -= END_DEVICE_PATH_LENGTH;
+ Instance = GetNextDevicePathInstance (&Multi, &InstanceSize);
+ SingleDpSize = GetDevicePathSize (Single) - END_DEVICE_PATH_LENGTH;
+ InstanceSize -= END_DEVICE_PATH_LENGTH;
while (Instance != NULL) {
-
if (CompareMem (Instance, Single, MIN (SingleDpSize, InstanceSize)) != 0) {
//
// Append the device path instance which does not match with Single
//
TempNewDevicePath = NewDevicePath;
- NewDevicePath = AppendDevicePathInstance (NewDevicePath, Instance);
+ NewDevicePath = AppendDevicePathInstance (NewDevicePath, Instance);
if (TempNewDevicePath != NULL) {
- FreePool(TempNewDevicePath);
+ FreePool (TempNewDevicePath);
}
}
- FreePool(Instance);
+
+ FreePool (Instance);
Instance = GetNextDevicePathInstance (&Multi, &InstanceSize);
InstanceSize -= END_DEVICE_PATH_LENGTH;
}
@@ -88,7 +88,7 @@ BmMatchDevicePaths ( EFI_DEVICE_PATH_PROTOCOL *DevicePathInst;
UINTN Size;
- if (Multi == NULL || Single == NULL) {
+ if ((Multi == NULL) || (Single == NULL)) {
return FALSE;
}
@@ -127,7 +127,7 @@ BmMatchDevicePaths ( **/
VOID
BmSetMemoryTypeInformationVariable (
- IN BOOLEAN Boot
+ IN BOOLEAN Boot
)
{
EFI_STATUS Status;
@@ -147,7 +147,6 @@ BmSetMemoryTypeInformationVariable ( MemoryTypeInformationModified = FALSE;
MemoryTypeInformationVariableExists = FALSE;
-
BootMode = GetBootModeHob ();
//
// In BOOT_IN_RECOVERY_MODE, Variable region is not reliable.
@@ -163,13 +162,13 @@ BmSetMemoryTypeInformationVariable ( //
if (BootMode != BOOT_WITH_DEFAULT_SETTINGS) {
VariableSize = 0;
- Status = gRT->GetVariable (
- EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME,
- &gEfiMemoryTypeInformationGuid,
- NULL,
- &VariableSize,
- NULL
- );
+ Status = gRT->GetVariable (
+ EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME,
+ &gEfiMemoryTypeInformationGuid,
+ NULL,
+ &VariableSize,
+ NULL
+ );
if (Status == EFI_BUFFER_TOO_SMALL) {
MemoryTypeInformationVariableExists = TRUE;
}
@@ -181,9 +180,9 @@ BmSetMemoryTypeInformationVariable ( //
Status = EfiGetSystemConfigurationTable (
&gEfiMemoryTypeInformationGuid,
- (VOID **) &CurrentMemoryTypeInformation
+ (VOID **)&CurrentMemoryTypeInformation
);
- if (EFI_ERROR (Status) || CurrentMemoryTypeInformation == NULL) {
+ if (EFI_ERROR (Status) || (CurrentMemoryTypeInformation == NULL)) {
return;
}
@@ -199,6 +198,7 @@ BmSetMemoryTypeInformationVariable ( //
return;
}
+
VariableSize = GET_GUID_HOB_DATA_SIZE (GuidHob);
PreviousMemoryTypeInformation = AllocateCopyPool (VariableSize, GET_GUID_HOB_DATA (GuidHob));
if (PreviousMemoryTypeInformation == NULL) {
@@ -213,12 +213,12 @@ BmSetMemoryTypeInformationVariable ( DEBUG ((DEBUG_INFO, "====== ======== ======== ========\n"));
for (Index = 0; PreviousMemoryTypeInformation[Index].Type != EfiMaxMemoryType; Index++) {
-
for (Index1 = 0; CurrentMemoryTypeInformation[Index1].Type != EfiMaxMemoryType; Index1++) {
if (PreviousMemoryTypeInformation[Index].Type == CurrentMemoryTypeInformation[Index1].Type) {
break;
}
}
+
if (CurrentMemoryTypeInformation[Index1].Type == EfiMaxMemoryType) {
continue;
}
@@ -244,13 +244,14 @@ BmSetMemoryTypeInformationVariable ( } else if (Current > Previous) {
Next = Current + (Current >> 2);
}
- if (Next > 0 && Next < 4) {
+
+ if ((Next > 0) && (Next < 4)) {
Next = 4;
}
if (Next != Previous) {
PreviousMemoryTypeInformation[Index].NumberOfPages = Next;
- MemoryTypeInformationModified = TRUE;
+ MemoryTypeInformationModified = TRUE;
}
DEBUG ((DEBUG_INFO, " %02x %08x %08x %08x\n", PreviousMemoryTypeInformation[Index].Type, Previous, Current, Next));
@@ -286,6 +287,7 @@ BmSetMemoryTypeInformationVariable ( DEBUG ((DEBUG_ERROR, "Memory Type Information settings cannot be saved. OS S4 may fail!\n"));
}
}
+
FreePool (PreviousMemoryTypeInformation);
}
@@ -324,11 +326,11 @@ BmSetMemoryTypeInformationVariable ( **/
EFI_STATUS
BmSetVariableAndReportStatusCodeOnError (
- IN CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid,
- IN UINT32 Attributes,
- IN UINTN DataSize,
- IN VOID *Data
+ IN CHAR16 *VariableName,
+ IN EFI_GUID *VendorGuid,
+ IN UINT32 Attributes,
+ IN UINTN DataSize,
+ IN VOID *Data
)
{
EFI_STATUS Status;
@@ -343,7 +345,7 @@ BmSetVariableAndReportStatusCodeOnError ( Data
);
if (EFI_ERROR (Status)) {
- NameSize = StrSize (VariableName);
+ NameSize = StrSize (VariableName);
SetVariableStatus = AllocatePool (sizeof (EDKII_SET_VARIABLE_STATUS) + NameSize + DataSize);
if (SetVariableStatus != NULL) {
CopyGuid (&SetVariableStatus->Guid, VendorGuid);
@@ -351,8 +353,8 @@ BmSetVariableAndReportStatusCodeOnError ( SetVariableStatus->DataSize = DataSize;
SetVariableStatus->SetStatus = Status;
SetVariableStatus->Attributes = Attributes;
- CopyMem (SetVariableStatus + 1, VariableName, NameSize);
- CopyMem (((UINT8 *) (SetVariableStatus + 1)) + NameSize, Data, DataSize);
+ CopyMem (SetVariableStatus + 1, VariableName, NameSize);
+ CopyMem (((UINT8 *)(SetVariableStatus + 1)) + NameSize, Data, DataSize);
REPORT_STATUS_CODE_EX (
EFI_ERROR_CODE,
@@ -371,7 +373,6 @@ BmSetVariableAndReportStatusCodeOnError ( return Status;
}
-
/**
Print the device path info.
@@ -379,10 +380,10 @@ BmSetVariableAndReportStatusCodeOnError ( **/
VOID
BmPrintDp (
- EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- CHAR16 *Str;
+ CHAR16 *Str;
Str = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
DEBUG ((DEBUG_INFO, "%s", Str));
@@ -401,7 +402,7 @@ BmPrintDp ( **/
UINTN
BmCharToUint (
- IN CHAR16 Char
+ IN CHAR16 Char
)
{
if ((Char >= L'0') && (Char <= L'9')) {
@@ -412,7 +413,7 @@ BmCharToUint ( return (Char - L'A' + 0xA);
}
- return (UINTN) -1;
+ return (UINTN)-1;
}
/**
@@ -428,32 +429,32 @@ EfiBootManagerDispatchDeferredImages ( VOID
)
{
- EFI_STATUS Status;
- EFI_DEFERRED_IMAGE_LOAD_PROTOCOL *DeferredImage;
- UINTN HandleCount;
- EFI_HANDLE *Handles;
- UINTN Index;
- UINTN ImageIndex;
- EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;
- VOID *Image;
- UINTN ImageSize;
- BOOLEAN BootOption;
- EFI_HANDLE ImageHandle;
- UINTN ImageCount;
- UINTN LoadCount;
+ EFI_STATUS Status;
+ EFI_DEFERRED_IMAGE_LOAD_PROTOCOL *DeferredImage;
+ UINTN HandleCount;
+ EFI_HANDLE *Handles;
+ UINTN Index;
+ UINTN ImageIndex;
+ EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;
+ VOID *Image;
+ UINTN ImageSize;
+ BOOLEAN BootOption;
+ EFI_HANDLE ImageHandle;
+ UINTN ImageCount;
+ UINTN LoadCount;
//
// Find all the deferred image load protocols.
//
HandleCount = 0;
- Handles = NULL;
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiDeferredImageLoadProtocolGuid,
- NULL,
- &HandleCount,
- &Handles
- );
+ Handles = NULL;
+ Status = gBS->LocateHandleBuffer (
+ ByProtocol,
+ &gEfiDeferredImageLoadProtocolGuid,
+ NULL,
+ &HandleCount,
+ &Handles
+ );
if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND;
}
@@ -461,12 +462,12 @@ EfiBootManagerDispatchDeferredImages ( ImageCount = 0;
LoadCount = 0;
for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->HandleProtocol (Handles[Index], &gEfiDeferredImageLoadProtocolGuid, (VOID **) &DeferredImage);
+ Status = gBS->HandleProtocol (Handles[Index], &gEfiDeferredImageLoadProtocolGuid, (VOID **)&DeferredImage);
if (EFI_ERROR (Status)) {
continue;
}
- for (ImageIndex = 0; ;ImageIndex++) {
+ for (ImageIndex = 0; ; ImageIndex++) {
//
// Load all the deferred images in this protocol instance.
//
@@ -474,25 +475,26 @@ EfiBootManagerDispatchDeferredImages ( DeferredImage,
ImageIndex,
&ImageDevicePath,
- (VOID **) &Image,
+ (VOID **)&Image,
&ImageSize,
&BootOption
);
if (EFI_ERROR (Status)) {
break;
}
+
ImageCount++;
//
// Load and start the image.
//
Status = gBS->LoadImage (
- BootOption,
- gImageHandle,
- ImageDevicePath,
- NULL,
- 0,
- &ImageHandle
- );
+ BootOption,
+ gImageHandle,
+ ImageDevicePath,
+ NULL,
+ 0,
+ &ImageHandle
+ );
if (EFI_ERROR (Status)) {
//
// With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created
@@ -519,6 +521,7 @@ EfiBootManagerDispatchDeferredImages ( }
}
}
+
if (Handles != NULL) {
FreePool (Handles);
}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h index ac866ac25f..a9b0d485ca 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h +++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h @@ -72,15 +72,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include <Library/HiiLib.h>
#if !defined (EFI_REMOVABLE_MEDIA_FILE_NAME)
- #if defined (MDE_CPU_EBC)
- //
- // Uefi specification only defines the default boot file name for IA32, X64
- // and IPF processor, so need define boot file name for EBC architecture here.
- //
- #define EFI_REMOVABLE_MEDIA_FILE_NAME L"\\EFI\\BOOT\\BOOTEBC.EFI"
- #else
- #error "Can not determine the default boot file name for unknown processor type!"
- #endif
+ #if defined (MDE_CPU_EBC)
+//
+// Uefi specification only defines the default boot file name for IA32, X64
+// and IPF processor, so need define boot file name for EBC architecture here.
+//
+#define EFI_REMOVABLE_MEDIA_FILE_NAME L"\\EFI\\BOOT\\BOOTEBC.EFI"
+ #else
+ #error "Can not determine the default boot file name for unknown processor type!"
+ #endif
#endif
typedef enum {
@@ -95,21 +95,21 @@ typedef enum { typedef
CHAR16 *
-(* BM_GET_BOOT_DESCRIPTION) (
- IN EFI_HANDLE Handle
+(*BM_GET_BOOT_DESCRIPTION) (
+ IN EFI_HANDLE Handle
);
//
// PlatformRecovery#### is the load option with the longest name
//
-#define BM_OPTION_NAME_LEN sizeof ("PlatformRecovery####")
+#define BM_OPTION_NAME_LEN sizeof ("PlatformRecovery####")
extern CHAR16 *mBmLoadOptionName[];
//
// Maximum number of reconnect retry to repair controller; it is to limit the
// number of recursive call of BmRepairAllControllers.
//
-#define MAX_RECONNECT_REPAIR 10
+#define MAX_RECONNECT_REPAIR 10
/**
Visitor function to be called by BmForEachVariable for each variable
@@ -122,9 +122,9 @@ extern CHAR16 *mBmLoadOptionName[]; typedef
VOID
(*BM_VARIABLE_VISITOR) (
- CHAR16 *Name,
- EFI_GUID *Guid,
- VOID *Context
+ CHAR16 *Name,
+ EFI_GUID *Guid,
+ VOID *Context
);
/**
@@ -135,15 +135,15 @@ VOID **/
VOID
BmForEachVariable (
- BM_VARIABLE_VISITOR Visitor,
- VOID *Context
+ BM_VARIABLE_VISITOR Visitor,
+ VOID *Context
);
-#define BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE SIGNATURE_32 ('b', 'm', 'd', 'h')
+#define BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE SIGNATURE_32 ('b', 'm', 'd', 'h')
typedef struct {
- UINT32 Signature;
- LIST_ENTRY Link;
- EFI_BOOT_MANAGER_BOOT_DESCRIPTION_HANDLER Handler;
+ UINT32 Signature;
+ LIST_ENTRY Link;
+ EFI_BOOT_MANAGER_BOOT_DESCRIPTION_HANDLER Handler;
} BM_BOOT_DESCRIPTION_ENTRY;
/**
@@ -154,22 +154,22 @@ typedef struct { **/
VOID
BmRepairAllControllers (
- UINTN ReconnectRepairCount
+ UINTN ReconnectRepairCount
);
-#define BM_HOTKEY_SIGNATURE SIGNATURE_32 ('b', 'm', 'h', 'k')
+#define BM_HOTKEY_SIGNATURE SIGNATURE_32 ('b', 'm', 'h', 'k')
typedef struct {
- UINT32 Signature;
- LIST_ENTRY Link;
-
- BOOLEAN IsContinue;
- UINT16 BootOption;
- UINT8 CodeCount;
- UINT8 WaitingKey;
- EFI_KEY_DATA KeyData[3];
+ UINT32 Signature;
+ LIST_ENTRY Link;
+
+ BOOLEAN IsContinue;
+ UINT16 BootOption;
+ UINT8 CodeCount;
+ UINT8 WaitingKey;
+ EFI_KEY_DATA KeyData[3];
} BM_HOTKEY;
-#define BM_HOTKEY_FROM_LINK(a) CR (a, BM_HOTKEY, Link, BM_HOTKEY_SIGNATURE)
+#define BM_HOTKEY_FROM_LINK(a) CR (a, BM_HOTKEY, Link, BM_HOTKEY_SIGNATURE)
/**
Get the Option Number that wasn't used.
@@ -184,8 +184,8 @@ typedef struct { **/
EFI_STATUS
BmGetFreeOptionNumber (
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType,
- OUT UINT16 *FreeOptionNumber
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType,
+ OUT UINT16 *FreeOptionNumber
);
/**
@@ -200,7 +200,7 @@ BmGetFreeOptionNumber ( **/
VOID
BmSetMemoryTypeInformationVariable (
- IN BOOLEAN Boot
+ IN BOOLEAN Boot
);
/**
@@ -217,8 +217,8 @@ BmSetMemoryTypeInformationVariable ( **/
BOOLEAN
BmMatchPartitionDevicePathNode (
- IN EFI_DEVICE_PATH_PROTOCOL *BlockIoDevicePath,
- IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *BlockIoDevicePath,
+ IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
);
/**
@@ -237,7 +237,7 @@ BmMatchPartitionDevicePathNode ( **/
EFI_STATUS
BmConnectUsbShortFormDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
);
/**
@@ -249,8 +249,8 @@ BmConnectUsbShortFormDevicePath ( VOID
EFIAPI
BmStopHotkeyService (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
);
/**
@@ -288,11 +288,11 @@ BmStopHotkeyService ( **/
EFI_STATUS
BmSetVariableAndReportStatusCodeOnError (
- IN CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid,
- IN UINT32 Attributes,
- IN UINTN DataSize,
- IN VOID *Data
+ IN CHAR16 *VariableName,
+ IN EFI_GUID *VendorGuid,
+ IN UINT32 Attributes,
+ IN UINTN DataSize,
+ IN VOID *Data
);
/**
@@ -340,7 +340,7 @@ BmDelPartMatchInstance ( **/
VOID
BmPrintDp (
- EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath
);
/**
@@ -353,7 +353,7 @@ BmPrintDp ( **/
UINTN
BmCharToUint (
- IN CHAR16 Char
+ IN CHAR16 Char
);
/**
@@ -365,7 +365,7 @@ BmCharToUint ( **/
CHAR16 *
BmGetBootDescription (
- IN EFI_HANDLE Handle
+ IN EFI_HANDLE Handle
);
/**
@@ -377,8 +377,8 @@ BmGetBootDescription ( **/
VOID
BmMakeBootOptionDescriptionUnique (
- EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions,
- UINTN BootOptionCount
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions,
+ UINTN BootOptionCount
);
/**
@@ -391,8 +391,8 @@ BmMakeBootOptionDescriptionUnique ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmExpandLoadFile (
- IN EFI_HANDLE LoadFileHandle,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_HANDLE LoadFileHandle,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
);
/**
@@ -404,7 +404,7 @@ BmExpandLoadFile ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmGetRamDiskDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
);
/**
@@ -418,7 +418,7 @@ BmGetRamDiskDevicePath ( **/
VOID
BmDestroyRamDisk (
- IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath
);
/**
@@ -434,8 +434,8 @@ BmDestroyRamDisk ( **/
EFI_DEVICE_PATH_PROTOCOL *
BmGetNextLoadOptionDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FullPath
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FullPath
);
/**
@@ -460,9 +460,10 @@ BmGetNextLoadOptionDevicePath ( **/
VOID *
BmGetNextLoadOptionBuffer (
- IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
- OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
- OUT UINTN *FileSize
+ IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
+ OUT UINTN *FileSize
);
+
#endif // _INTERNAL_BM_H_
|