NULL,\r
(VOID **) &Smbios\r
);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (!EFI_ERROR (Status)) {\r
+ SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
+ do {\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ if (EFI_ERROR(Status)) {\r
+ break;\r
+ }\r
\r
- SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
- do {\r
- Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
- if (EFI_ERROR(Status)) {\r
- break;\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_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
+ 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_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
+ 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
+ }\r
return ;\r
}\r
\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;\r
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;\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
- 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
- \r
- TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
+ if (TimeoutDefault != 0) {\r
+ DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));\r
\r
- if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
- //\r
- // Clear the progress status bar first\r
- //\r
- if (TmpStr != NULL) {\r
- PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
- }\r
- }\r
- \r
-\r
- TimeoutRemain = TimeoutDefault;\r
- while (TimeoutRemain != 0) {\r
- DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
-\r
- Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
- if (Status != EFI_TIMEOUT) {\r
- break;\r
- }\r
- TimeoutRemain--;\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
\r
+ TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
+\r
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
//\r
- // Show progress\r
+ // Clear the progress status bar first\r
//\r
if (TmpStr != NULL) {\r
- PlatformBdsShowProgress (\r
- Foreground,\r
- Background,\r
- TmpStr,\r
- Color,\r
- ((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),\r
- 0\r
- );\r
+ PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
}\r
}\r
- }\r
- \r
- if (TmpStr != NULL) {\r
- gBS->FreePool (TmpStr);\r
- }\r
+ \r
\r
- //\r
- // Timeout expired\r
- //\r
- if (TimeoutRemain == 0) {\r
- return EFI_TIMEOUT;\r
+ TimeoutRemain = TimeoutDefault;\r
+ while (TimeoutRemain != 0) {\r
+ DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
+\r
+ Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
+ if (Status != EFI_TIMEOUT) {\r
+ break;\r
+ }\r
+ TimeoutRemain--;\r
+ \r
+ if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
+ //\r
+ // Show progress\r
+ //\r
+ if (TmpStr != NULL) {\r
+ PlatformBdsShowProgress (\r
+ Foreground,\r
+ Background,\r
+ TmpStr,\r
+ Color,\r
+ ((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),\r
+ 0\r
+ );\r
+ }\r
+ }\r
+ }\r
+ \r
+ if (TmpStr != NULL) {\r
+ gBS->FreePool (TmpStr);\r
+ }\r
+\r
+ //\r
+ // Timeout expired\r
+ //\r
+ if (TimeoutRemain == 0) {\r
+ return EFI_TIMEOUT;\r
+ }\r
}\r
\r
//\r
//\r
// Clear EFI_OS_INDICATIONS_BOOT_TO_FW_UI to acknowledge OS\r
// \r
- OsIndication &= ~EFI_OS_INDICATIONS_BOOT_TO_FW_UI;\r
+ OsIndication &= ~((UINT64)EFI_OS_INDICATIONS_BOOT_TO_FW_UI);\r
Status = gRT->SetVariable (\r
L"OsIndications",\r
&gEfiGlobalVariableGuid,\r
BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);\r
}\r
\r
+ //\r
+ // Install BM HiiPackages. \r
+ // Keep BootMaint HiiPackage, so that it can be covered by global setting. \r
+ //\r
+ InitBMPackage ();\r
+\r
Status = EFI_SUCCESS;\r
do {\r
//\r
break;\r
\r
case FRONT_PAGE_KEY_BOOT_MANAGER:\r
+ //\r
+ // Remove the installed BootMaint HiiPackages when exit.\r
+ //\r
+ FreeBMPackage ();\r
+\r
//\r
// User chose to run the Boot Manager\r
//\r
CallBootManager ();\r
+\r
+ //\r
+ // Reinstall BootMaint HiiPackages after exiting from Boot Manager.\r
+ //\r
+ InitBMPackage ();\r
break;\r
\r
case FRONT_PAGE_KEY_DEVICE_MANAGER:\r
//\r
SetupResetReminder ();\r
\r
+ //\r
+ // Remove the installed BootMaint HiiPackages when exit.\r
+ //\r
+ FreeBMPackage ();\r
+\r
Exit:\r
//\r
// Automatically load current entry\r