From: "Wu, Hao A" <hao.a.wu@intel.com>
To: devel@edk2.groups.io
Cc: Hao A Wu <hao.a.wu@intel.com>,
Michael D Kinney <michael.d.kinney@intel.com>
Subject: [edk2-platforms][PATCH v2 12/18] Silicon/Hisilicon/PlatformIntelBdsLib: Remove Hisilicon PlatformBdsLib
Date: Mon, 20 May 2019 16:40:59 +0800 [thread overview]
Message-ID: <20190520084105.9028-13-hao.a.wu@intel.com> (raw)
In-Reply-To: <20190520084105.9028-1-hao.a.wu@intel.com>
Hisilicon platforms have already switched to the BDS driver in
MdeModulePkg by commit 5845a5cde9d6bd51d77067b2594654005887a434.
Thus, the Hisilicon PlatformBdsLib is no longer needed. This commit will
remove this library instance implementation.
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Hao A Wu <hao.a.wu@intel.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Silicon/Hisilicon/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf | 77 --
Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.h | 55 --
Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.h | 21 -
Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.c | 957 --------------------
Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.c | 112 ---
5 files changed, 1222 deletions(-)
diff --git a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf b/Silicon/Hisilicon/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
deleted file mode 100644
index 0aa50e51db..0000000000
--- a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
+++ /dev/null
@@ -1,77 +0,0 @@
-## @file
-# Implementation for PlatformBdsLib library class interfaces.
-#
-# Copyright (C) 2015, Red Hat, Inc.
-# Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# Copyright (c) 2015, Hisilicon Limited. All rights reserved.
-# Copyright (c) 2015, Linaro Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-# Based on the files under ArmVirtPkg/Library/PlatformIntelBdsLib/
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = PlatformIntelBdsLib
- FILE_GUID = 46DF84EB-F603-4D39-99D8-E1E86B50BCC2
- MODULE_TYPE = DXE_DRIVER
- VERSION_STRING = 1.0
- LIBRARY_CLASS = PlatformBdsLib|DXE_DRIVER
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = ARM AARCH64
-#
-
-[Sources]
- IntelBdsPlatform.c
- IntelBdsPlatformCommon.c
-
-[Packages]
- IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
- MdeModulePkg/MdeModulePkg.dec
- MdePkg/MdePkg.dec
- Silicon/Hisilicon/HisiPkg.dec
-
-[LibraryClasses]
- BaseLib
- BaseMemoryLib
- DebugLib
- DevicePathLib
- GenericBdsLib
- IpmiCmdLib
- MemoryAllocationLib
- PcdLib
- PrintLib
- UefiBootServicesTableLib
- UefiRuntimeServicesTableLib
- UefiLib
-
-[FixedPcd]
- gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile
- gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
- gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
- gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
- gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
-
-[Pcd]
- gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
-
-[Guids]
- gEfiEndOfDxeEventGroupGuid
- gEfiEventReadyToBootGuid
- gEfiFileInfoGuid
- gEfiFileSystemInfoGuid
- gEfiFileSystemVolumeLabelInfoIdGuid
-
-[Protocols]
- gEfiDevicePathProtocolGuid
- gEfiDevicePathToTextProtocolGuid
- gEfiGraphicsOutputProtocolGuid
- gEfiLoadedImageProtocolGuid
- gEfiPciRootBridgeIoProtocolGuid
- gEfiSimpleFileSystemProtocolGuid
diff --git a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.h b/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.h
deleted file mode 100644
index 3347acc48f..0000000000
--- a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/** @file
- Head file for BDS Platform specific code
-
- Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>
- Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>
- Copyright (c) 2015, Linaro Limited. All rights reserved.<BR>
-
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- Based on the files under ArmVirtPkg/Library/PlatformIntelBdsLib/
-
-**/
-
-#ifndef _INTEL_BDS_PLATFORM_H_
-#define _INTEL_BDS_PLATFORM_H_
-
-#include <Library/BaseLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/DebugLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-
-#include "IntelBdsPlatformCommon.h"
-
-VOID
-PlatformBdsEnterFrontPage (
- IN UINT16 TimeoutDefault,
- IN BOOLEAN ConnectAllHappened
- );
-
-/**
- Download the kernel, the initial ramdisk, and the kernel command line from
- QEMU's fw_cfg. Construct a minimal SimpleFileSystem that contains the two
- image files, and load and start the kernel from it.
-
- The kernel will be instructed via its command line to load the initrd from
- the same Simple FileSystem.
-
- @retval EFI_NOT_FOUND Kernel image was not found.
- @retval EFI_OUT_OF_RESOURCES Memory allocation failed.
- @retval EFI_PROTOCOL_ERROR Unterminated kernel command line.
-
- @return Error codes from any of the underlying
- functions. On success, the function doesn't
- return.
-**/
-EFI_STATUS
-EFIAPI
-TryRunningQemuKernel (
- VOID
- );
-
-#endif // _INTEL_BDS_PLATFORM_H
diff --git a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.h b/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.h
deleted file mode 100644
index 02114eda29..0000000000
--- a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/** @file
-*
-* Copyright (c) 2015, Hisilicon Limited. All rights reserved.
-* Copyright (c) 2015, Linaro Limited. All rights reserved.
-*
-* SPDX-License-Identifier: BSD-2-Clause-Patent
-*
-**/
-
-#ifndef _HW_BDS_LIB_H_
-#define _HW_BDS_LIB_H_
-
-EFI_STATUS
-EFIAPI
-HwBdsLibRegisterAppBootOption (
- IN OUT LIST_ENTRY *BdsBootOptionList,
- IN GUID *FileGuid,
- IN CHAR16 *Description
- );
-
-#endif
diff --git a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.c b/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
deleted file mode 100644
index 803148ebb3..0000000000
--- a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
+++ /dev/null
@@ -1,957 +0,0 @@
-/** @file
- Implementation for PlatformBdsLib library class interfaces.
-
- Copyright (C) 2015, Red Hat, Inc.
- Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
- Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>
- Copyright (c) 2015, Hisilicon Limited. All rights reserved.
- Copyright (c) 2015, Linaro Limited. All rights reserved.
-
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- Based on the files under ArmVirtPkg/Library/PlatformIntelBdsLib/
-
-**/
-
-#include <IndustryStandard/Pci22.h>
-#include <Library/DevicePathLib.h>
-#include <Library/GenericBdsLib.h>
-#include <Library/IpmiCmdLib.h>
-#include <Library/PcdLib.h>
-#include <Library/PlatformBdsLib.h>
-#include <Library/PrintLib.h>
-#include <Library/UefiLib.h>
-#include <Protocol/DevicePath.h>
-#include <Protocol/DevicePathToText.h>
-#include <Protocol/GraphicsOutput.h>
-#include <Protocol/PciIo.h>
-#include <Protocol/PciRootBridgeIo.h>
-#include <Guid/GlobalVariable.h>
-
-#include "IntelBdsPlatform.h"
-
-GUID gOemBootVaraibleGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99,
- 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8} };
-
-//3CEF354A-3B7A-4519-AD70-72A134698311
-GUID gEblFileGuid = {0x3CEF354A, 0x3B7A, 0x4519, {0xAD, 0x70,
- 0x72, 0xA1, 0x34, 0x69, 0x83, 0x11} };
-
-// Need to keep the same with FlashStartOs.inf
-// 282cae50-940e-11e5-b7b8-774201c0f2d8
-GUID gFlashStartOsAppGuid = { 0x282cae50, 0x940e, 0x11e5, {0xb7, 0xb8,
- 0x77, 0x42, 0x01, 0xc0, 0xf2, 0xd8} };
-
-// Need to keep the same with EslStartOs.inf
-// 8880a72c-9411-11e5-b6f0-97310bc151d1
-GUID gEslStartOsAppGuid = { 0x8880a72c, 0x9411, 0x11e5, {0xb6, 0xf0,
- 0x97, 0x31, 0x0b, 0xc1, 0x51, 0xd1} };
-
-EFI_STATUS
-BdsDeleteAllInvalidEfiBootOption (
- VOID
- );
-
-#define DP_NODE_LEN(Type) { (UINT8)sizeof (Type), (UINT8)(sizeof (Type) >> 8) }
-
-
-#pragma pack (1)
-typedef struct {
- VENDOR_DEVICE_PATH SerialDxe;
- UART_DEVICE_PATH Uart;
- VENDOR_DEFINED_DEVICE_PATH Vt100;
- EFI_DEVICE_PATH_PROTOCOL End;
-} PLATFORM_SERIAL_CONSOLE;
-#pragma pack ()
-
-#define SERIAL_DXE_FILE_GUID { \
- 0xD3987D4B, 0x971A, 0x435F, \
- { 0x8C, 0xAF, 0x49, 0x67, 0xEB, 0x62, 0x72, 0x41 } \
- }
-
-STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = {
- //
- // VENDOR_DEVICE_PATH SerialDxe
- //
- {
- { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DP_NODE_LEN (VENDOR_DEVICE_PATH) },
- SERIAL_DXE_FILE_GUID
- },
-
- //
- // UART_DEVICE_PATH Uart
- //
- {
- { MESSAGING_DEVICE_PATH, MSG_UART_DP, DP_NODE_LEN (UART_DEVICE_PATH) },
- 0, // Reserved
- FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate
- FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits
- FixedPcdGet8 (PcdUartDefaultParity), // Parity
- FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits
- },
-
- //
- // VENDOR_DEFINED_DEVICE_PATH Vt100
- //
- {
- {
- MESSAGING_DEVICE_PATH, MSG_VENDOR_DP,
- DP_NODE_LEN (VENDOR_DEFINED_DEVICE_PATH)
- },
- EFI_VT_100_GUID
- },
-
- //
- // EFI_DEVICE_PATH_PROTOCOL End
- //
- {
- END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,
- DP_NODE_LEN (EFI_DEVICE_PATH_PROTOCOL)
- }
-};
-
-
-#pragma pack (1)
-typedef struct {
- USB_CLASS_DEVICE_PATH Keyboard;
- EFI_DEVICE_PATH_PROTOCOL End;
-} PLATFORM_USB_KEYBOARD;
-#pragma pack ()
-
-STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = {
- //
- // USB_CLASS_DEVICE_PATH Keyboard
- //
- {
- {
- MESSAGING_DEVICE_PATH, MSG_USB_CLASS_DP,
- DP_NODE_LEN (USB_CLASS_DEVICE_PATH)
- },
- 0xFFFF, // VendorId: any
- 0xFFFF, // ProductId: any
- 3, // DeviceClass: HID
- 1, // DeviceSubClass: boot
- 1 // DeviceProtocol: keyboard
- },
-
- //
- // EFI_DEVICE_PATH_PROTOCOL End
- //
- {
- END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,
- DP_NODE_LEN (EFI_DEVICE_PATH_PROTOCOL)
- }
-};
-
-STATIC
-UINT16
-GetBBSTypeFromFileSysPath (
- IN CHAR16 *UsbPathTxt,
- IN CHAR16 *FileSysPathTxt,
- IN EFI_DEVICE_PATH_PROTOCOL *FileSysPath
- )
-{
- EFI_DEVICE_PATH_PROTOCOL *Node;
-
- if (StrnCmp (UsbPathTxt, FileSysPathTxt, StrLen (UsbPathTxt)) == 0) {
- Node = FileSysPath;
- while (!IsDevicePathEnd (Node)) {
- if ((DevicePathType (Node) == MEDIA_DEVICE_PATH) &&
- (DevicePathSubType (Node) == MEDIA_CDROM_DP)) {
- return BBS_TYPE_CDROM;
- }
- Node = NextDevicePathNode (Node);
- }
- }
-
- return BBS_TYPE_UNKNOWN;
-}
-
-STATIC
-UINT16
-GetBBSTypeFromUsbPath (
- IN CONST EFI_DEVICE_PATH_PROTOCOL *UsbPath
- )
-{
- EFI_STATUS Status;
- EFI_HANDLE *FileSystemHandles;
- UINTN NumberFileSystemHandles;
- UINTN Index;
- EFI_DEVICE_PATH_PROTOCOL *FileSysPath;
- EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *DevPathToText;
- CHAR16 *UsbPathTxt;
- CHAR16 *FileSysPathTxt;
- UINT16 Result;
-
- Status = gBS->LocateProtocol (&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **) &DevPathToText);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Locate DevicePathToTextPro %r\n", Status));
- return BBS_TYPE_UNKNOWN;
- }
-
- Result = BBS_TYPE_UNKNOWN;
- UsbPathTxt = DevPathToText->ConvertDevicePathToText (UsbPath, TRUE, TRUE);
- if (UsbPathTxt == NULL) {
- return Result;
- }
-
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiSimpleFileSystemProtocolGuid,
- NULL,
- &NumberFileSystemHandles,
- &FileSystemHandles
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Locate SimpleFileSystemProtocol error(%r)\n", Status));
- FreePool (UsbPathTxt);
- return BBS_TYPE_UNKNOWN;
- }
-
- for (Index = 0; Index < NumberFileSystemHandles; Index++) {
- FileSysPath = DevicePathFromHandle (FileSystemHandles[Index]);
- FileSysPathTxt = DevPathToText->ConvertDevicePathToText (FileSysPath, TRUE, TRUE);
-
- if (FileSysPathTxt == NULL) {
- continue;
- }
-
- Result = GetBBSTypeFromFileSysPath (UsbPathTxt, FileSysPathTxt, FileSysPath);
- FreePool (FileSysPathTxt);
-
- if (Result != BBS_TYPE_UNKNOWN) {
- break;
- }
- }
-
- if (NumberFileSystemHandles != 0) {
- FreePool (FileSystemHandles);
- }
-
- FreePool (UsbPathTxt);
-
- return Result;
-}
-
-STATIC
-UINT16
-GetBBSTypeFromMessagingDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN EFI_DEVICE_PATH_PROTOCOL *Node
- )
-{
- VENDOR_DEVICE_PATH *Vendor;
- UINT16 Result;
-
- Result = BBS_TYPE_UNKNOWN;
-
- switch (DevicePathSubType (Node)) {
- case MSG_MAC_ADDR_DP:
- Result = BBS_TYPE_EMBEDDED_NETWORK;
- break;
-
- case MSG_USB_DP:
- Result = GetBBSTypeFromUsbPath (DevicePath);
- if (Result == BBS_TYPE_UNKNOWN) {
- Result = BBS_TYPE_USB;
- }
- break;
-
- case MSG_SATA_DP:
- Result = BBS_TYPE_HARDDRIVE;
- break;
-
- case MSG_VENDOR_DP:
- Vendor = (VENDOR_DEVICE_PATH *) (Node);
- if ((&Vendor->Guid) != NULL) {
- if (CompareGuid (&Vendor->Guid, &((EFI_GUID) DEVICE_PATH_MESSAGING_SAS))) {
- Result = BBS_TYPE_HARDDRIVE;
- }
- }
- break;
-
- default:
- Result = BBS_TYPE_UNKNOWN;
- break;
- }
-
- return Result;
-}
-
-STATIC
-UINT16
-GetBBSTypeByDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
- )
-{
- EFI_DEVICE_PATH_PROTOCOL *Node;
- UINT16 Result;
-
- Result = BBS_TYPE_UNKNOWN;
- if (DevicePath == NULL) {
- return Result;
- }
-
- Node = DevicePath;
- while (!IsDevicePathEnd (Node)) {
- switch (DevicePathType (Node)) {
- case MEDIA_DEVICE_PATH:
- if (DevicePathSubType (Node) == MEDIA_CDROM_DP) {
- Result = BBS_TYPE_CDROM;
- }
- break;
-
- case MESSAGING_DEVICE_PATH:
- Result = GetBBSTypeFromMessagingDevicePath (DevicePath, Node);
- break;
-
- default:
- Result = BBS_TYPE_UNKNOWN;
- break;
- }
-
- if (Result != BBS_TYPE_UNKNOWN) {
- break;
- }
-
- Node = NextDevicePathNode (Node);
- }
-
- return Result;
-}
-
-STATIC
-EFI_STATUS
-GetBmcBootOptionsSetting (
- OUT IPMI_GET_BOOT_OPTION *BmcBootOpt
- )
-{
- EFI_STATUS Status;
-
- Status = IpmiCmdGetSysBootOptions (BmcBootOpt);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Get iBMC BootOpts %r!\n", Status));
- return Status;
- }
-
- if (BmcBootOpt->BootFlagsValid != BOOT_OPTION_BOOT_FLAG_VALID) {
- return EFI_NOT_FOUND;
- }
-
- if (BmcBootOpt->Persistent) {
- BmcBootOpt->BootFlagsValid = BOOT_OPTION_BOOT_FLAG_VALID;
- } else {
- BmcBootOpt->BootFlagsValid = BOOT_OPTION_BOOT_FLAG_INVALID;
- }
-
- Status = IpmiCmdSetSysBootOptions (BmcBootOpt);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Set iBMC BootOpts %r!\n", Status));
- }
-
- return Status;
-}
-
-STATIC
-VOID
-RestoreBootOrder (
- VOID
- )
-{
- EFI_STATUS Status;
- UINT16 *BootOrder;
- UINTN BootOrderSize;
-
- GetVariable2 (L"BootOrderBackup", &gOemBootVaraibleGuid, (VOID **) &BootOrder, &BootOrderSize);
- if (BootOrder == NULL) {
- return ;
- }
-
- Print (L"Restore BootOrder(%d).\n", BootOrderSize / sizeof (UINT16));
-
- Status = gRT->SetVariable (
- L"BootOrder",
- &gEfiGlobalVariableGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- BootOrderSize,
- BootOrder
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "SetVariable BootOrder %r!\n", Status));
- }
-
- Status = gRT->SetVariable (
- L"BootOrderBackup",
- &gOemBootVaraibleGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- 0,
- NULL
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "SetVariable BootOrderBackup %r!\n", Status));
- }
-
- FreePool (BootOrder);
-
- return;
-}
-
-
-VOID
-RestoreBootOrderOnReadyToBoot (
- IN EFI_EVENT Event,
- IN VOID *Context
- )
-{
- // restore BootOrder variable in normal condition.
- RestoreBootOrder ();
-}
-
-STATIC
-VOID
-UpdateBootOrder (
- IN UINT16 *NewOrder,
- IN UINT16 *BootOrder,
- IN UINTN BootOrderSize
- )
-{
- EFI_STATUS Status;
- EFI_EVENT Event;
-
- Status = gRT->SetVariable (
- L"BootOrderBackup",
- &gOemBootVaraibleGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- BootOrderSize,
- BootOrder
- );
- if (EFI_ERROR (Status)) {
- return;
- }
-
- Status = gRT->SetVariable (
- L"BootOrder",
- &gEfiGlobalVariableGuid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
- BootOrderSize,
- NewOrder
- );
- if (EFI_ERROR (Status)) {
- return;
- }
-
- // Register notify function to restore BootOrder variable on ReadyToBoot Event.
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- TPL_CALLBACK,
- RestoreBootOrderOnReadyToBoot,
- NULL,
- &gEfiEventReadyToBootGuid,
- &Event
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Create ready to boot event %r!\n", Status));
- }
-
- return;
-}
-
-STATIC
-VOID
-SetBootOrder (
- IN UINT16 BootType
- )
-{
- UINT16 *NewOrder;
- UINT16 *RemainBoots;
- UINT16 *BootOrder;
- UINTN BootOrderSize;
- CHAR16 OptionName[sizeof ("Boot####")];
- UINTN Index;
- LIST_ENTRY BootOptionList;
- BDS_COMMON_OPTION *Option;
- UINTN SelectCnt;
- UINTN RemainCnt;
-
- InitializeListHead (&BootOptionList);
-
- GetEfiGlobalVariable2 (L"BootOrder", (VOID **) &BootOrder, &BootOrderSize);
- if (BootOrder == NULL) {
- return ;
- }
-
- NewOrder = AllocatePool (BootOrderSize);
- RemainBoots = AllocatePool (BootOrderSize);
- if ((NewOrder == NULL) || (RemainBoots == NULL)) {
- DEBUG ((DEBUG_ERROR, "Out of resources."));
- goto Exit;
- }
-
- SelectCnt = 0;
- RemainCnt = 0;
-
- for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {
- UnicodeSPrint (OptionName, sizeof (OptionName), L"Boot%04x", BootOrder[Index]);
- Option = BdsLibVariableToOption (&BootOptionList, OptionName);
- if (Option == NULL) {
- DEBUG ((DEBUG_ERROR, "Boot%04x is invalid option!\n", BootOrder[Index]));
- continue;
- }
-
- if (GetBBSTypeByDevicePath (Option->DevicePath) == BootType) {
- NewOrder[SelectCnt++] = BootOrder[Index];
- } else {
- RemainBoots[RemainCnt++] = BootOrder[Index];
- }
- }
-
- if (SelectCnt != 0) {
- // append RemainBoots to NewOrder
- for (Index = 0; Index < RemainCnt; Index++) {
- NewOrder[SelectCnt + Index] = RemainBoots[Index];
- }
-
- if (CompareMem (NewOrder, BootOrder, BootOrderSize) != 0) {
- UpdateBootOrder (NewOrder, BootOrder, BootOrderSize);
- }
- }
-
-Exit:
- FreePool (BootOrder);
- if (NewOrder != NULL) {
- FreePool (NewOrder);
- }
- if (RemainBoots != NULL) {
- FreePool (RemainBoots);
- }
-
- return ;
-}
-
-STATIC
-VOID
-HandleBmcBootType (
- VOID
- )
-{
- EFI_STATUS Status;
- IPMI_GET_BOOT_OPTION BmcBootOpt;
- UINT16 BootType;
-
- Status = GetBmcBootOptionsSetting (&BmcBootOpt);
- if (EFI_ERROR (Status)) {
- return;
- }
-
- Print (L"Boot Type from BMC is %x\n", BmcBootOpt.BootDeviceSelector);
-
- switch (BmcBootOpt.BootDeviceSelector) {
- case ForcePxe:
- BootType = BBS_TYPE_EMBEDDED_NETWORK;
- break;
-
- case ForcePrimaryRemovableMedia:
- BootType = BBS_TYPE_USB;
- break;
-
- case ForceDefaultHardDisk:
- BootType = BBS_TYPE_HARDDRIVE;
- break;
-
- case ForceDefaultCD:
- BootType = BBS_TYPE_CDROM;
- break;
-
- default:
- return;
- }
-
- SetBootOrder (BootType);
-}
-
-//
-// BDS Platform Functions
-//
-/**
- Platform Bds init. Include the platform firmware vendor, revision
- and so crc check.
-
-**/
-VOID
-EFIAPI
-PlatformBdsInit (
- VOID
- )
-{
- //Signal EndofDxe Event
- EfiEventGroupSignal(&gEfiEndOfDxeEventGroupGuid);
-
- // restore BootOrder variable if previous BMC boot override attempt
- // left it in a modified state
- RestoreBootOrder ();
-}
-
-
-/**
- Check if the handle satisfies a particular condition.
-
- @param[in] Handle The handle to check.
- @param[in] ReportText A caller-allocated string passed in for reporting
- purposes. It must never be NULL.
-
- @retval TRUE The condition is satisfied.
- @retval FALSE Otherwise. This includes the case when the condition could not
- be fully evaluated due to an error.
-**/
-typedef
-BOOLEAN
-(EFIAPI *FILTER_FUNCTION) (
- IN EFI_HANDLE Handle,
- IN CONST CHAR16 *ReportText
- );
-
-
-/**
- Process a handle.
-
- @param[in] Handle The handle to process.
- @param[in] ReportText A caller-allocated string passed in for reporting
- purposes. It must never be NULL.
-**/
-typedef
-VOID
-(EFIAPI *CALLBACK_FUNCTION) (
- IN EFI_HANDLE Handle,
- IN CONST CHAR16 *ReportText
- );
-
-/**
- Locate all handles that carry the specified protocol, filter them with a
- callback function, and pass each handle that passes the filter to another
- callback.
-
- @param[in] ProtocolGuid The protocol to look for.
-
- @param[in] Filter The filter function to pass each handle to. If this
- parameter is NULL, then all handles are processed.
-
- @param[in] Process The callback function to pass each handle to that
- clears the filter.
-**/
-STATIC
-VOID
-FilterAndProcess (
- IN EFI_GUID *ProtocolGuid,
- IN FILTER_FUNCTION Filter OPTIONAL,
- IN CALLBACK_FUNCTION Process
- )
-{
- EFI_STATUS Status;
- EFI_HANDLE *Handles;
- UINTN NoHandles;
- UINTN Idx;
-
- Status = gBS->LocateHandleBuffer (ByProtocol, ProtocolGuid,
- NULL /* SearchKey */, &NoHandles, &Handles);
- if (EFI_ERROR (Status)) {
- //
- // This is not an error, just an informative condition.
- //
- DEBUG ((EFI_D_VERBOSE, "%a: %g: %r\n", __FUNCTION__, ProtocolGuid,
- Status));
- return;
- }
-
- ASSERT (NoHandles > 0);
- for (Idx = 0; Idx < NoHandles; ++Idx) {
- CHAR16 *DevicePathText;
- STATIC CHAR16 Fallback[] = L"<device path unavailable>";
-
- //
- // The ConvertDevicePathToText() function handles NULL input transparently.
- //
- DevicePathText = ConvertDevicePathToText (
- DevicePathFromHandle (Handles[Idx]),
- FALSE, // DisplayOnly
- FALSE // AllowShortcuts
- );
- if (DevicePathText == NULL) {
- DevicePathText = Fallback;
- }
-
- if (Filter == NULL || Filter (Handles[Idx], DevicePathText)) {
- Process (Handles[Idx], DevicePathText);
- }
-
- if (DevicePathText != Fallback) {
- FreePool (DevicePathText);
- }
- }
- gBS->FreePool (Handles);
-}
-
-
-/**
- This FILTER_FUNCTION checks if a handle corresponds to a PCI display device.
-**/
-STATIC
-BOOLEAN
-EFIAPI
-IsPciDisplay (
- IN EFI_HANDLE Handle,
- IN CONST CHAR16 *ReportText
- )
-{
- EFI_STATUS Status;
- EFI_PCI_IO_PROTOCOL *PciIo;
- PCI_TYPE00 Pci;
-
- Status = gBS->HandleProtocol (Handle, &gEfiPciIoProtocolGuid,
- (VOID**)&PciIo);
- if (EFI_ERROR (Status)) {
- //
- // This is not an error worth reporting.
- //
- return FALSE;
- }
-
- Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, 0 /* Offset */,
- sizeof Pci / sizeof (UINT32), &Pci);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "%a: %s: %r\n", __FUNCTION__, ReportText, Status));
- return FALSE;
- }
-
- return IS_PCI_DISPLAY (&Pci);
-}
-
-
-/**
- This CALLBACK_FUNCTION attempts to connect a handle non-recursively, asking
- the matching driver to produce all first-level child handles.
-**/
-STATIC
-VOID
-EFIAPI
-Connect (
- IN EFI_HANDLE Handle,
- IN CONST CHAR16 *ReportText
- )
-{
- EFI_STATUS Status;
-
- Status = gBS->ConnectController (
- Handle, // ControllerHandle
- NULL, // DriverImageHandle
- NULL, // RemainingDevicePath -- produce all children
- FALSE // Recursive
- );
- DEBUG ((EFI_ERROR (Status) ? EFI_D_ERROR : EFI_D_VERBOSE, "%a: %s: %r\n",
- __FUNCTION__, ReportText, Status));
-}
-
-
-/**
- This CALLBACK_FUNCTION retrieves the EFI_DEVICE_PATH_PROTOCOL from the
- handle, and adds it to ConOut and ErrOut.
-**/
-STATIC
-VOID
-EFIAPI
-AddOutput (
- IN EFI_HANDLE Handle,
- IN CONST CHAR16 *ReportText
- )
-{
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
- DevicePath = DevicePathFromHandle (Handle);
- if (DevicePath == NULL) {
- DEBUG ((EFI_D_ERROR, "%a: %s: handle %p: device path not found\n",
- __FUNCTION__, ReportText, Handle));
- return;
- }
-
- Status = BdsLibUpdateConsoleVariable (L"ConOut", DevicePath, NULL);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "%a: %s: adding to ConOut: %r\n", __FUNCTION__,
- ReportText, Status));
- return;
- }
-
- Status = BdsLibUpdateConsoleVariable (L"ErrOut", DevicePath, NULL);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "%a: %s: adding to ErrOut: %r\n", __FUNCTION__,
- ReportText, Status));
- return;
- }
-
- DEBUG ((EFI_D_VERBOSE, "%a: %s: added to ConOut and ErrOut\n", __FUNCTION__,
- ReportText));
-}
-
-
-/**
- The function will execute with as the platform policy, current policy
- is driven by boot mode. IBV/OEM can customize this code for their specific
- policy action.
-
- @param DriverOptionList The header of the driver option link list
- @param BootOptionList The header of the boot option link list
- @param ProcessCapsules A pointer to ProcessCapsules()
- @param BaseMemoryTest A pointer to BaseMemoryTest()
-
-**/
-VOID
-EFIAPI
-PlatformBdsPolicyBehavior (
- IN LIST_ENTRY *DriverOptionList,
- IN LIST_ENTRY *BootOptionList,
- IN PROCESS_CAPSULES ProcessCapsules,
- IN BASEM_MEMORY_TEST BaseMemoryTest
- )
-{
- EFI_STATUS Status;
- //
- // Locate the PCI root bridges and make the PCI bus driver connect each,
- // non-recursively. This will produce a number of child handles with PciIo on
- // them.
- //
- FilterAndProcess (&gEfiPciRootBridgeIoProtocolGuid, NULL, Connect);
-
- //
- // Find all display class PCI devices (using the handles from the previous
- // step), and connect them non-recursively. This should produce a number of
- // child handles with GOPs on them.
- //
- FilterAndProcess (&gEfiPciIoProtocolGuid, IsPciDisplay, Connect);
-
- //
- // Now add the device path of all handles with GOP on them to ConOut and
- // ErrOut.
- //
- FilterAndProcess (&gEfiGraphicsOutputProtocolGuid, NULL, AddOutput);
-
- //
- // Add the hardcoded short-form USB keyboard device path to ConIn.
- //
- BdsLibUpdateConsoleVariable (L"ConIn",
- (EFI_DEVICE_PATH_PROTOCOL *)&mUsbKeyboard, NULL);
-
- //
- // Add the hardcoded serial console device path to ConIn, ConOut, ErrOut.
- //
- BdsLibUpdateConsoleVariable (L"ConIn",
- (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL);
- BdsLibUpdateConsoleVariable (L"ConOut",
- (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL);
- BdsLibUpdateConsoleVariable (L"ErrOut",
- (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL);
-
- //
- // Connect the consoles based on the above variables.
- //
- BdsLibConnectAllDefaultConsoles ();
-
- //
- // Show the splash screen.
- //
- EnableQuietBoot (PcdGetPtr (PcdLogoFile));
-
- //
- // Connect the rest of the devices.
- //
- BdsLibConnectAll ();
-
- //
- // Add memory test to convert memory above 4GB to be tested
- //
- Status = BaseMemoryTest (QUICK);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "[%a:%d] - Base memory test failed: %r\n", __FUNCTION__, __LINE__, Status));
- }
-
- //
- // Process QEMU's -kernel command line option. Note that the kernel booted
- // this way should receive ACPI tables, which is why we connect all devices
- // first (see above) -- PCI enumeration blocks ACPI table installation, if
- // there is a PCI host.
- //
- //TryRunningQemuKernel ();
-
- BdsLibEnumerateAllBootOption (BootOptionList);
-
- // Add Flash Start OS and ESL Start OS boot option
- (VOID) HwBdsLibRegisterAppBootOption (BootOptionList, &gFlashStartOsAppGuid, L"Flash Start OS");
- (VOID) HwBdsLibRegisterAppBootOption (BootOptionList, &gEslStartOsAppGuid, L"ESL Start OS");
-
- // Add EBL as boot option
- (VOID) HwBdsLibRegisterAppBootOption (BootOptionList, &gEblFileGuid, L"Embedded Boot Loader (EBL)");
-
- // Remove EFI Misc Device Boot Options
- BdsDeleteAllInvalidEfiBootOption ();
-
- //SetBootOrderFromQemu (BootOptionList);
- //
- // The BootOrder variable may have changed, reload the in-memory list with
- // it.
- //
- BdsLibBuildOptionFromVar (BootOptionList, L"BootOrder");
-
- //PlatformBdsEnterFrontPage (GetFrontPageTimeoutFromQemu(), TRUE);
- Print (L"Press Enter to boot OS immediately.\n");
- Print (L"Press any other key in %d seconds to stop automatical booting...\n", PcdGet16(PcdPlatformBootTimeOut));
- PlatformBdsEnterFrontPage (PcdGet16(PcdPlatformBootTimeOut), TRUE);
- HandleBmcBootType ();
-}
-
-/**
- Hook point after a boot attempt succeeds. We don't expect a boot option to
- return, so the UEFI 2.0 specification defines that you will default to an
- interactive mode and stop processing the BootOrder list in this case. This
- is also a platform implementation and can be customized by IBV/OEM.
-
- @param Option Pointer to Boot Option that succeeded to boot.
-
-**/
-VOID
-EFIAPI
-PlatformBdsBootSuccess (
- IN BDS_COMMON_OPTION *Option
- )
-{
-}
-
-/**
- Hook point after a boot attempt fails.
-
- @param Option Pointer to Boot Option that failed to boot.
- @param Status Status returned from failed boot.
- @param ExitData Exit data returned from failed boot.
- @param ExitDataSize Exit data size returned from failed boot.
-
-**/
-VOID
-EFIAPI
-PlatformBdsBootFail (
- IN BDS_COMMON_OPTION *Option,
- IN EFI_STATUS Status,
- IN CHAR16 *ExitData,
- IN UINTN ExitDataSize
- )
-{
-}
-
-/**
- This function locks platform flash that is not allowed to be updated during normal boot path.
- The flash layout is platform specific.
-**/
-VOID
-EFIAPI
-PlatformBdsLockNonUpdatableFlash (
- VOID
- )
-{
- return;
-}
diff --git a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.c b/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.c
deleted file mode 100644
index 35996322ed..0000000000
--- a/Silicon/Hisilicon/Library/PlatformIntelBdsLib/IntelBdsPlatformCommon.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/** @file
-*
-* Copyright (c) 2015, Hisilicon Limited. All rights reserved.
-* Copyright (c) 2015, Linaro Limited. All rights reserved.
-*
-* SPDX-License-Identifier: BSD-2-Clause-Patent
-*
-**/
-
-#include "IntelBdsPlatform.h"
-#include <Library/UefiLib.h>
-#include <Library/GenericBdsLib.h>
-#include <Protocol/FirmwareVolume2.h>
-
-VOID
-EFIAPI
-BdsLibBuildOptionFromApp (
- IN EFI_HANDLE Handle,
- IN OUT LIST_ENTRY *BdsBootOptionList,
- IN GUID *FileGuid,
- IN CHAR16 *Description
- )
-{
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- MEDIA_FW_VOL_FILEPATH_DEVICE_PATH ShellNode;
-
- DevicePath = DevicePathFromHandle (Handle);
-
- //
- // Build the shell device path
- //
- EfiInitializeFwVolDevicepathNode (&ShellNode, FileGuid);
-
- DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *) &ShellNode);
-
- //
- // Create and register the shell boot option
- //
- BdsLibRegisterNewOption (BdsBootOptionList, DevicePath, Description, L"BootOrder");
-
-}
-EFI_STATUS
-EFIAPI
-HwBdsLibRegisterAppBootOption (
- IN OUT LIST_ENTRY *BdsBootOptionList,
- IN GUID *FileGuid,
- IN CHAR16 *Description
- )
-{
- EFI_STATUS Status;
- UINTN Index;
- UINTN FvHandleCount;
- EFI_HANDLE *FvHandleBuffer;
- EFI_FV_FILETYPE Type;
- UINTN Size;
- EFI_FV_FILE_ATTRIBUTES Attributes;
- UINT32 AuthenticationStatus;
- EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
- UINTN Count = 0;
-
- //
- // Check if we have on flash shell
- //
- gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiFirmwareVolume2ProtocolGuid,
- NULL,
- &FvHandleCount,
- &FvHandleBuffer
- );
- for (Index = 0; Index < FvHandleCount; Index++) {
- gBS->HandleProtocol (
- FvHandleBuffer[Index],
- &gEfiFirmwareVolume2ProtocolGuid,
- (VOID **) &Fv
- );
-
- Status = Fv->ReadFile (
- Fv,
- FileGuid,
- NULL,
- &Size,
- &Type,
- &Attributes,
- &AuthenticationStatus
- );
- if (EFI_ERROR (Status)) {
- //
- // Skip if no shell file in the FV
- //
- continue;
- }
- //
- // Build the shell boot option
- //
- BdsLibBuildOptionFromApp (FvHandleBuffer[Index], BdsBootOptionList,
- FileGuid, Description);
-
- Count++;
- }
-
- if (FvHandleCount != 0) {
- FreePool (FvHandleBuffer);
- }
-
- if (Count == 0) {
- return EFI_NOT_FOUND;
- }
-
- return EFI_SUCCESS;
-}
-
--
2.12.0.windows.1
next prev parent reply other threads:[~2019-05-20 8:41 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-20 8:40 [edk2-platforms][PATCH v2 00/18] Drop IntelFramework[Module]Pkg dependency Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 01/18] Platform/AMD: Use Lzma decompress lib in MdeModulePkg Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 02/18] Platform/BeagleBoard: Use ReportStatusCodeLib null instance Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 03/18] Platform/BeagleBoard: Drop the consume of PcdShellFile Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 04/18] Hisilicon/D0x: Use Lzma decompress lib in MdeModulePkg Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 05/18] Hisilicon/D0x: Drop the consume of GenericBdsLib & PlatformBdsLib Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 06/18] Hisilicon/D0x: Use StatusCode Router & Handler in MdeModulePkg Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 07/18] Hisilicon/D06: Drop the consume of PcdShellFile Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 08/18] Silicon/Hisilicon: Use Lzma decompress lib in MdeModulePkg Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 09/18] Silicon/Hisilicon: Use ReportStatusCodeLib (DXE) " Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 10/18] Silicon/Hisilicon: Use DebugLib (DXE_RUNTIME_DRIVER) " Wu, Hao A
2019-05-20 8:40 ` [edk2-platforms][PATCH v2 11/18] Silicon/Hisilicon/Smbios: Drop IntelFramework[Module]Pkg dependency Wu, Hao A
2019-05-20 8:40 ` Wu, Hao A [this message]
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 13/18] Platform/LeMaker: Use Lzma decompress lib in MdeModulePkg Wu, Hao A
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 14/18] Platform/LeMaker: Use ReportStatusCodeLib null instance Wu, Hao A
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 15/18] Platform/SoftIron: Use Lzma decompress lib in MdeModulePkg Wu, Hao A
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 16/18] Platform/SoftIron: Use ReportStatusCodeLib null instance Wu, Hao A
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 17/18] Platform/RPi3: " Wu, Hao A
2019-05-20 8:41 ` [edk2-platforms][PATCH v2 18/18] Platform/RaspberryPi: Drop the consume of PcdShellFile Wu, Hao A
2019-05-27 2:43 ` [edk2-devel] [edk2-platforms][PATCH v2 00/18] Drop IntelFramework[Module]Pkg dependency Wu, Hao A
2019-06-10 5:13 ` Wu, Hao A
2019-06-10 15:12 ` Leif Lindholm
2019-06-11 6:19 ` Wu, Hao A
2019-06-11 9:38 ` Leif Lindholm
2019-06-12 0:21 ` Wu, Hao A
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190520084105.9028-13-hao.a.wu@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox