]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
IntelFrameworkModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / FrontPage.c
index 5646457664b2c8d747430c9a61f18cad6007bf9c..67f9371a9d34432c020f140fb492742b1a3e2df9 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -189,7 +183,7 @@ FrontPageCallback (
     //\r
     return EFI_UNSUPPORTED;\r
   }\r
-  \r
+\r
   gCallbackKey = QuestionId;\r
 \r
   if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
@@ -210,7 +204,7 @@ FrontPageCallback (
       // Allocate working buffer for RFC 4646 language in supported LanguageString.\r
       //\r
       Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
-      ASSERT (Lang != NULL);  \r
+      ASSERT (Lang != NULL);\r
 \r
       Index = 0;\r
       LangCode = mLanguageString;\r
@@ -279,7 +273,7 @@ FrontPageCallback (
     }\r
   }\r
 \r
-  return EFI_SUCCESS;  \r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
@@ -300,6 +294,7 @@ InitializeFrontPage (
   EFI_STATUS                  Status;\r
   CHAR8                       *LangCode;\r
   CHAR8                       *Lang;\r
+  UINTN                       LangSize;\r
   CHAR8                       *CurrentLang;\r
   UINTN                       OptionCount;\r
   CHAR16                      *StringBuffer;\r
@@ -395,13 +390,13 @@ InitializeFrontPage (
   //\r
   HiiHandle = gFrontPagePrivate.HiiHandle;\r
 \r
-  CurrentLang = GetEfiGlobalVariable (L"PlatformLang");\r
+  GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);\r
 \r
   //\r
   // Get Support language list from variable.\r
   //\r
   if (mLanguageString == NULL){\r
-    mLanguageString = GetEfiGlobalVariable (L"PlatformLangCodes");\r
+    GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&mLanguageString, NULL);\r
     if (mLanguageString == NULL) {\r
       mLanguageString = AllocateCopyPool (\r
                                  AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
@@ -414,7 +409,7 @@ InitializeFrontPage (
   if (gFrontPagePrivate.LanguageToken == NULL) {\r
     //\r
     // Count the language list number.\r
-    //  \r
+    //\r
     LangCode      = mLanguageString;\r
     Lang          = AllocatePool (AsciiStrSize (mLanguageString));\r
     ASSERT (Lang != NULL);\r
@@ -448,9 +443,10 @@ InitializeFrontPage (
       }\r
 \r
       if (EFI_ERROR (Status)) {\r
-        StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));\r
+        LangSize = AsciiStrSize (Lang);\r
+        StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));\r
         ASSERT (StringBuffer != NULL);\r
-        AsciiStrToUnicodeStr (Lang, StringBuffer);\r
+        AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);\r
       }\r
 \r
       ASSERT (StringBuffer != NULL);\r
@@ -567,35 +563,6 @@ CallFrontPage (
   return Status;\r
 }\r
 \r
