mirror of https://github.com/acidanthera/audk.git
1) Sync in patch for EDK 1063 Boot option enumeration algorithm enhancement
2) Sync in patch for EDK 1081: Enhance the BDS shell enumeration logic to skip the those not dispatched FVs in system. 3) Remove all EFI_SPECIFICATION_VERSION as all module should comply to UEFI 2.1 and later. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4798 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
189eac2199
commit
a1a99cca13
|
@ -830,11 +830,7 @@ BdsLibEnumerateAllBootOption (
|
|||
UINTN Size;
|
||||
EFI_FV_FILE_ATTRIBUTES Attributes;
|
||||
UINT32 AuthenticationStatus;
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
EFI_FIRMWARE_VOLUME_PROTOCOL *Fv;
|
||||
#else
|
||||
EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
|
||||
#endif
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
UINTN DevicePathType;
|
||||
CHAR16 Buffer[40];
|
||||
|
@ -1046,23 +1042,27 @@ BdsLibEnumerateAllBootOption (
|
|||
//
|
||||
gBS->LocateHandleBuffer (
|
||||
ByProtocol,
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
NULL,
|
||||
&FvHandleCount,
|
||||
&FvHandleBuffer
|
||||
);
|
||||
for (Index = 0; Index < FvHandleCount; Index++) {
|
||||
//
|
||||
// Only care the dispatched FV. If no dispatch protocol on the FV, it is not dispatched, then skip it.
|
||||
//
|
||||
Status = gBS->HandleProtocol (
|
||||
FvHandleBuffer[Index],
|
||||
&gEfiFirmwareVolumeDispatchProtocolGuid,
|
||||
(VOID **) &Fv
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
gBS->HandleProtocol (
|
||||
FvHandleBuffer[Index],
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
(VOID **) &Fv
|
||||
);
|
||||
|
||||
|
@ -1731,11 +1731,7 @@ BdsLibUpdateFvFileDevicePath (
|
|||
UINT32 AuthenticationStatus;
|
||||
BOOLEAN FindFvFile;
|
||||
EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
EFI_FIRMWARE_VOLUME_PROTOCOL *Fv;
|
||||
#else
|
||||
EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
|
||||
#endif
|
||||
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FvFileNode;
|
||||
EFI_HANDLE FoundFvHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
|
||||
|
@ -1777,22 +1773,14 @@ BdsLibUpdateFvFileDevicePath (
|
|||
TempDevicePath = *DevicePath;
|
||||
FoundFvHandle = NULL;
|
||||
Status = gBS->LocateDevicePath (
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
&TempDevicePath,
|
||||
&FoundFvHandle
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = gBS->HandleProtocol (
|
||||
FoundFvHandle,
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
(VOID **) &Fv
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
@ -1828,11 +1816,7 @@ BdsLibUpdateFvFileDevicePath (
|
|||
if (!EFI_ERROR (Status)) {
|
||||
Status = gBS->HandleProtocol (
|
||||
LoadedImage->DeviceHandle,
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
(VOID **) &Fv
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
@ -1857,11 +1841,7 @@ BdsLibUpdateFvFileDevicePath (
|
|||
if (!FindFvFile) {
|
||||
gBS->LocateHandleBuffer (
|
||||
ByProtocol,
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
NULL,
|
||||
&FvHandleCount,
|
||||
&FvHandleBuffer
|
||||
|
@ -1869,11 +1849,7 @@ BdsLibUpdateFvFileDevicePath (
|
|||
for (Index = 0; Index < FvHandleCount; Index++) {
|
||||
gBS->HandleProtocol (
|
||||
FvHandleBuffer[Index],
|
||||
#if (PI_SPECIFICATION_VERSION < 0x00010000)
|
||||
&gEfiFirmwareVolumeProtocolGuid,
|
||||
#else
|
||||
&gEfiFirmwareVolume2ProtocolGuid,
|
||||
#endif
|
||||
(VOID **) &Fv
|
||||
);
|
||||
|
||||
|
|
|
@ -360,9 +360,7 @@ BdsLibConnectUsbDevByShortFormDP(
|
|||
|
||||
if ((DevicePathType (RemainingDevicePath) != MESSAGING_DEVICE_PATH) ||
|
||||
((DevicePathSubType (RemainingDevicePath) != MSG_USB_CLASS_DP)
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
&& (DevicePathSubType (RemainingDevicePath) != MSG_USB_WWID_DP)
|
||||
#endif
|
||||
)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ Abstract:
|
|||
**/
|
||||
|
||||
#include "InternalBdsLib.h"
|
||||
//@MT:#include "EfiPrintLib.h"
|
||||
|
||||
BOOLEAN
|
||||
IsNvNeed (
|
||||
|
@ -228,9 +227,7 @@ BdsLibConnectConsoleVariable (
|
|||
//
|
||||
if ((DevicePathType (Instance) == MESSAGING_DEVICE_PATH) &&
|
||||
((DevicePathSubType (Instance) == MSG_USB_CLASS_DP)
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
|| (DevicePathSubType (Instance) == MSG_USB_WWID_DP)
|
||||
#endif
|
||||
)) {
|
||||
//
|
||||
// Check the Usb console in Usb2.0 bus firstly, then Usb1.1 bus
|
||||
|
|
|
@ -269,7 +269,7 @@ BdsLibRegisterNewOption (
|
|||
EFI_DEVICE_PATH_PROTOCOL *OptionDevicePath;
|
||||
CHAR16 *Description;
|
||||
CHAR16 OptionName[10];
|
||||
BOOLEAN UpdateBootDevicePath;
|
||||
BOOLEAN UpdateDescription;
|
||||
UINT16 BootOrderEntry;
|
||||
UINTN OrderItemNum;
|
||||
|
||||
|
@ -280,7 +280,7 @@ BdsLibRegisterNewOption (
|
|||
OptionDevicePath = NULL;
|
||||
Description = NULL;
|
||||
OptionOrderPtr = NULL;
|
||||
UpdateBootDevicePath = FALSE;
|
||||
UpdateDescription = FALSE;
|
||||
ZeroMem (OptionName, sizeof (OptionName));
|
||||
|
||||
TempOptionSize = 0;
|
||||
|
@ -318,8 +318,8 @@ BdsLibRegisterNewOption (
|
|||
//
|
||||
// Notes: the description may will change base on the GetStringToken
|
||||
//
|
||||
if (CompareMem (Description, String, StrSize (Description)) == 0) {
|
||||
if (CompareMem (OptionDevicePath, DevicePath, GetDevicePathSize (OptionDevicePath)) == 0) {
|
||||
if (CompareMem (OptionDevicePath, DevicePath, GetDevicePathSize (OptionDevicePath)) == 0) {
|
||||
if (CompareMem (Description, String, StrSize (Description)) == 0) {
|
||||
//
|
||||
// Got the option, so just return
|
||||
//
|
||||
|
@ -328,9 +328,10 @@ BdsLibRegisterNewOption (
|
|||
return EFI_SUCCESS;
|
||||
} else {
|
||||
//
|
||||
// Boot device path changed, need update.
|
||||
// Option description changed, need update.
|
||||
//
|
||||
UpdateBootDevicePath = TRUE;
|
||||
UpdateDescription = TRUE;
|
||||
gBS->FreePool (OptionPtr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -350,7 +351,7 @@ BdsLibRegisterNewOption (
|
|||
TempPtr += StrSize (String);
|
||||
CopyMem (TempPtr, DevicePath, GetDevicePathSize (DevicePath));
|
||||
|
||||
if (UpdateBootDevicePath) {
|
||||
if (UpdateDescription) {
|
||||
//
|
||||
// The number in option#### to be updated
|
||||
//
|
||||
|
@ -375,7 +376,10 @@ BdsLibRegisterNewOption (
|
|||
OptionSize,
|
||||
OptionPtr
|
||||
);
|
||||
if (EFI_ERROR (Status) || UpdateBootDevicePath) {
|
||||
//
|
||||
// Return if only need to update a changed description or fail to set option.
|
||||
//
|
||||
if (EFI_ERROR (Status) || UpdateDescription) {
|
||||
gBS->FreePool (OptionPtr);
|
||||
gBS->FreePool (TempOptionPtr);
|
||||
return Status;
|
||||
|
@ -388,7 +392,7 @@ BdsLibRegisterNewOption (
|
|||
//
|
||||
|
||||
//
|
||||
// If no BootOrder
|
||||
// If no option order
|
||||
//
|
||||
if (TempOptionSize == 0) {
|
||||
BootOrderEntry = 0;
|
||||
|
@ -406,18 +410,12 @@ BdsLibRegisterNewOption (
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
if (UpdateBootDevicePath) {
|
||||
//
|
||||
// If just update a old option, the new optionorder size not change
|
||||
//
|
||||
OrderItemNum = (TempOptionSize / sizeof (UINT16)) ;
|
||||
OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16));
|
||||
CopyMem (OptionOrderPtr, TempOptionPtr, OrderItemNum * sizeof (UINT16));
|
||||
} else {
|
||||
OrderItemNum = (TempOptionSize / sizeof (UINT16)) + 1 ;
|
||||
OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16));
|
||||
CopyMem (OptionOrderPtr, TempOptionPtr, (OrderItemNum - 1) * sizeof (UINT16));
|
||||
}
|
||||
//
|
||||
// Append the new option number to the original option order
|
||||
//
|
||||
OrderItemNum = (TempOptionSize / sizeof (UINT16)) + 1 ;
|
||||
OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16));
|
||||
CopyMem (OptionOrderPtr, TempOptionPtr, (OrderItemNum - 1) * sizeof (UINT16));
|
||||
|
||||
OptionOrderPtr[Index] = RegisterOptionNumber;
|
||||
|
||||
|
@ -995,10 +993,6 @@ SetupResetReminder (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
#if (EFI_SPECIFICATION_VERSION < 0x0002000A)
|
||||
EFI_STATUS Status;
|
||||
EFI_FORM_BROWSER_PROTOCOL *Browser;
|
||||
#endif
|
||||
EFI_INPUT_KEY Key;
|
||||
CHAR16 *StringBuffer1;
|
||||
CHAR16 *StringBuffer2;
|
||||
|
@ -1010,14 +1004,6 @@ SetupResetReminder (
|
|||
if (IsResetReminderFeatureEnable ()) {
|
||||
if (IsResetRequired ()) {
|
||||
|
||||
#if (EFI_SPECIFICATION_VERSION < 0x0002000A)
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiFormBrowserProtocolGuid,
|
||||
NULL,
|
||||
&Browser
|
||||
);
|
||||
#endif
|
||||
|
||||
StringBuffer1 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));
|
||||
ASSERT (StringBuffer1 != NULL);
|
||||
StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));
|
||||
|
@ -1028,11 +1014,7 @@ SetupResetReminder (
|
|||
// Popup a menu to notice user
|
||||
//
|
||||
do {
|
||||
#if (EFI_SPECIFICATION_VERSION < 0x0002000A)
|
||||
Browser->CreatePopUp (2, TRUE, 0, NULL, &Key, StringBuffer1, StringBuffer2);
|
||||
#else
|
||||
IfrLibCreatePopUp (2, &Key, StringBuffer1, StringBuffer2);
|
||||
#endif
|
||||
} while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != CHAR_CARRIAGE_RETURN));
|
||||
|
||||
gBS->FreePool (StringBuffer1);
|
||||
|
@ -1187,61 +1169,6 @@ BdsLibGetImageHeader (
|
|||
return Status;
|
||||
}
|
||||
|
||||
#if (EFI_SPECIFICATION_VERSION < 0x0002000A)
|
||||
EFI_STATUS
|
||||
BdsLibGetHiiHandles (
|
||||
IN EFI_HII_PROTOCOL *Hii,
|
||||
IN OUT UINT16 *HandleBufferLength,
|
||||
OUT EFI_HII_HANDLE **HiiHandleBuffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Determines the handles that are currently active in the database.
|
||||
It's the caller's responsibility to free handle buffer.
|
||||
|
||||
Arguments:
|
||||
|
||||
This - A pointer to the EFI_HII_PROTOCOL instance.
|
||||
HandleBufferLength - On input, a pointer to the length of the handle buffer. On output,
|
||||
the length of the handle buffer that is required for the handles found.
|
||||
HiiHandleBuffer - Pointer to an array of EFI_HII_PROTOCOL instances returned.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Get an array of EFI_HII_PROTOCOL instances successfully.
|
||||
EFI_INVALID_PARAMETER - Hii is NULL.
|
||||
EFI_NOT_FOUND - Database not found.
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT16 TempBufferLength;
|
||||
EFI_STATUS Status;
|
||||
|
||||
TempBufferLength = 0;
|
||||
|
||||
//
|
||||
// Try to find the actual buffer size for HiiHandle Buffer.
|
||||
//
|
||||
Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer);
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
*HiiHandleBuffer = AllocateZeroPool (TempBufferLength);
|
||||
Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer);
|
||||
//
|
||||
// we should not fail here.
|
||||
//
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
*HandleBufferLength = TempBufferLength;
|
||||
|
||||
return Status;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
BdsSetMemoryTypeInformationVariable (
|
||||
|
|
|
@ -622,7 +622,6 @@ DevPathUsb (
|
|||
CatPrint (Str, L"Usb(%x,%x)", (UINTN) Usb->ParentPortNumber, (UINTN) Usb->InterfaceNumber);
|
||||
}
|
||||
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
VOID
|
||||
DevPathUsbWWID (
|
||||
IN OUT POOL_PRINT *Str,
|
||||
|
@ -652,7 +651,6 @@ DevPathLogicalUnit (
|
|||
LogicalUnit = DevPath;
|
||||
CatPrint (Str, L"Unit(%x)", (UINTN) LogicalUnit->Lun);
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
DevPathUsbClass (
|
||||
|
@ -876,7 +874,6 @@ DevPathUart (
|
|||
}
|
||||
}
|
||||
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
VOID
|
||||
DevPathiSCSI (
|
||||
IN OUT POOL_PRINT *Str,
|
||||
|
@ -912,7 +909,6 @@ DevPathiSCSI (
|
|||
|
||||
CatPrint (Str, L"%s)", (iSCSI->NetworkProtocol == 0) ? L"TCP" : L"reserved");
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
DevPathHardDrive (
|
||||
|
@ -1106,14 +1102,12 @@ DEVICE_PATH_STRING_TABLE DevPathTable[] = {
|
|||
MESSAGING_DEVICE_PATH,
|
||||
MSG_USB_DP,
|
||||
DevPathUsb,
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
MESSAGING_DEVICE_PATH,
|
||||
MSG_USB_WWID_DP,
|
||||
DevPathUsbWWID,
|
||||
MESSAGING_DEVICE_PATH,
|
||||
MSG_DEVICE_LOGICAL_UNIT_DP,
|
||||
DevPathLogicalUnit,
|
||||
#endif
|
||||
MESSAGING_DEVICE_PATH,
|
||||
MSG_USB_CLASS_DP,
|
||||
DevPathUsbClass,
|
||||
|
@ -1141,11 +1135,9 @@ DEVICE_PATH_STRING_TABLE DevPathTable[] = {
|
|||
MESSAGING_DEVICE_PATH,
|
||||
MSG_VENDOR_DP,
|
||||
DevPathVendor,
|
||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
||||
MESSAGING_DEVICE_PATH,
|
||||
MSG_ISCSI_DP,
|
||||
DevPathiSCSI,
|
||||
#endif
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_HARDDRIVE_DP,
|
||||
DevPathHardDrive,
|
||||
|
@ -1161,11 +1153,9 @@ DEVICE_PATH_STRING_TABLE DevPathTable[] = {
|
|||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_PROTOCOL_DP,
|
||||
DevPathMediaProtocol,
|
||||
#if (EFI_SPECIFICATION_VERSION != 0x00020000)
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_PIWG_FW_FILE_DP,
|
||||
DevPathFvFilePath,
|
||||
#endif
|
||||
BBS_DEVICE_PATH,
|
||||
BBS_BBS_DP,
|
||||
DevPathBssBss,
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiCpuArchProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiFirmwareVolumeDispatchProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPlatformBootTimeOutDefault
|
|
@ -42,6 +42,7 @@ Abstract:
|
|||
#include <Protocol/PciIo.h>
|
||||
#include <Protocol/AcpiS3Save.h>
|
||||
#include <Protocol/Performance.h>
|
||||
#include <Protocol/FirmwareVolumeDispatch.h>
|
||||
|
||||
#include <Guid/MemoryTypeInformation.h>
|
||||
#include <Guid/FileInfo.h>
|
||||
|
|
Loading…
Reference in New Issue