2 Platform BDS customizations.
4 Copyright (c) 2004 - 2008, Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include "BdsPlatform.h"
19 // BDS Platform Functions
30 Platform Bds init. Incude the platform firmware vendor, revision
41 DEBUG ((EFI_D_INFO
, "PlatformBdsInit\n"));
61 EFI_SUCCESS - Connect RootBridge successfully.
62 EFI_STATUS - Connect RootBridge fail.
67 EFI_HANDLE RootHandle
;
70 // Make all the PCI_IO protocols on PCI Seg 0 show up
72 BdsLibConnectDevicePath (gPlatformRootBridges
[0]);
74 Status
= gBS
->LocateDevicePath (
75 &gEfiDevicePathProtocolGuid
,
76 &gPlatformRootBridges
[0],
79 if (EFI_ERROR (Status
)) {
83 Status
= gBS
->ConnectController (RootHandle
, NULL
, NULL
, FALSE
);
84 if (EFI_ERROR (Status
)) {
93 PrepareLpcBridgeDevicePath (
94 IN EFI_HANDLE DeviceHandle
100 Add IsaKeyboard to ConIn,
101 add IsaSerial to ConOut, ConIn, ErrOut.
106 DeviceHandle - Handle of PCIIO protocol.
110 EFI_SUCCESS - LPC bridge is added to ConOut, ConIn, and ErrOut.
111 EFI_STATUS - No LPC bridge is added.
116 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
117 EFI_DEVICE_PATH_PROTOCOL
*TempDevicePath
;
121 Status
= gBS
->HandleProtocol (
123 &gEfiDevicePathProtocolGuid
,
126 if (EFI_ERROR (Status
)) {
129 TempDevicePath
= DevicePath
;
134 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gPnpPs2KeyboardDeviceNode
);
136 BdsLibUpdateConsoleVariable (VarConsoleInp
, DevicePath
, NULL
);
141 DevicePath
= TempDevicePath
;
142 gPnp16550ComPortDeviceNode
.UID
= 0;
144 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gPnp16550ComPortDeviceNode
);
145 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gUartDeviceNode
);
146 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gTerminalTypeDeviceNode
);
151 DevPathStr
= DevicePathToStr(DevicePath
);
154 "BdsPlatform.c+%d: COM%d DevPath: %s\n",
156 gPnp16550ComPortDeviceNode
.UID
+ 1,
159 FreePool(DevPathStr
);
161 BdsLibUpdateConsoleVariable (VarConsoleOut
, DevicePath
, NULL
);
162 BdsLibUpdateConsoleVariable (VarConsoleInp
, DevicePath
, NULL
);
163 BdsLibUpdateConsoleVariable (VarErrorOut
, DevicePath
, NULL
);
168 DevicePath
= TempDevicePath
;
169 gPnp16550ComPortDeviceNode
.UID
= 1;
171 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gPnp16550ComPortDeviceNode
);
172 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gUartDeviceNode
);
173 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gTerminalTypeDeviceNode
);
178 DevPathStr
= DevicePathToStr(DevicePath
);
181 "BdsPlatform.c+%d: COM%d DevPath: %s\n",
183 gPnp16550ComPortDeviceNode
.UID
+ 1,
186 FreePool(DevPathStr
);
188 BdsLibUpdateConsoleVariable (VarConsoleOut
, DevicePath
, NULL
);
189 BdsLibUpdateConsoleVariable (VarConsoleInp
, DevicePath
, NULL
);
190 BdsLibUpdateConsoleVariable (VarErrorOut
, DevicePath
, NULL
);
197 IN EFI_DEVICE_PATH_PROTOCOL
*PciDevicePath
,
198 OUT EFI_DEVICE_PATH_PROTOCOL
**GopDevicePath
203 EFI_HANDLE PciDeviceHandle
;
204 EFI_DEVICE_PATH_PROTOCOL
*TempDevicePath
;
205 EFI_DEVICE_PATH_PROTOCOL
*TempPciDevicePath
;
206 UINTN GopHandleCount
;
207 EFI_HANDLE
*GopHandleBuffer
;
209 if (PciDevicePath
== NULL
|| GopDevicePath
== NULL
) {
210 return EFI_INVALID_PARAMETER
;
214 // Initialize the GopDevicePath to be PciDevicePath
216 *GopDevicePath
= PciDevicePath
;
217 TempPciDevicePath
= PciDevicePath
;
219 Status
= gBS
->LocateDevicePath (
220 &gEfiDevicePathProtocolGuid
,
224 if (EFI_ERROR (Status
)) {
229 // Try to connect this handle, so that GOP dirver could start on this
230 // device and create child handles with GraphicsOutput Protocol installed
231 // on them, then we get device paths of these child handles and select
232 // them as possible console device.
234 gBS
->ConnectController (PciDeviceHandle
, NULL
, NULL
, FALSE
);
236 Status
= gBS
->LocateHandleBuffer (
238 &gEfiGraphicsOutputProtocolGuid
,
243 if (!EFI_ERROR (Status
)) {
245 // Add all the child handles as possible Console Device
247 for (Index
= 0; Index
< GopHandleCount
; Index
++) {
248 Status
= gBS
->HandleProtocol (GopHandleBuffer
[Index
], &gEfiDevicePathProtocolGuid
, (VOID
*)&TempDevicePath
);
249 if (EFI_ERROR (Status
)) {
255 GetDevicePathSize (PciDevicePath
) - END_DEVICE_PATH_LENGTH
258 // In current implementation, we only enable one of the child handles
259 // as console device, i.e. sotre one of the child handle's device
260 // path to variable "ConOut"
261 // In futhure, we could select all child handles to be console device
264 *GopDevicePath
= TempDevicePath
;
267 // Delete the PCI device's path that added by GetPlugInPciVgaDevicePath()
268 // Add the integrity GOP device path.
270 BdsLibUpdateConsoleVariable (VarConsoleOutDev
, NULL
, PciDevicePath
);
271 BdsLibUpdateConsoleVariable (VarConsoleOutDev
, TempDevicePath
, NULL
);
274 gBS
->FreePool (GopHandleBuffer
);
281 PreparePciVgaDevicePath (
282 IN EFI_HANDLE DeviceHandle
288 Add PCI VGA to ConOut.
293 DeviceHandle - Handle of PCIIO protocol.
297 EFI_SUCCESS - PCI VGA is added to ConOut.
298 EFI_STATUS - No PCI VGA device is added.
303 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
304 EFI_DEVICE_PATH_PROTOCOL
*GopDevicePath
;
307 Status
= gBS
->HandleProtocol (
309 &gEfiDevicePathProtocolGuid
,
312 if (EFI_ERROR (Status
)) {
316 GetGopDevicePath (DevicePath
, &GopDevicePath
);
317 DevicePath
= GopDevicePath
;
319 BdsLibUpdateConsoleVariable (VarConsoleOut
, DevicePath
, NULL
);
325 PreparePciSerialDevicePath (
326 IN EFI_HANDLE DeviceHandle
332 Add PCI Serial to ConOut, ConIn, ErrOut.
337 DeviceHandle - Handle of PCIIO protocol.
341 EFI_SUCCESS - PCI Serial is added to ConOut, ConIn, and ErrOut.
342 EFI_STATUS - No PCI Serial device is added.
347 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
350 Status
= gBS
->HandleProtocol (
352 &gEfiDevicePathProtocolGuid
,
355 if (EFI_ERROR (Status
)) {
359 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gUartDeviceNode
);
360 DevicePath
= AppendDevicePathNode (DevicePath
, (EFI_DEVICE_PATH_PROTOCOL
*)&gTerminalTypeDeviceNode
);
362 BdsLibUpdateConsoleVariable (VarConsoleOut
, DevicePath
, NULL
);
363 BdsLibUpdateConsoleVariable (VarConsoleInp
, DevicePath
, NULL
);
364 BdsLibUpdateConsoleVariable (VarErrorOut
, DevicePath
, NULL
);
370 DetectAndPreparePlatformPciDevicePath (
371 BOOLEAN DetectVgaOnly
377 Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut
381 DetectVgaOnly - Only detect VGA device if it's TRUE.
385 EFI_SUCCESS - PCI Device check and Console variable update successfully.
386 EFI_STATUS - PCI Device check or Console variable update fail.
392 EFI_HANDLE
*HandleBuffer
;
394 EFI_PCI_IO_PROTOCOL
*PciIo
;
398 // Start to check all the PciIo to find all possible device
402 Status
= gBS
->LocateHandleBuffer (
404 &gEfiPciIoProtocolGuid
,
409 if (EFI_ERROR (Status
)) {
413 for (Index
= 0; Index
< HandleCount
; Index
++) {
414 Status
= gBS
->HandleProtocol (HandleBuffer
[Index
], &gEfiPciIoProtocolGuid
, (VOID
*)&PciIo
);
415 if (EFI_ERROR (Status
)) {
420 // Check for all PCI device
422 Status
= PciIo
->Pci
.Read (
426 sizeof (Pci
) / sizeof (UINT32
),
429 if (EFI_ERROR (Status
)) {
433 if (!DetectVgaOnly
) {
435 // Here we decide whether it is LPC Bridge
437 if ((IS_PCI_LPC (&Pci
)) ||
438 ((IS_PCI_ISA_PDECODE (&Pci
)) &&
439 (Pci
.Hdr
.VendorId
== 0x8086) &&
440 (Pci
.Hdr
.DeviceId
== 0x7000)
443 Status
= PciIo
->Attributes (
445 EfiPciIoAttributeOperationEnable
,
446 EFI_PCI_DEVICE_ENABLE
,
450 // Add IsaKeyboard to ConIn,
451 // add IsaSerial to ConOut, ConIn, ErrOut
453 DEBUG ((EFI_D_INFO
, "Find the LPC Bridge device\n"));
454 PrepareLpcBridgeDevicePath (HandleBuffer
[Index
]);
458 // Here we decide which Serial device to enable in PCI bus
460 if (IS_PCI_16550SERIAL (&Pci
)) {
462 // Add them to ConOut, ConIn, ErrOut.
464 DEBUG ((EFI_D_INFO
, "Find the 16550 SERIAL device\n"));
465 PreparePciSerialDevicePath (HandleBuffer
[Index
]);
470 if ((Pci
.Hdr
.VendorId
== 0x8086) &&
471 (Pci
.Hdr
.DeviceId
== 0x7010)
473 Status
= PciIo
->Attributes (
475 EfiPciIoAttributeOperationEnable
,
476 EFI_PCI_DEVICE_ENABLE
,
482 // Here we decide which VGA device to enable in PCI bus
484 if (IS_PCI_VGA (&Pci
)) {
486 // Add them to ConOut.
488 DEBUG ((EFI_D_INFO
, "Find the VGA device\n"));
489 PreparePciVgaDevicePath (HandleBuffer
[Index
]);
494 gBS
->FreePool (HandleBuffer
);
501 PlatformBdsConnectConsole (
502 IN BDS_CONSOLE_CONNECT_ENTRY
*PlatformConsole
508 Connect the predefined platform default console device. Always try to find
509 and enable the vga device if have.
513 PlatformConsole - Predfined platform default console device array.
517 EFI_SUCCESS - Success connect at least one ConIn and ConOut
518 device, there must have one ConOut device is
521 EFI_STATUS - Return the status of
522 BdsLibConnectAllDefaultConsoles ()
528 EFI_DEVICE_PATH_PROTOCOL
*VarConout
;
529 EFI_DEVICE_PATH_PROTOCOL
*VarConin
;
530 UINTN DevicePathSize
;
533 // Connect RootBridge
535 ConnectRootBridge ();
537 VarConout
= BdsLibGetVariableAndSize (
539 &gEfiGlobalVariableGuid
,
542 VarConin
= BdsLibGetVariableAndSize (
544 &gEfiGlobalVariableGuid
,
548 if (VarConout
== NULL
|| VarConin
== NULL
) {
550 // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut
552 DetectAndPreparePlatformPciDevicePath (FALSE
);
555 // Have chance to connect the platform default console,
556 // the platform default console is the minimue device group
557 // the platform should support
559 for (Index
= 0; PlatformConsole
[Index
].DevicePath
!= NULL
; ++Index
) {
561 // Update the console variable with the connect type
563 if ((PlatformConsole
[Index
].ConnectType
& CONSOLE_IN
) == CONSOLE_IN
) {
564 BdsLibUpdateConsoleVariable (VarConsoleInp
, PlatformConsole
[Index
].DevicePath
, NULL
);
566 if ((PlatformConsole
[Index
].ConnectType
& CONSOLE_OUT
) == CONSOLE_OUT
) {
567 BdsLibUpdateConsoleVariable (VarConsoleOut
, PlatformConsole
[Index
].DevicePath
, NULL
);
569 if ((PlatformConsole
[Index
].ConnectType
& STD_ERROR
) == STD_ERROR
) {
570 BdsLibUpdateConsoleVariable (VarErrorOut
, PlatformConsole
[Index
].DevicePath
, NULL
);
575 // Only detect VGA device and add them to ConOut
577 DetectAndPreparePlatformPciDevicePath (TRUE
);
581 // Connect the all the default console with current cosole variable
583 Status
= BdsLibConnectAllDefaultConsoles ();
584 if (EFI_ERROR (Status
)) {
597 // Device 0 Function 0
599 PciWrite8 (PCI_LIB_ADDRESS (0,0,0,0x3c), 0x00);
602 // Device 1 Function 0
604 PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x3c), 0x00);
605 PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x60), 0x8b);
606 PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x61), 0x89);
607 PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x62), 0x0a);
608 PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x63), 0x89);
609 //PciWrite8 (PCI_LIB_ADDRESS (0,1,0,0x82), 0x02);
612 // Device 1 Function 1
614 PciWrite8 (PCI_LIB_ADDRESS (0,1,1,0x3c), 0x00);
617 // Device 1 Function 3
619 PciWrite8 (PCI_LIB_ADDRESS (0,1,3,0x3c), 0x0b);
620 PciWrite8 (PCI_LIB_ADDRESS (0,1,3,0x3d), 0x01);
621 PciWrite8 (PCI_LIB_ADDRESS (0,1,3,0x5f), 0x90);
624 // Device 2 Function 0
626 PciWrite8 (PCI_LIB_ADDRESS (0,2,0,0x3c), 0x00);
629 // Device 3 Function 0
631 PciWrite8 (PCI_LIB_ADDRESS (0,3,0,0x3c), 0x0b);
632 PciWrite8 (PCI_LIB_ADDRESS (0,3,0,0x3d), 0x01);
637 PlatformBdsConnectSequence (
644 Connect with predeined platform connect sequence,
645 the OEM/IBV can customize with their own connect sequence.
659 DEBUG ((EFI_D_INFO
, "PlatformBdsConnectSequence\n"));
664 // Here we can get the customized platform connect sequence
665 // Notes: we can connect with new variable which record the
666 // last time boots connect device path sequence
668 while (gPlatformConnectSequence
[Index
] != NULL
) {
670 // Build the platform boot option
672 BdsLibConnectDevicePath (gPlatformConnectSequence
[Index
]);
677 // Just use the simple policy to connect all devices
681 PciInitialization ();
685 PlatformBdsGetDriverOption (
686 IN OUT LIST_ENTRY
*BdsDriverLists
692 Load the predefined driver option, OEM/IBV can customize this
693 to load their own drivers
697 BdsDriverLists - The header of the driver option link list.
705 DEBUG ((EFI_D_INFO
, "PlatformBdsGetDriverOption\n"));
710 PlatformBdsDiagnostics (
711 IN EXTENDMEM_COVERAGE_LEVEL MemoryTestLevel
,
718 Perform the platform diagnostic, such like test memory. OEM/IBV also
719 can customize this fuction to support specific platform diagnostic.
723 MemoryTestLevel - The memory test intensive level
725 QuietBoot - Indicate if need to enable the quiet boot
735 DEBUG ((EFI_D_INFO
, "PlatformBdsDiagnostics\n"));
738 // Here we can decide if we need to show
739 // the diagnostics screen
740 // Notes: this quiet boot code should be remove
741 // from the graphic lib
744 EnableQuietBoot (&gEfiDefaultBmpLogoGuid
);
746 // Perform system diagnostic
748 Status
= BdsMemoryTest (MemoryTestLevel
);
749 if (EFI_ERROR (Status
)) {
756 // Perform system diagnostic
758 Status
= BdsMemoryTest (MemoryTestLevel
);
764 PlatformBdsPolicyBehavior (
765 IN OUT LIST_ENTRY
*DriverOptionList
,
766 IN OUT LIST_ENTRY
*BootOptionList
772 The function will excute with as the platform policy, current policy
773 is driven by boot mode. IBV/OEM can customize this code for their specific
778 DriverOptionList - The header of the driver option link list
780 BootOptionList - The header of the boot option link list
790 EFI_EVENT UserInputDurationTime
;
792 BDS_COMMON_OPTION
*BootOption
;
796 EFI_BOOT_MODE BootMode
;
798 DEBUG ((EFI_D_INFO
, "PlatformBdsPolicyBehavior\n"));
801 // Init the time out value
803 Timeout
= PcdGet16 (PcdPlatformBootTimeOut
);
806 // Load the driver option as the driver option list
808 PlatformBdsGetDriverOption (DriverOptionList
);
811 // Get current Boot Mode
813 Status
= BdsLibGetBootMode (&BootMode
);
814 DEBUG ((EFI_D_ERROR
, "Boot Mode:%x\n", BootMode
));
817 // Go the different platform policy with different boot mode
818 // Notes: this part code can be change with the table policy
820 ASSERT (BootMode
== BOOT_WITH_FULL_CONFIGURATION
);
822 // Connect platform console
824 Status
= PlatformBdsConnectConsole (gPlatformConsole
);
825 if (EFI_ERROR (Status
)) {
827 // Here OEM/IBV can customize with defined action
829 PlatformBdsNoConsoleAction ();
832 // Create a 300ms duration event to ensure user has enough input time to enter Setup
834 Status
= gBS
->CreateEvent (
839 &UserInputDurationTime
841 ASSERT (Status
== EFI_SUCCESS
);
842 Status
= gBS
->SetTimer (UserInputDurationTime
, TimerRelative
, 3000000);
843 ASSERT (Status
== EFI_SUCCESS
);
845 // Memory test and Logo show
847 PlatformBdsDiagnostics (IGNORE
, TRUE
);
850 // Perform some platform specific connect sequence
852 PlatformBdsConnectSequence ();
855 // Give one chance to enter the setup if we
859 //PlatformBdsEnterFrontPage (Timeout, FALSE);
862 DEBUG ((EFI_D_INFO
, "BdsLibConnectAll\n"));
864 BdsLibEnumerateAllBootOption (BootOptionList
);
867 // Please uncomment above ConnectAll and EnumerateAll code and remove following first boot
868 // checking code in real production tip.
870 // In BOOT_WITH_FULL_CONFIGURATION boot mode, should always connect every device
871 // and do enumerate all the default boot options. But in development system board, the boot mode
872 // cannot be BOOT_ASSUMING_NO_CONFIGURATION_CHANGES because the machine box
873 // is always open. So the following code only do the ConnectAll and EnumerateAll at first boot.
875 Status
= BdsLibBuildOptionFromVar (BootOptionList
, L
"BootOrder");
876 if (EFI_ERROR(Status
)) {
878 // If cannot find "BootOrder" variable, it may be first boot.
879 // Try to connect all devices and enumerate all boot options here.
882 BdsLibEnumerateAllBootOption (BootOptionList
);
886 // To give the User a chance to enter Setup here, if user set TimeOut is 0.
887 // BDS should still give user a chance to enter Setup
889 // Connect first boot option, and then check user input before exit
891 for (Link
= BootOptionList
->ForwardLink
; Link
!= BootOptionList
;Link
= Link
->ForwardLink
) {
892 BootOption
= CR (Link
, BDS_COMMON_OPTION
, Link
, BDS_LOAD_OPTION_SIGNATURE
);
893 if (!IS_LOAD_OPTION_TYPE (BootOption
->Attribute
, LOAD_OPTION_ACTIVE
)) {
895 // skip the header of the link list, becuase it has no boot option
900 // Make sure the boot option device path connected, but ignore the BBS device path
902 if (DevicePathType (BootOption
->DevicePath
) != BBS_DEVICE_PATH
) {
903 BdsLibConnectDevicePath (BootOption
->DevicePath
);
910 // Check whether the user input after the duration time has expired
912 OldTpl
= EfiGetCurrentTpl();
913 gBS
->RestoreTPL (TPL_APPLICATION
);
914 gBS
->WaitForEvent (1, &UserInputDurationTime
, &Index
);
915 gBS
->CloseEvent (UserInputDurationTime
);
916 Status
= gST
->ConIn
->ReadKeyStroke (gST
->ConIn
, &Key
);
917 gBS
->RaiseTPL (OldTpl
);
919 if (!EFI_ERROR (Status
)) {
921 // Enter Setup if user input
924 PlatformBdsEnterFrontPage (Timeout
, FALSE
);
932 PlatformBdsBootSuccess (
933 IN BDS_COMMON_OPTION
*Option
939 Hook point after a boot attempt succeeds. We don't expect a boot option to
940 return, so the EFI 1.0 specification defines that you will default to an
941 interactive mode and stop processing the BootOrder list in this case. This
942 is alos a platform implementation and can be customized by IBV/OEM.
946 Option - Pointer to Boot Option that succeeded to boot.
956 DEBUG ((EFI_D_INFO
, "PlatformBdsBootSuccess\n"));
958 // If Boot returned with EFI_SUCCESS and there is not in the boot device
959 // select loop then we need to pop up a UI and wait for user input.
961 TmpStr
= Option
->StatusString
;
962 if (TmpStr
!= NULL
) {
963 BdsLibOutputStrings (gST
->ConOut
, TmpStr
, Option
->Description
, L
"\n\r", NULL
);
970 PlatformBdsBootFail (
971 IN BDS_COMMON_OPTION
*Option
,
972 IN EFI_STATUS Status
,
974 IN UINTN ExitDataSize
980 Hook point after a boot attempt fails.
984 Option - Pointer to Boot Option that failed to boot.
986 Status - Status returned from failed boot.
988 ExitData - Exit data returned from failed boot.
990 ExitDataSize - Exit data size returned from failed boot.
1000 DEBUG ((EFI_D_INFO
, "PlatformBdsBootFail\n"));
1003 // If Boot returned with failed status then we need to pop up a UI and wait
1006 TmpStr
= Option
->StatusString
;
1007 if (TmpStr
!= NULL
) {
1008 BdsLibOutputStrings (gST
->ConOut
, TmpStr
, Option
->Description
, L
"\n\r", NULL
);
1014 PlatformBdsNoConsoleAction (
1019 Routine Description:
1021 This function is remained for IBV/OEM to do some platform action,
1022 if there no console device can be connected.
1030 EFI_SUCCESS - Direct return success now.
1034 DEBUG ((EFI_D_INFO
, "PlatformBdsNoConsoleAction\n"));
1040 PlatformBdsLockNonUpdatableFlash (
1044 DEBUG ((EFI_D_INFO
, "PlatformBdsLockNonUpdatableFlash\n"));