-/**\r
-  Acquire the string associated with the ProducerGuid and return it.\r
-\r
-\r
-  @param ProducerGuid    The Guid to search the HII database for\r
-  @param Token           The token value 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
-GetProducerString (\r
-  IN      EFI_GUID                  *ProducerGuid,\r
-  IN      EFI_STRING_ID             Token,\r
-  OUT     CHAR16                    **String\r
-  )\r
-{\r
-  EFI_STRING      TmpString;\r
-\r
-  TmpString = HiiGetPackageString (ProducerGuid, Token, NULL);\r
-  if (TmpString == NULL) {\r
-    *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
-  } else {\r
-    *String = TmpString;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
 \r
 /**\r
   Convert Processor Frequency Data to a string.\r
@@ -618,7 +585,7 @@ ConvertProcessorToString (
 \r
   if (Base10Exponent >= 6) {\r
     FreqMhz = ProcessorFrequency;\r
-    for (Index = 0; Index < (UINTN) (Base10Exponent - 6); Index++) {\r
+    for (Index = 0; Index < ((UINT32)Base10Exponent - 6); Index++) {\r
       FreqMhz *= 10;\r
     }\r
   } else {\r
@@ -627,9 +594,16 @@ ConvertProcessorToString (
 \r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  Index = StrnLenS (StringBuffer, 0x20 / sizeof (CHAR16));\r
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L".");\r
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
+  UnicodeValueToStringS (\r
+    StringBuffer + Index + 1,\r
+    0x20 - sizeof (CHAR16) * (Index + 1),\r
+    PREFIX_ZERO,\r
+    (FreqMhz % 1000) / 10,\r
+    2\r
+    );\r
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" GHz");\r
   *String = (CHAR16 *) StringBuffer;\r
   return ;\r
@@ -653,7 +627,7 @@ ConvertMemorySizeToString (
 \r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 6);\r
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, MemorySize, 6);\r
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" MB RAM");\r
 \r
   *String = (CHAR16 *) StringBuffer;\r
@@ -702,7 +676,7 @@ GetOptionalStringByIndex (
     *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
   } else {\r
     *String = AllocatePool (StrSize * sizeof (CHAR16));\r
-    AsciiStrToUnicodeStr (OptionalStrStart, *String);\r
+    AsciiStrToUnicodeStrS (OptionalStrStart, *String, StrSize);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -720,7 +694,6 @@ UpdateFrontPageStrings (
 {\r
   UINT8                             StrIndex;\r
   CHAR16                            *NewString;\r
-  BOOLEAN                           Find[5];\r
   EFI_STATUS                        Status;\r
   EFI_STRING_ID                     TokenToUpdate;\r
   EFI_SMBIOS_HANDLE                 SmbiosHandle;\r
@@ -730,8 +703,9 @@ UpdateFrontPageStrings (
   SMBIOS_TABLE_TYPE4                *Type4Record;\r
   SMBIOS_TABLE_TYPE19               *Type19Record;\r
   EFI_SMBIOS_TABLE_HEADER           *Record;\r
+  UINT64                            InstalledMemory;\r
 \r
-  ZeroMem (Find, sizeof (Find));\r
+  InstalledMemory = 0;\r
 \r
   //\r
   // Update Front Page strings\r
@@ -743,64 +717,64 @@ UpdateFrontPageStrings (
                   );\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
-      if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
+    Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+    while (!EFI_ERROR(Status)) {\r
+      if (Record->Type == 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
+      if (Record->Type == 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
+      if (Record->Type == 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
+      if (Record->Type == 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
+      if ( Record->Type == 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
+        if (Type19Record->StartingAddress != 0xFFFFFFFF ) {\r
+          InstalledMemory += RShiftU64(Type19Record->EndingAddress -\r
+                                       Type19Record->StartingAddress + 1, 10);\r
+        } else {\r
+          InstalledMemory += RShiftU64(Type19Record->ExtendedEndingAddress -\r
+                                       Type19Record->ExtendedStartingAddress + 1, 20);\r
+        }\r
       }\r
-    } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
+\r
+      Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+    }\r
+\r
+    // now update the total installed RAM size\r
+    ConvertMemorySizeToString ((UINT32)InstalledMemory, &NewString );\r
+    TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+    FreePool (NewString);\r
   }\r
+\r
   return ;\r
 }\r
 \r
@@ -897,7 +871,7 @@ ShowProgress (
     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
+\r
     TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
 \r
     if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
@@ -908,7 +882,7 @@ ShowProgress (
         PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
       }\r
     }\r
-    \r
+\r
 \r
     TimeoutRemain = TimeoutDefault;\r
     while (TimeoutRemain != 0) {\r
@@ -919,7 +893,7 @@ ShowProgress (
         break;\r
       }\r
       TimeoutRemain--;\r
-      \r
+\r
       if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
         //\r
         // Show progress\r
@@ -936,7 +910,7 @@ ShowProgress (
         }\r
       }\r
     }\r
-    \r
+\r
     if (TmpStr != NULL) {\r
       gBS->FreePool (TmpStr);\r
     }\r
@@ -988,7 +962,7 @@ PlatformBdsEnterFrontPage (
   )\r
 {\r
   EFI_STATUS                         Status;\r
-  EFI_STATUS                         StatusHotkey; \r
+  EFI_STATUS                         StatusHotkey;\r
   EFI_BOOT_LOGO_PROTOCOL             *BootLogo;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *SimpleTextOut;\r
@@ -1011,7 +985,7 @@ PlatformBdsEnterFrontPage (
 \r
   if (!mModeInitialized) {\r
     //\r
-    // After the console is ready, get current video resolution \r
+    // After the console is ready, get current video resolution\r
     // and text mode before launching setup at first time.\r
     //\r
     Status = gBS->HandleProtocol (\r
@@ -1022,7 +996,7 @@ PlatformBdsEnterFrontPage (
     if (EFI_ERROR (Status)) {\r
       GraphicsOutput = NULL;\r
     }\r
-    \r
+\r
     Status = gBS->HandleProtocol (\r
                     gST->ConsoleOutHandle,\r
                     &gEfiSimpleTextOutProtocolGuid,\r
@@ -1030,7 +1004,7 @@ PlatformBdsEnterFrontPage (
                     );\r
     if (EFI_ERROR (Status)) {\r
       SimpleTextOut = NULL;\r
-    }  \r
+    }\r
 \r
     if (GraphicsOutput != NULL) {\r
       //\r
@@ -1053,9 +1027,9 @@ PlatformBdsEnterFrontPage (
 \r
     //\r
     // Get user defined text mode for setup.\r
-    //  \r
+    //\r
     mSetupHorizontalResolution = PcdGet32 (PcdSetupVideoHorizontalResolution);\r
-    mSetupVerticalResolution   = PcdGet32 (PcdSetupVideoVerticalResolution);      \r
+    mSetupVerticalResolution   = PcdGet32 (PcdSetupVideoVerticalResolution);\r
     mSetupTextModeColumn       = PcdGet32 (PcdSetupConOutColumn);\r
     mSetupTextModeRow          = PcdGet32 (PcdSetupConOutRow);\r
 \r
@@ -1082,7 +1056,7 @@ PlatformBdsEnterFrontPage (
   if (!EFI_ERROR(Status) && ((OsIndication & EFI_OS_INDICATIONS_BOOT_TO_FW_UI) != 0)) {\r
     //\r
     // Clear EFI_OS_INDICATIONS_BOOT_TO_FW_UI to acknowledge OS\r
-    // \r
+    //\r
     OsIndication &= ~((UINT64)EFI_OS_INDICATIONS_BOOT_TO_FW_UI);\r
     Status = gRT->SetVariable (\r
                     L"OsIndications",\r
@@ -1119,7 +1093,7 @@ PlatformBdsEnterFrontPage (
       if (!FeaturePcdGet(PcdBootlogoOnlyEnable) || !EFI_ERROR(Status) || !EFI_ERROR(StatusHotkey)){\r
         //\r
         // Ensure screen is clear when switch Console from Graphics mode to Text mode\r
-        // Skip it in normal boot \r
+        // Skip it in normal boot\r
         //\r
         gST->ConOut->EnableCursor (gST->ConOut, TRUE);\r
         gST->ConOut->ClearScreen (gST->ConOut);\r
@@ -1143,8 +1117,8 @@ PlatformBdsEnterFrontPage (
   }\r
 \r
   //\r
-  // Install BM HiiPackages. \r
-  // Keep BootMaint HiiPackage, so that it can be covered by global setting. \r
+  // Install BM HiiPackages.\r
+  // Keep BootMaint HiiPackage, so that it can be covered by global setting.\r
   //\r
   InitBMPackage ();\r
 \r
@@ -1154,7 +1128,7 @@ PlatformBdsEnterFrontPage (
     // Set proper video resolution and text mode for setup\r
     //\r
     BdsSetConsoleMode (TRUE);\r
-    \r
+\r
     InitializeFrontPage (FALSE);\r
 \r
     //\r
@@ -1263,9 +1237,9 @@ Exit:
 \r
 /**\r
   This function will change video resolution and text mode\r
-  according to defined setup mode or defined boot mode  \r
+  according to defined setup mode or defined boot mode\r
 \r
-  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode. \r
+  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode.\r
 \r
   @retval  EFI_SUCCESS  Mode is changed successfully.\r
   @retval  Others             Mode failed to be changed.\r
@@ -1293,13 +1267,13 @@ BdsSetConsoleMode (
   EFI_STATUS                            Status;\r
   UINTN                                 Index;\r
   UINTN                                 CurrentColumn;\r
-  UINTN                                 CurrentRow;  \r
+  UINTN                                 CurrentRow;\r
 \r
   MaxGopMode  = 0;\r
   MaxTextMode = 0;\r
 \r
   //\r
-  // Get current video resolution and text mode \r
+  // Get current video resolution and text mode\r
   //\r
   Status = gBS->HandleProtocol (\r
                   gST->ConsoleOutHandle,\r
@@ -1317,7 +1291,7 @@ BdsSetConsoleMode (
                   );\r
   if (EFI_ERROR (Status)) {\r
     SimpleTextOut = NULL;\r
-  }  \r
+  }\r
 \r
   if ((GraphicsOutput == NULL) || (SimpleTextOut == NULL)) {\r
     return EFI_UNSUPPORTED;\r
@@ -1325,7 +1299,7 @@ BdsSetConsoleMode (
 \r
   if (IsSetupMode) {\r
     //\r
-    // The requried resolution and text mode is setup mode.\r
+    // The required resolution and text mode is setup mode.\r
     //\r
     NewHorizontalResolution = mSetupHorizontalResolution;\r
     NewVerticalResolution   = mSetupVerticalResolution;\r
@@ -1338,12 +1312,12 @@ BdsSetConsoleMode (
     NewHorizontalResolution = mBootHorizontalResolution;\r
     NewVerticalResolution   = mBootVerticalResolution;\r
     NewColumns              = mBootTextModeColumn;\r
-    NewRows                 = mBootTextModeRow;   \r
+    NewRows                 = mBootTextModeRow;\r
   }\r
-  \r
+\r
   if (GraphicsOutput != NULL) {\r
     MaxGopMode  = GraphicsOutput->Mode->MaxMode;\r
-  } \r
+  }\r
 \r
   if (SimpleTextOut != NULL) {\r
     MaxTextMode = SimpleTextOut->Mode->MaxMode;\r
@@ -1381,7 +1355,7 @@ BdsSetConsoleMode (
             return EFI_SUCCESS;\r
           } else {\r
             //\r
-            // If current text mode is different from requried text mode.  Set new video mode\r
+            // If current text mode is different from required text mode.  Set new video mode\r
             //\r
             for (Index = 0; Index < MaxTextMode; Index++) {\r
               Status = SimpleTextOut->QueryMode (SimpleTextOut, Index, &CurrentColumn, &CurrentRow);\r
@@ -1395,8 +1369,10 @@ BdsSetConsoleMode (
                   //\r
                   // Update text mode PCD.\r
                   //\r
-                  PcdSet32 (PcdConOutColumn, mSetupTextModeColumn);\r
-                  PcdSet32 (PcdConOutRow, mSetupTextModeRow);\r
+                  Status = PcdSet32S (PcdConOutColumn, mSetupTextModeColumn);\r
+                  ASSERT_EFI_ERROR (Status);\r
+                  Status = PcdSet32S (PcdConOutRow, mSetupTextModeRow);\r
+                  ASSERT_EFI_ERROR (Status);\r
                   FreePool (Info);\r
                   return EFI_SUCCESS;\r
                 }\r
@@ -1404,7 +1380,7 @@ BdsSetConsoleMode (
             }\r
             if (Index == MaxTextMode) {\r
               //\r
-              // If requried text mode is not supported, return error.\r
+              // If required text mode is not supported, return error.\r
               //\r
               FreePool (Info);\r
               return EFI_UNSUPPORTED;\r
@@ -1437,12 +1413,16 @@ BdsSetConsoleMode (
   // Set PCD to Inform GraphicsConsole to change video resolution.\r
   // Set PCD to Inform Consplitter to change text mode.\r
   //\r
-  PcdSet32 (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
-  PcdSet32 (PcdVideoVerticalResolution, NewVerticalResolution);\r
-  PcdSet32 (PcdConOutColumn, NewColumns);\r
-  PcdSet32 (PcdConOutRow, NewRows);\r
-  \r
-  \r
+  Status = PcdSet32S (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdVideoVerticalResolution, NewVerticalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutColumn, NewColumns);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutRow, NewRows);\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+\r
   //\r
   // Video mode is changed, so restart graphics console driver and higher level driver.\r
   // Reconnect graphics console driver and higher level driver.\r