BOOLEAN gConnectAllHappened = FALSE;\r
UINTN gCallbackKey;\r
\r
-EFI_HII_DATABASE_PROTOCOL *gHiiDatabase;\r
-EFI_HII_STRING_PROTOCOL *gHiiString;\r
EFI_FORM_BROWSER2_PROTOCOL *gFormBrowser2;\r
-EFI_HII_CONFIG_ROUTING_PROTOCOL *gHiiConfigRouting;\r
\r
FRONT_PAGE_CALLBACK_DATA gFrontPagePrivate = {\r
FRONT_PAGE_CALLBACK_DATA_SIGNATURE,\r
{\r
END_DEVICE_PATH_TYPE,\r
END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
- { \r
+ {\r
(UINT8) (END_DEVICE_PATH_LENGTH),\r
(UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)\r
}\r
\r
@retval EFI_SUCCESS The Results is filled with the requested values.\r
@retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.\r
- @retval EFI_INVALID_PARAMETER Request is NULL, illegal syntax, or unknown name.\r
+ @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name.\r
@retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.\r
\r
**/\r
OUT EFI_STRING *Results\r
)\r
{\r
- if (Request == NULL || Progress == NULL || Results == NULL) {\r
+ if (Progress == NULL || Results == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
*Progress = Request;\r
//\r
Lang = AllocatePool (AsciiStrSize (LanguageString));\r
ASSERT (Lang != NULL);\r
- \r
+\r
Index = 0;\r
LangCode = LanguageString;\r
while (*LangCode != 0) {\r
);\r
ASSERT (PlatformSupportedLanguages != NULL);\r
}\r
- \r
+\r
//\r
// Select the best language in platform supported Language.\r
//\r
CHAR8 *BestLanguage;\r
UINTN OptionCount;\r
CHAR16 *StringBuffer;\r
- UINTN BufferSize;\r
EFI_HII_HANDLE HiiHandle;\r
VOID *OptionsOpCodeHandle;\r
VOID *StartOpCodeHandle;\r
EFI_IFR_GUID_LABEL *StartLabel;\r
EFI_IFR_GUID_LABEL *EndLabel;\r
BOOLEAN FirstFlag;\r
+ EFI_STRING_ID Temp;\r
\r
if (InitializeHiiData) {\r
//\r
//\r
// Locate Hii relative protocols\r
//\r
- Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gHiiDatabase);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &gHiiString);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &gFormBrowser2);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &gHiiConfigRouting);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
//\r
// Install Device Path Protocol and Config Access protocol to driver handle\r
//\r
OptionCount = 0;\r
LangCode = LanguageString;\r
FirstFlag = FALSE;\r
- \r
+\r
if (gFrontPagePrivate.LanguageToken == NULL) {\r
while (*LangCode != 0) {\r
GetNextLanguage (&LangCode, Lang);\r
OptionCount ++;\r
}\r
- gFrontPagePrivate.LanguageToken = AllocatePool (OptionCount * sizeof (EFI_STRING_ID));\r
+ gFrontPagePrivate.LanguageToken = AllocatePool ((OptionCount + 1) * sizeof (EFI_STRING_ID));\r
ASSERT (gFrontPagePrivate.LanguageToken != NULL);\r
FirstFlag = TRUE;\r
}\r
\r
+ Status = gHiiString->NewString (gHiiString, HiiHandle, &Temp, "de-DE", L"Dedede", L"TEST", NULL);\r
+\r
OptionCount = 0;\r
LangCode = LanguageString;\r
while (*LangCode != 0) {\r
GetNextLanguage (&LangCode, Lang);\r
\r
if (FirstFlag) {\r
- //\r
- // Get Language Name from String Package. The StringId of Printable Language\r
- // Name is always 1 which is generated by StringGather Tool.\r
- //\r
- BufferSize = 0x100;\r
- StringBuffer = AllocatePool (BufferSize);\r
- Status = gHiiString->GetString (\r
- gHiiString,\r
- Lang,\r
- HiiHandle,\r
- PRINTABLE_LANGUAGE_NAME_STRING_ID,\r
- StringBuffer,\r
- &BufferSize,\r
- NULL\r
- );\r
- if (Status == EFI_BUFFER_TOO_SMALL) {\r
- FreePool (StringBuffer);\r
- StringBuffer = AllocatePool (BufferSize);\r
- Status = gHiiString->GetString (\r
- gHiiString,\r
- Lang,\r
- HiiHandle,\r
- PRINTABLE_LANGUAGE_NAME_STRING_ID,\r
- StringBuffer,\r
- &BufferSize,\r
- NULL\r
- );\r
- }\r
- ASSERT_EFI_ERROR (Status);\r
+ StringBuffer = HiiGetString (HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, Lang);\r
+ ASSERT_EFI_ERROR (StringBuffer != NULL);\r
\r
//\r
// Save the string Id for each language\r
&ActionRequest\r
);\r
//\r
- // Check whether user change any option setting which needs a reset to be effective\r
+ // Check whether user change any option setting which needs a reset to be effective\r
//\r
if (ActionRequest == EFI_BROWSER_ACTION_REQUEST_RESET) {\r
EnableResetRequired ();\r
}\r
\r
/**\r
- Convert Processor Frequency Data to a string\r
+ Convert Processor Frequency Data to a string.\r
\r
@param ProcessorFrequency The frequency data to process\r
+ @param Base10Exponent The exponent based on 10\r
@param String The string that is created\r
\r
**/\r
VOID\r
ConvertProcessorToString (\r
- IN EFI_PROCESSOR_CORE_FREQUENCY_DATA *ProcessorFrequency,\r
- OUT CHAR16 **String\r
+ IN UINT16 ProcessorFrequency,\r
+ IN UINT16 Base10Exponent,\r
+ OUT CHAR16 **String\r
)\r
{\r
CHAR16 *StringBuffer;\r
UINTN Index;\r
UINT32 FreqMhz;\r
\r
- if (ProcessorFrequency->Exponent >= 6) {\r
- FreqMhz = ProcessorFrequency->Value;\r
- for (Index = 0; Index < (UINTN) (ProcessorFrequency->Exponent - 6); Index++) {\r
+ if (Base10Exponent >= 6) {\r
+ FreqMhz = ProcessorFrequency;\r
+ for (Index = 0; Index < (UINTN) (Base10Exponent - 6); Index++) {\r
FreqMhz *= 10;\r
}\r
} else {\r
StrCat (StringBuffer, L".");\r
UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
StrCat (StringBuffer, L" GHz");\r
-\r
*String = (CHAR16 *) StringBuffer;\r
-\r
return ;\r
}\r
\r
+\r
/**\r
Convert Memory Size to a string.\r
\r
return ;\r
}\r
\r
+/**\r
+\r
+ Acquire the string associated with the Index from smbios structure and return it.\r
+ The caller is responsible for free the string buffer.\r
+\r
+ @param OptionalStrStart The start position to search the string\r
+ @param Index The index of the string to extract\r
+ @param String The string that is extracted\r
+\r
+ @retval EFI_SUCCESS The function returns EFI_SUCCESS always.\r
+\r
+**/\r
+EFI_STATUS\r
+GetOptionalStringByIndex (\r
+ IN CHAR8 *OptionalStrStart,\r
+ IN UINT8 Index,\r
+ OUT CHAR16 **String\r
+ )\r
+{\r
+ UINT8 StrNum;\r
+ UINTN CurrentStrLen;\r
+ CHAR8* CharInStr;\r
+ EFI_STATUS Status;\r
+\r
+ StrNum = 0;\r
+ Status = EFI_NOT_FOUND;\r
+ CharInStr = OptionalStrStart;\r
+\r
+ if (Index != 1) {\r
+ CurrentStrLen = 0;\r
+ //\r
+ // look for the two consecutive zeros, check the string limit by the way.\r
+ //\r
+ while (*CharInStr != 0 || *(CharInStr+1) != 0) { \r
+ if (*CharInStr == 0) {\r
+ StrNum += 1;\r
+ CharInStr++;\r
+ }\r
+ \r
+ if (StrNum == Index) {\r
+ Status = EFI_SUCCESS;\r
+ break;\r
+ }\r
+ \r
+ CurrentStrLen = AsciiStrLen(CharInStr);\r
+ \r
+ //\r
+ // forward the pointer\r
+ //\r
+ OptionalStrStart = CharInStr;\r
+ CharInStr += CurrentStrLen;\r
+ }\r
+ \r
+ if (EFI_ERROR (Status)) {\r
+ *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
+ return Status;\r
+ }\r
+ } else {\r
+ CurrentStrLen = AsciiStrLen(CharInStr);\r
+ }\r
+\r
+ *String = AllocatePool((CurrentStrLen + 1)*sizeof(CHAR16));\r
+ AsciiStrToUnicodeStr(OptionalStrStart, *String);\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
+\r
/**\r
Update the banner information for the Front Page based on DataHub information.\r
\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING_ID TokenToUpdate;\r
+ UINT8 StrIndex;\r
CHAR16 *NewString;\r
- UINT64 MonotonicCount;\r
- EFI_DATA_HUB_PROTOCOL *DataHub;\r
- EFI_DATA_RECORD_HEADER *Record;\r
- EFI_SUBCLASS_TYPE1_HEADER *DataHeader;\r
- EFI_MISC_BIOS_VENDOR_DATA *BiosVendor;\r
- EFI_MISC_SYSTEM_MANUFACTURER_DATA *SystemManufacturer;\r
- EFI_PROCESSOR_VERSION_DATA *ProcessorVersion;\r
- EFI_PROCESSOR_CORE_FREQUENCY_DATA *ProcessorFrequency;\r
- EFI_MEMORY_ARRAY_START_ADDRESS_DATA *MemoryArray;\r
BOOLEAN Find[5];\r
+ EFI_STATUS Status;\r
+ EFI_STRING_ID TokenToUpdate;\r
+ EFI_SMBIOS_HANDLE SmbiosHandle;\r
+ EFI_SMBIOS_PROTOCOL *Smbios;\r
+ SMBIOS_TABLE_TYPE0 *Type0Record;\r
+ SMBIOS_TABLE_TYPE1 *Type1Record;\r
+ SMBIOS_TABLE_TYPE4 *Type4Record;\r
+ SMBIOS_TABLE_TYPE19 *Type19Record;\r
+ EFI_SMBIOS_TABLE_HEADER *Record;\r
\r
ZeroMem (Find, sizeof (Find));\r
\r
// Update Front Page strings\r
//\r
Status = gBS->LocateProtocol (\r
- &gEfiDataHubProtocolGuid,\r
+ &gEfiSmbiosProtocolGuid,\r
NULL,\r
- (VOID **) &DataHub\r
+ (VOID **) &Smbios\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
- MonotonicCount = 0;\r
- Record = NULL;\r
+ SmbiosHandle = 0;\r
do {\r
- Status = DataHub->GetNextRecord (DataHub, &MonotonicCount, NULL, &Record);\r
- if (Record->DataRecordClass == EFI_DATA_RECORD_CLASS_DATA) {\r
- DataHeader = (EFI_SUBCLASS_TYPE1_HEADER *) (Record + 1);\r
- if (CompareGuid (&Record->DataRecordGuid, &gEfiMiscSubClassGuid) &&\r
- (DataHeader->RecordType == EFI_MISC_BIOS_VENDOR_RECORD_NUMBER)\r
- ) {\r
- BiosVendor = (EFI_MISC_BIOS_VENDOR_DATA *) (DataHeader + 1);\r
- GetProducerString (&Record->ProducerName, BiosVendor->BiosVersion, &NewString);\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[0] = TRUE;\r
- }\r
-\r
- if (CompareGuid (&Record->DataRecordGuid, &gEfiMiscSubClassGuid) &&\r
- (DataHeader->RecordType == EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER)\r
- ) {\r
- SystemManufacturer = (EFI_MISC_SYSTEM_MANUFACTURER_DATA *) (DataHeader + 1);\r
- GetProducerString (&Record->ProducerName, SystemManufacturer->SystemProductName, &NewString);\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[1] = TRUE;\r
- }\r
-\r
- if (CompareGuid (&Record->DataRecordGuid, &gEfiProcessorSubClassGuid) &&\r
- (DataHeader->RecordType == ProcessorVersionRecordType)\r
- ) {\r
- ProcessorVersion = (EFI_PROCESSOR_VERSION_DATA *) (DataHeader + 1);\r
- GetProducerString (&Record->ProducerName, *ProcessorVersion, &NewString);\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[2] = TRUE;\r
- }\r
-\r
- if (CompareGuid (&Record->DataRecordGuid, &gEfiProcessorSubClassGuid) &&\r
- (DataHeader->RecordType == ProcessorCoreFrequencyRecordType)\r
- ) {\r
- ProcessorFrequency = (EFI_PROCESSOR_CORE_FREQUENCY_DATA *) (DataHeader + 1);\r
- ConvertProcessorToString (ProcessorFrequency, &NewString);\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[3] = TRUE;\r
- }\r
-\r
- if (CompareGuid (&Record->DataRecordGuid, &gEfiMemorySubClassGuid) &&\r
- (DataHeader->RecordType == EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER)\r
- ) {\r
- MemoryArray = (EFI_MEMORY_ARRAY_START_ADDRESS_DATA *) (DataHeader + 1);\r
- ConvertMemorySizeToString (\r
- (UINT32)(RShiftU64((MemoryArray->MemoryArrayEndAddress - MemoryArray->MemoryArrayStartAddress + 1), 20)),\r
- &NewString\r
- );\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[4] = TRUE;\r
- }\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ if (EFI_ERROR(Status)) {\r
+ break;\r
}\r
- } while (!EFI_ERROR (Status) && (MonotonicCount != 0) && !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
\r
+ if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
+ Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
+ StrIndex = Type0Record->BiosVersion;\r
+ GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type0Record + Type0Record->Hdr.Length), StrIndex, &NewString);\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
+ Find[0] = TRUE;\r
+ } \r
+\r
+ if (Record->Type == EFI_SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
+ Type1Record = (SMBIOS_TABLE_TYPE1 *) Record;\r
+ StrIndex = Type1Record->ProductName;\r
+ GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type1Record + Type1Record->Hdr.Length), StrIndex, &NewString);\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
+ Find[1] = TRUE;\r
+ }\r
+ \r
+ if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+ Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
+ StrIndex = Type4Record->ProcessorVersion;\r
+ GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &NewString);\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
+ Find[2] = TRUE;\r
+ } \r
+\r
+ if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+ Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
+ ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
+ Find[3] = TRUE;\r
+ } \r
+\r
+ if ( Record->Type == EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
+ Type19Record = (SMBIOS_TABLE_TYPE19 *) Record;\r
+ ConvertMemorySizeToString (\r
+ (UINT32)(RShiftU64((Type19Record->EndingAddress - Type19Record->StartingAddress + 1), 10)),\r
+ &NewString\r
+ );\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
+ Find[4] = TRUE; \r
+ }\r
+ } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
return ;\r
}\r
\r
+\r
/**\r
Function waits for a given event to fire, or for an optional timeout to expire.\r
\r
- @param Event The event to wait for\r
- @param Timeout An optional timeout value in 100 ns units.\r
+ @param Event The event to wait for\r
+ @param Timeout An optional timeout value in 100 ns units.\r
\r
@retval EFI_SUCCESS Event fired before Timeout expired.\r
@retval EFI_TIME_OUT Timout expired before Event fired..\r
IN UINT64 Timeout OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
UINTN Index;\r
+ EFI_STATUS Status;\r
EFI_EVENT TimerEvent;\r
EFI_EVENT WaitList[2];\r
\r
// Set the timer event\r
//\r
gBS->SetTimer (\r
- TimerEvent,\r
- TimerRelative,\r
- Timeout\r
- );\r
+ TimerEvent,\r
+ TimerRelative,\r
+ Timeout\r
+ );\r
\r
//\r
// Wait for the original event or the timer\r
Function show progress bar to wait for user input.\r
\r
\r
- @param TimeoutDefault The fault time out value before the system continue to boot.\r
+ @param TimeoutDefault The fault time out value before the system continue to boot.\r
\r
@retval EFI_SUCCESS User pressed some key except "Enter"\r
- @retval EFI_TIME_OUT Timout expired or user press "Enter"\r
+ @retval EFI_TIME_OUT Timeout expired or user press "Enter"\r
\r
**/\r
EFI_STATUS\r
IN UINT16 TimeoutDefault\r
)\r
{\r
- EFI_STATUS Status;\r
CHAR16 *TmpStr;\r
+ UINT16 TimeoutRemain;\r
+ EFI_STATUS Status;\r
+ EFI_INPUT_KEY Key;\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;\r
- EFI_INPUT_KEY Key;\r
- UINT16 TimeoutRemain;\r
\r
if (TimeoutDefault == 0) {\r
return EFI_TIMEOUT;\r
}\r
\r
DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));\r
- \r
+\r
SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
TimeoutRemain = TimeoutDefault;\r
while (TimeoutRemain != 0) {\r
DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
- \r
+\r
Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
if (Status != EFI_TIMEOUT) {\r
break;\r
@param TimeoutDefault The fault time out value before the system\r
continue to boot.\r
@param ConnectAllHappened The indicater to check if the connect all have\r
- already happended.\r
+ already happened.\r
\r
**/\r
VOID\r
{\r
EFI_STATUS Status;\r
\r
- PERF_START (0, "BdsTimeOut", "BDS", 0);\r
+ PERF_START (NULL, "BdsTimeOut", "BDS", 0);\r
//\r
// Indicate if we need connect all in the platform setup\r
//\r
\r
//\r
// If gCallbackKey is greater than 1 and less or equal to 5,\r
- // it will lauch configuration utilities.\r
+ // it will launch configuration utilities.\r
// 2 = set language\r
// 3 = boot manager\r
// 4 = device manager\r
- // 5 = boot maintainenance manager\r
+ // 5 = boot maintenance manager\r
//\r
if (gCallbackKey != 0) {\r
REPORT_STATUS_CODE (\r
// Display the Device Manager\r
//\r
do {\r
- CallDeviceManager();\r
+ CallDeviceManager ();\r
} while (gCallbackKey == FRONT_PAGE_KEY_DEVICE_MANAGER);\r
break;\r
\r
// Note: The following lines of code only execute when Auto boot\r
// takes affect\r
//\r
- PERF_END (0, "BdsTimeOut", "BDS", 0);\r
+ PERF_END (NULL, "BdsTimeOut", "BDS", 0);\r
}\r