]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.c
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / PlatformBdsLib / BdsPlatform.c
index 7dd289ece8dceaad13cbbfa6fccf93710a052fec..4d5997d6e9613b25618577109b6b35037e05b069 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
 \r
-  Copyright (c) 2004  - 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2004  - 2019, Intel Corporation. All rights reserved.<BR>\r
                                                                                    \r
-  This program and the accompanying materials are licensed and made available under\r
-  the terms and conditions of the BSD License that accompanies this distribution.  \r
-  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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
                                                                                    \r
 \r
 \r
@@ -27,7 +21,7 @@ Abstract:
 #include "SetupMode.h"\r
 #include <Guid/SetupVariable.h>\r
 #include <Library/TcgPhysicalPresenceLib.h>\r
-#include <Library/TrEEPhysicalPresenceLib.h>\r
+#include <Library/Tcg2PhysicalPresenceLib.h>\r
 #include <Protocol/I2cMasterMcg.h>\r
 #include <TianoApi.h>\r
 #include <PlatformBaseAddresses.h>\r
@@ -1362,7 +1356,7 @@ PlatformBdsLibEnumerateAllBootOption (
 \r
     Status = Fv->ReadFile (\r
                   Fv,\r
-                  PcdGetPtr(PcdShellFile),\r
+                  &gUefiShellFileGuid,\r
                   NULL,\r
                   &Size,\r
                   &Type,\r
@@ -1534,7 +1528,7 @@ PlatformBdsLibEnumerateAllBootOption (
 \r
     Status = Fv->ReadFile (\r
                   Fv,\r
-                  PcdGetPtr(PcdShellFile),\r
+                  &gUefiShellFileGuid,\r
                   NULL,\r
                   &Size,\r
                   &Type,\r
@@ -1708,6 +1702,8 @@ PlatformBdsPolicyBehavior (
     EsrtManagement = NULL;\r
   }\r
 \r
+  DEBUG ((DEBUG_INFO, "BDS: BootMode=%02x\n", BootMode));\r
+\r
   switch (BootMode) {\r
 \r
   case BOOT_WITH_MINIMAL_CONFIGURATION:\r
@@ -1784,9 +1780,8 @@ PlatformBdsPolicyBehavior (
       goto FULL_CONFIGURATION;\r
     }\r
 \r
-    if (SystemConfiguration.QuietBoot) {\r
-      EnableQuietBoot (PcdGetPtr(PcdLogoFile));\r
-    } else {\r
+    EnableQuietBoot (PcdGetPtr(PcdLogoFile));\r
+    if (!SystemConfiguration.QuietBoot) {\r
       PlatformBdsDiagnostics (IGNORE, FALSE, BaseMemoryTest);\r
     }\r
 \r
@@ -1795,7 +1790,7 @@ PlatformBdsPolicyBehavior (
     TcgPhysicalPresenceLibProcessRequest();\r
     #endif\r
     #ifdef FTPM_ENABLE\r
-    TrEEPhysicalPresenceLibProcessRequest(NULL);\r
+    Tcg2PhysicalPresenceLibProcessRequest(NULL);\r
     #endif\r
 \r
     if (EsrtManagement != NULL) {\r
@@ -1870,11 +1865,11 @@ PlatformBdsPolicyBehavior (
     // Boot with the specific configuration\r
     //\r
     PlatformBdsConnectConsole (gPlatformConsole);\r
-    PlatformBdsDiagnostics (EXTENSIVE, FALSE, BaseMemoryTest);\r
+    PlatformBdsDiagnostics (EXTENSIVE, TRUE, BaseMemoryTest);\r
 \r
-    DEBUG((EFI_D_INFO, "ProcessCapsules Before EndOfDxe......\n"));\r
+    DEBUG((DEBUG_INFO, "ProcessCapsules Before EndOfDxe......\n"));\r
     ProcessCapsules ();\r
-    DEBUG((EFI_D_INFO, "ProcessCapsules Done\n"));\r
+    DEBUG((DEBUG_INFO, "ProcessCapsules Done\n"));\r
 \r
     //\r
     // Close boot script and install ready to lock\r
@@ -1901,9 +1896,9 @@ PlatformBdsPolicyBehavior (
       EsrtManagement->SyncEsrtFmp();\r
     }\r
 \r
-    DEBUG((EFI_D_INFO, "ProcessCapsules After ConnectAll......\n"));\r
+    DEBUG((DEBUG_INFO, "ProcessCapsules After ConnectAll......\n"));\r
     ProcessCapsules();\r
-    DEBUG((EFI_D_INFO, "ProcessCapsules Done\n"));\r
+    DEBUG((DEBUG_INFO, "ProcessCapsules Done\n"));\r
     break;\r
 \r
   case BOOT_IN_RECOVERY_MODE:\r
@@ -1973,10 +1968,9 @@ FULL_CONFIGURATION:
     // Perform some platform specific connect sequence\r
     //\r
     PlatformBdsConnectSequence ();\r
-    if (SystemConfiguration.QuietBoot) {\r
-        EnableQuietBoot (PcdGetPtr(PcdLogoFile));\r
-    } else {\r
-        PlatformBdsDiagnostics (IGNORE, FALSE, BaseMemoryTest);\r
+    EnableQuietBoot (PcdGetPtr(PcdLogoFile));\r
+    if (!SystemConfiguration.QuietBoot) {\r
+      PlatformBdsDiagnostics (IGNORE, FALSE, BaseMemoryTest);\r
     }\r
 \r
     //\r
@@ -2005,7 +1999,7 @@ FULL_CONFIGURATION:
    TcgPhysicalPresenceLibProcessRequest();\r
    #endif\r
    #ifdef FTPM_ENABLE\r
-   TrEEPhysicalPresenceLibProcessRequest(NULL);\r
+   Tcg2PhysicalPresenceLibProcessRequest(NULL);\r
    #endif\r
 \r
     if (EsrtManagement != NULL) {\r
@@ -2411,6 +2405,12 @@ ShowProgressHotKey (
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;\r
   UINT32                        GpioValue;\r
+  CHAR16                        *TmpStr1;\r
+  CHAR16                        *TmpStr2;\r
+  CHAR16                        *TmpStr3;\r
+  UINTN                         TmpStrSize;\r
+  VOID                          *Buffer;\r
+  UINTN                         Size;\r
 \r
   if (TimeoutDefault == 0) {\r
     return EFI_TIMEOUT;\r
@@ -2434,10 +2434,76 @@ ShowProgressHotKey (
   SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
   SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
 \r
+  TmpStr2 = NULL;\r
+  TmpStr3 = NULL;\r
+\r
+  //\r
+  // Check if the platform is using test key.\r
+  //\r
+  Status = GetSectionFromAnyFv(\r
+             PcdGetPtr(PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid),\r
+             EFI_SECTION_RAW,\r
+             0,\r
+             &Buffer,\r
+             &Size\r
+             );\r
+  if (!EFI_ERROR(Status)) {\r
+    if ((Size == PcdGetSize(PcdRsa2048Sha256PublicKeyBuffer)) &&\r
+        (CompareMem(Buffer, PcdGetPtr(PcdRsa2048Sha256PublicKeyBuffer), Size) == 0)) {\r
+      TmpStr2 = L"WARNING: Recovery Test Key is used.\r\n";\r
+      if (DebugAssertEnabled()) {\r
+        DEBUG ((DEBUG_INFO, "\n\nWARNING: Recovery Test Key is used.\n"));\r
+      } else {\r
+        SerialPortWrite((UINT8 *)"\n\nWARNING: Recovery Test Key is used.", sizeof("\n\nWARNING: Recovery Test Key is used."));\r
+      }\r
+      PcdSetBoolS(PcdTestKeyUsed, TRUE);\r
+    }\r
+    FreePool(Buffer);\r
+  }\r
+  Status = GetSectionFromAnyFv(\r
+             PcdGetPtr(PcdEdkiiPkcs7TestPublicKeyFileGuid),\r
+             EFI_SECTION_RAW,\r
+             0,\r
+             &Buffer,\r
+             &Size\r
+             );\r
+  if (!EFI_ERROR(Status)) {\r
+    if ((Size == PcdGetSize(PcdPkcs7CertBuffer)) &&\r
+        (CompareMem(Buffer, PcdGetPtr(PcdPkcs7CertBuffer), Size) == 0)) {\r
+      TmpStr3 = L"WARNING: Capsule Test Key is used.\r\n";\r
+      if (DebugAssertEnabled()) {\r
+        DEBUG ((DEBUG_INFO, "\n\nWARNING: Capsule Test Key is used.\r\n"));\r
+      } else {\r
+        SerialPortWrite((UINT8 *)"\n\nWARNING: Capsule Test Key is used.", sizeof("\n\nWARNING: Capsule Test Key is used."));\r
+      }\r
+      PcdSetBoolS(PcdTestKeyUsed, TRUE);\r
+    }\r
+    FreePool(Buffer);\r
+  }\r
+\r
   //\r
   // Clear the progress status bar first\r
   //\r
-  TmpStr = L"Start boot option, Press <F2> or <DEL> to enter setup page.";\r
+  TmpStr1 = L"Start boot option, Press <F2> or <DEL> to enter setup page.\r\n";\r
+  TmpStrSize = StrSize(TmpStr1);\r
+  if (TmpStr2 != NULL) {\r
+    TmpStrSize += StrSize(TmpStr2);\r
+  }\r
+  if (TmpStr3 != NULL) {\r
+    TmpStrSize += StrSize(TmpStr3);\r
+  }\r
+  TmpStr = AllocatePool (TmpStrSize);\r
+  if (TmpStr == NULL) {\r
+    TmpStr = TmpStr1;\r
+  } else {\r
+    StrCpyS(TmpStr, TmpStrSize/sizeof(CHAR16), TmpStr1);\r
+    if (TmpStr2 != NULL) {\r
+      StrCatS(TmpStr, TmpStrSize/sizeof(CHAR16), TmpStr2);\r
+    }\r
+    if (TmpStr3 != NULL) {\r
+      StrCatS(TmpStr, TmpStrSize/sizeof(CHAR16), TmpStr3);\r
+    }\r
+  }\r
   PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
 \r
   TimeoutRemain = TimeoutDefault;\r
@@ -2570,6 +2636,8 @@ PlatformBdsEnterFrontPageWithHotKey (
 {\r
   EFI_STATUS                    Status;\r
 \r
+  EFI_STATUS                         LogoStatus;\r
+  EFI_BOOT_LOGO_PROTOCOL             *BootLogo;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *SimpleTextOut;\r
   UINTN                              BootTextColumn;\r
@@ -2649,6 +2717,14 @@ PlatformBdsEnterFrontPageWithHotKey (
     gST->ConOut->EnableCursor (gST->ConOut, TRUE);\r
     gST->ConOut->ClearScreen (gST->ConOut);\r
 \r
+    //\r
+    // Boot Logo is corrupted, report it using Boot Logo protocol.\r
+    //\r
+    LogoStatus = gBS->LocateProtocol (&gEfiBootLogoProtocolGuid, NULL, (VOID **) &BootLogo);\r
+    if (!EFI_ERROR (LogoStatus) && (BootLogo != NULL)) {\r
+      BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);\r
+    }\r
+\r
     if (EFI_ERROR (Status)) {\r
       //\r
       // Timeout or user press enter to continue\r
@@ -2656,6 +2732,7 @@ PlatformBdsEnterFrontPageWithHotKey (
       goto Exit;\r
     }\r
   }\r
+\r
   //\r
   // Install BM HiiPackages. \r
   // Keep BootMaint HiiPackage, so that it can be covered by global setting. \r