From: "Ni, Ray" <ray.ni@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Ni, Ray" <ray.ni@intel.com>,
"Liu, Zhiguang" <zhiguang.liu@intel.com>
Cc: "Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/6] SimicsOpenBoardPkg: Remove un-used PlatformBootManagerLib
Date: Thu, 25 May 2023 02:10:28 +0000 [thread overview]
Message-ID: <MN6PR11MB8244F2C78B783D34CABA14A78C469@MN6PR11MB8244.namprd11.prod.outlook.com> (raw)
In-Reply-To: <17621420EF808DC9.12947@groups.io>
Sending to correct address of Zhiguang.
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ni, Ray
> Sent: Wednesday, May 24, 2023 8:29 PM
> To: devel@edk2.groups.io
> Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Zhiguang Liu
> <zhiguang@liu@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: [edk2-devel] [PATCH 1/6] SimicsOpenBoardPkg: Remove un-used
> PlatformBootManagerLib
>
> Signed-off-by: Ray Ni <ray.ni@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Zhiguang Liu <zhiguang@liu@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> ---
> .../PlatformBootManagerLib/BdsPlatform.c | 1532 -----------------
> .../PlatformBootManagerLib/BdsPlatform.h | 172 --
> .../PlatformBootManagerLib.inf | 72 -
> .../PlatformBootManagerLib/PlatformData.c | 35 -
> 4 files changed, 1811 deletions(-)
> delete mode 100644
> Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/BdsPl
> atform.c
> delete mode 100644
> Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/BdsPl
> atform.h
> delete mode 100644
> Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Platfo
> rmBootManagerLib.inf
> delete mode 100644
> Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Platfo
> rmData.c
>
> diff --git
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.c
> b/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.c
> deleted file mode 100644
> index 2f9c6aaa85..0000000000
> ---
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.c
> +++ /dev/null
> @@ -1,1532 +0,0 @@
> -/** @file
>
> - Platform BDS customizations.
>
> -
>
> - Copyright (c) 2004 - 2019 Intel Corporation. All rights reserved. <BR>
>
> -
>
> - SPDX-License-Identifier: BSD-2-Clause-Patent
>
> -**/
>
> -
>
> -#include "BdsPlatform.h"
>
> -#include <Guid/RootBridgesConnectedEventGroup.h>
>
> -#include <Protocol/FirmwareVolume2.h>
>
> -
>
> -#define LEGACY_8259_MASK_REGISTER_MASTER 0x21
>
> -#define LEGACY_8259_MASK_REGISTER_SLAVE 0xA1
>
> -#define LEGACY_8259_EDGE_LEVEL_TRIGGERED_REGISTER_MASTER 0x4D0
>
> -#define LEGACY_8259_EDGE_LEVEL_TRIGGERED_REGISTER_SLAVE 0x4D1
>
> -
>
> -//
>
> -// Global data
>
> -//
>
> -
>
> -VOID *mEfiDevPathNotifyReg;
>
> -EFI_EVENT mEfiDevPathEvent;
>
> -VOID *mEmuVariableEventReg;
>
> -EFI_EVENT mEmuVariableEvent;
>
> -BOOLEAN mDetectVgaOnly;
>
> -UINT16 mHostBridgeDevId;
>
> -
>
> -//
>
> -// Table of host IRQs matching PCI IRQs A-D
>
> -// (for configuring PCI Interrupt Line register)
>
> -//
>
> -CONST UINT8 PciHostIrqs[] = {
>
> - 0x0a, 0x0a, 0x0b, 0x0b
>
> -};
>
> -
>
> -//
>
> -// Type definitions
>
> -//
>
> -
>
> -typedef
>
> -EFI_STATUS
>
> -(EFIAPI *PROTOCOL_INSTANCE_CALLBACK)(
>
> - IN EFI_HANDLE Handle,
>
> - IN VOID *Instance,
>
> - IN VOID *Context
>
> - );
>
> -
>
> -/**
>
> - @param[in] Handle - Handle of PCI device instance
>
> - @param[in] PciIo - PCI IO protocol instance
>
> - @param[in] Pci - PCI Header register block
>
> -**/
>
> -typedef
>
> -EFI_STATUS
>
> -(EFIAPI *VISIT_PCI_INSTANCE_CALLBACK)(
>
> - IN EFI_HANDLE Handle,
>
> - IN EFI_PCI_IO_PROTOCOL *PciIo,
>
> - IN PCI_TYPE00 *Pci
>
> - );
>
> -
>
> -
>
> -//
>
> -// Function prototypes
>
> -//
>
> -
>
> -EFI_STATUS
>
> -VisitAllInstancesOfProtocol (
>
> - IN EFI_GUID *Id,
>
> - IN PROTOCOL_INSTANCE_CALLBACK CallBackFunction,
>
> - IN VOID *Context
>
> - );
>
> -
>
> -EFI_STATUS
>
> -VisitAllPciInstancesOfProtocol (
>
> - IN VISIT_PCI_INSTANCE_CALLBACK CallBackFunction
>
> - );
>
> -
>
> -VOID
>
> -InstallDevicePathCallback (
>
> - VOID
>
> - );
>
> -
>
> -VOID
>
> -PlatformRegisterFvBootOption (
>
> - EFI_GUID *FileGuid,
>
> - CHAR16 *Description,
>
> - UINT32 Attributes
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - INTN OptionIndex;
>
> - EFI_BOOT_MANAGER_LOAD_OPTION NewOption;
>
> - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
>
> - UINTN BootOptionCount;
>
> - MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode;
>
> - EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> -
>
> - Status = gBS->HandleProtocol (
>
> - gImageHandle,
>
> - &gEfiLoadedImageProtocolGuid,
>
> - (VOID **) &LoadedImage
>
> - );
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - EfiInitializeFwVolDevicepathNode (&FileNode, FileGuid);
>
> - DevicePath = DevicePathFromHandle (LoadedImage->DeviceHandle);
>
> - ASSERT (DevicePath != NULL);
>
> - DevicePath = AppendDevicePathNode (
>
> - DevicePath,
>
> - (EFI_DEVICE_PATH_PROTOCOL *) &FileNode
>
> - );
>
> - ASSERT (DevicePath != NULL);
>
> -
>
> - Status = EfiBootManagerInitializeLoadOption (
>
> - &NewOption,
>
> - LoadOptionNumberUnassigned,
>
> - LoadOptionTypeBoot,
>
> - Attributes,
>
> - Description,
>
> - DevicePath,
>
> - NULL,
>
> - 0
>
> - );
>
> - ASSERT_EFI_ERROR (Status);
>
> - FreePool (DevicePath);
>
> -
>
> - BootOptions = EfiBootManagerGetLoadOptions (
>
> - &BootOptionCount, LoadOptionTypeBoot
>
> - );
>
> -
>
> - OptionIndex = EfiBootManagerFindLoadOption (
>
> - &NewOption, BootOptions, BootOptionCount
>
> - );
>
> -
>
> - if (OptionIndex == -1) {
>
> - Status = EfiBootManagerAddLoadOptionVariable (&NewOption,
> MAX_UINTN);
>
> - ASSERT_EFI_ERROR (Status);
>
> - }
>
> - EfiBootManagerFreeLoadOption (&NewOption);
>
> - EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
>
> -}
>
> -
>
> -/**
>
> - Remove all MemoryMapped(...)/FvFile(...) and Fv(...)/FvFile(...) boot
> options
>
> - whose device paths do not resolve exactly to an FvFile in the system.
>
> -
>
> - This removes any boot options that point to binaries built into the firmware
>
> - and have become stale due to any of the following:
>
> - - DXEFV's base address or size changed (historical),
>
> - - DXEFV's FvNameGuid changed,
>
> - - the FILE_GUID of the pointed-to binary changed,
>
> - - the referenced binary is no longer built into the firmware.
>
> -
>
> - EfiBootManagerFindLoadOption() used in PlatformRegisterFvBootOption()
> only
>
> - avoids exact duplicates.
>
> -**/
>
> -VOID
>
> -RemoveStaleFvFileOptions (
>
> - VOID
>
> - )
>
> -{
>
> - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
>
> - UINTN BootOptionCount;
>
> - UINTN Index;
>
> -
>
> - BootOptions = EfiBootManagerGetLoadOptions (&BootOptionCount,
>
> - LoadOptionTypeBoot);
>
> -
>
> - for (Index = 0; Index < BootOptionCount; ++Index) {
>
> - EFI_DEVICE_PATH_PROTOCOL *Node1, *Node2, *SearchNode;
>
> - EFI_STATUS Status;
>
> - EFI_HANDLE FvHandle;
>
> -
>
> - //
>
> - // If the device path starts with neither MemoryMapped(...) nor Fv(...),
>
> - // then keep the boot option.
>
> - //
>
> - Node1 = BootOptions[Index].FilePath;
>
> - if (!(DevicePathType (Node1) == HARDWARE_DEVICE_PATH &&
>
> - DevicePathSubType (Node1) == HW_MEMMAP_DP) &&
>
> - !(DevicePathType (Node1) == MEDIA_DEVICE_PATH &&
>
> - DevicePathSubType (Node1) == MEDIA_PIWG_FW_VOL_DP)) {
>
> - continue;
>
> - }
>
> -
>
> - //
>
> - // If the second device path node is not FvFile(...), then keep the boot
>
> - // option.
>
> - //
>
> - Node2 = NextDevicePathNode (Node1);
>
> - if (DevicePathType (Node2) != MEDIA_DEVICE_PATH ||
>
> - DevicePathSubType (Node2) != MEDIA_PIWG_FW_FILE_DP) {
>
> - continue;
>
> - }
>
> -
>
> - //
>
> - // Locate the Firmware Volume2 protocol instance that is denoted by the
>
> - // boot option. If this lookup fails (i.e., the boot option references a
>
> - // firmware volume that doesn't exist), then we'll proceed to delete the
>
> - // boot option.
>
> - //
>
> - SearchNode = Node1;
>
> - Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid,
>
> - &SearchNode, &FvHandle);
>
> -
>
> - if (!EFI_ERROR (Status)) {
>
> - //
>
> - // The firmware volume was found; now let's see if it contains the FvFile
>
> - // identified by GUID.
>
> - //
>
> - EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
>
> - MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFileNode;
>
> - UINTN BufferSize;
>
> - EFI_FV_FILETYPE FoundType;
>
> - EFI_FV_FILE_ATTRIBUTES FileAttributes;
>
> - UINT32 AuthenticationStatus;
>
> -
>
> - Status = gBS->HandleProtocol (FvHandle,
> &gEfiFirmwareVolume2ProtocolGuid,
>
> - (VOID **)&FvProtocol);
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - FvFileNode = (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)Node2;
>
> - //
>
> - // Buffer==NULL means we request metadata only: BufferSize, FoundType,
>
> - // FileAttributes.
>
> - //
>
> - Status = FvProtocol->ReadFile (
>
> - FvProtocol,
>
> - &FvFileNode->FvFileName, // NameGuid
>
> - NULL, // Buffer
>
> - &BufferSize,
>
> - &FoundType,
>
> - &FileAttributes,
>
> - &AuthenticationStatus
>
> - );
>
> - if (!EFI_ERROR (Status)) {
>
> - //
>
> - // The FvFile was found. Keep the boot option.
>
> - //
>
> - continue;
>
> - }
>
> - }
>
> -
>
> - //
>
> - // Delete the boot option.
>
> - //
>
> - Status = EfiBootManagerDeleteLoadOptionVariable (
>
> - BootOptions[Index].OptionNumber, LoadOptionTypeBoot);
>
> - DEBUG_CODE (
>
> - CHAR16 *DevicePathString;
>
> -
>
> - DevicePathString = ConvertDevicePathToText(BootOptions[Index].FilePath,
>
> - FALSE, FALSE);
>
> - DEBUG ((
>
> - EFI_ERROR (Status) ? EFI_D_WARN : EFI_D_VERBOSE,
>
> - "%a: removing stale Boot#%04x %s: %r\n",
>
> - __FUNCTION__,
>
> - (UINT32)BootOptions[Index].OptionNumber,
>
> - DevicePathString == NULL ? L"<unavailable>" : DevicePathString,
>
> - Status
>
> - ));
>
> - if (DevicePathString != NULL) {
>
> - FreePool (DevicePathString);
>
> - }
>
> - );
>
> - }
>
> -
>
> - EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
>
> -}
>
> -
>
> -VOID
>
> -PlatformRegisterOptionsAndKeys (
>
> - VOID
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_INPUT_KEY Enter;
>
> - EFI_INPUT_KEY F2;
>
> - EFI_INPUT_KEY Esc;
>
> - EFI_BOOT_MANAGER_LOAD_OPTION BootOption;
>
> -
>
> - //
>
> - // Register ENTER as CONTINUE key
>
> - //
>
> - Enter.ScanCode = SCAN_NULL;
>
> - Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
>
> - Status = EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - //
>
> - // Map F2 to Boot Manager Menu
>
> - //
>
> - F2.ScanCode = SCAN_F2;
>
> - F2.UnicodeChar = CHAR_NULL;
>
> - Esc.ScanCode = SCAN_ESC;
>
> - Esc.UnicodeChar = CHAR_NULL;
>
> - Status = EfiBootManagerGetBootManagerMenu (&BootOption);
>
> - ASSERT_EFI_ERROR (Status);
>
> - Status = EfiBootManagerAddKeyOptionVariable (
>
> - NULL, (UINT16) BootOption.OptionNumber, 0, &F2, NULL
>
> - );
>
> - ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED);
>
> - Status = EfiBootManagerAddKeyOptionVariable (
>
> - NULL, (UINT16) BootOption.OptionNumber, 0, &Esc, NULL
>
> - );
>
> - ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED);
>
> -}
>
> -
>
> -EFI_STATUS
>
> -EFIAPI
>
> -ConnectRootBridge (
>
> - IN EFI_HANDLE RootBridgeHandle,
>
> - IN VOID *Instance,
>
> - IN VOID *Context
>
> - );
>
> -
>
> -//
>
> -// BDS Platform Functions
>
> -//
>
> -/**
>
> - Do the platform init, can be customized by OEM/IBV
>
> -
>
> - Possible things that can be done in PlatformBootManagerBeforeConsole:
>
> -
>
> - > Update console variable: 1. include hot-plug devices;
>
> - > 2. Clear ConIn and add SOL for AMT
>
> - > Register new Driver#### or Boot####
>
> - > Register new Key####: e.g.: F12
>
> - > Signal ReadyToLock event
>
> - > Authentication action: 1. connect Auth devices;
>
> - > 2. Identify auto logon user.
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -PlatformBootManagerBeforeConsole (
>
> - VOID
>
> - )
>
> -{
>
> - EFI_BOOT_MANAGER_LOAD_OPTION *NvBootOptions;
>
> - UINTN NvBootOptionCount;
>
> - UINTN Index;
>
> - EFI_STATUS Status;
>
> -
>
> - DEBUG ((DEBUG_INFO, "PlatformBootManagerBeforeConsole\n"));
>
> -
>
> - NvBootOptions = EfiBootManagerGetLoadOptions (&NvBootOptionCount,
> LoadOptionTypeBoot);
>
> - for (Index = 0; Index < NvBootOptionCount; Index++) {
>
> - Status = EfiBootManagerDeleteLoadOptionVariable
> (NvBootOptions[Index].OptionNumber, LoadOptionTypeBoot);
>
> - if (EFI_ERROR (Status)) {
>
> - DEBUG ((
>
> - DEBUG_ERROR,
>
> - "%a: removing Boot#%04x %r\n",
>
> - __FUNCTION__,
>
> - (UINT32) NvBootOptions[Index].OptionNumber,
>
> - Status
>
> - ));
>
> - }
>
> - }
>
> -
>
> - InstallDevicePathCallback ();
>
> -
>
> - VisitAllInstancesOfProtocol (&gEfiPciRootBridgeIoProtocolGuid,
>
> - ConnectRootBridge, NULL);
>
> - //
>
> - // Enable LPC
>
> - //
>
> - PciOr16(POWER_MGMT_REGISTER_ICH10(0x04),
>
> - BIT0 | BIT1 | BIT2);
>
> - //
>
> - // We can't signal End-of-Dxe earlier than this. Namely, End-of-Dxe triggers
>
> - // the preparation of S3 system information. That logic has a hard
> dependency
>
> - // on the presence of the FACS ACPI table. Since our ACPI tables are only
>
> - // installed after PCI enumeration completes, we must not trigger the S3
> save
>
> - // earlier, hence we can't signal End-of-Dxe earlier.
>
> - //
>
> - EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid);
>
> -
>
> - PlatformInitializeConsole (gPlatformConsole);
>
> -
>
> - PlatformRegisterOptionsAndKeys ();
>
> -}
>
> -
>
> -
>
> -EFI_STATUS
>
> -EFIAPI
>
> -ConnectRootBridge (
>
> - IN EFI_HANDLE RootBridgeHandle,
>
> - IN VOID *Instance,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> -
>
> - //
>
> - // Make the PCI bus driver connect the root bridge, non-recursively. This
>
> - // will produce a number of child handles with PciIo on them.
>
> - //
>
> - Status = gBS->ConnectController (
>
> - RootBridgeHandle, // ControllerHandle
>
> - NULL, // DriverImageHandle
>
> - NULL, // RemainingDevicePath -- produce all
>
> - // children
>
> - FALSE // Recursive
>
> - );
>
> - return Status;
>
> -}
>
> -
>
> -
>
> -/**
>
> - Add IsaKeyboard to ConIn; add IsaSerial to ConOut, ConIn, ErrOut.
>
> -
>
> - @param[in] DeviceHandle Handle of the LPC Bridge device.
>
> -
>
> - @retval EFI_SUCCESS Console devices on the LPC bridge have been added
> to
>
> - ConOut, ConIn, and ErrOut.
>
> -
>
> - @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
>
> - from DeviceHandle.
>
> -**/
>
> -EFI_STATUS
>
> -PrepareLpcBridgeDevicePath (
>
> - IN EFI_HANDLE DeviceHandle
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> - EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
>
> - CHAR16 *DevPathStr;
>
> -
>
> - DevicePath = NULL;
>
> - Status = gBS->HandleProtocol (
>
> - DeviceHandle,
>
> - &gEfiDevicePathProtocolGuid,
>
> - (VOID*)&DevicePath
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> - TempDevicePath = DevicePath;
>
> -
>
> - //
>
> - // Register Keyboard
>
> - //
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gPnpPs2KeyboardDeviceNode);
>
> -
>
> - EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
>
> -
>
> - //
>
> - // Register COM1
>
> - //
>
> - DevicePath = TempDevicePath;
>
> - gPnp16550ComPortDeviceNode.UID = 0;
>
> -
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
>
> -
>
> - //
>
> - // Print Device Path
>
> - //
>
> - DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
>
> - if (DevPathStr != NULL) {
>
> - DEBUG((
>
> - EFI_D_INFO,
>
> - "BdsPlatform.c+%d: COM%d DevPath: %s\n",
>
> - __LINE__,
>
> - gPnp16550ComPortDeviceNode.UID + 1,
>
> - DevPathStr
>
> - ));
>
> - FreePool(DevPathStr);
>
> - }
>
> -
>
> - EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
>
> -
>
> - //
>
> - // Register COM2
>
> - //
>
> - DevicePath = TempDevicePath;
>
> - gPnp16550ComPortDeviceNode.UID = 1;
>
> -
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
>
> -
>
> - //
>
> - // Print Device Path
>
> - //
>
> - DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
>
> - if (DevPathStr != NULL) {
>
> - DEBUG((
>
> - EFI_D_INFO,
>
> - "BdsPlatform.c+%d: COM%d DevPath: %s\n",
>
> - __LINE__,
>
> - gPnp16550ComPortDeviceNode.UID + 1,
>
> - DevPathStr
>
> - ));
>
> - FreePool(DevPathStr);
>
> - }
>
> -
>
> - EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -EFI_STATUS
>
> -GetGopDevicePath (
>
> - IN EFI_DEVICE_PATH_PROTOCOL *PciDevicePath,
>
> - OUT EFI_DEVICE_PATH_PROTOCOL **GopDevicePath
>
> - )
>
> -{
>
> - UINTN Index;
>
> - EFI_STATUS Status;
>
> - EFI_HANDLE PciDeviceHandle;
>
> - EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
>
> - EFI_DEVICE_PATH_PROTOCOL *TempPciDevicePath;
>
> - UINTN GopHandleCount;
>
> - EFI_HANDLE *GopHandleBuffer;
>
> -
>
> - if (PciDevicePath == NULL || GopDevicePath == NULL) {
>
> - return EFI_INVALID_PARAMETER;
>
> - }
>
> -
>
> - //
>
> - // Initialize the GopDevicePath to be PciDevicePath
>
> - //
>
> - *GopDevicePath = PciDevicePath;
>
> - TempPciDevicePath = PciDevicePath;
>
> -
>
> - Status = gBS->LocateDevicePath (
>
> - &gEfiDevicePathProtocolGuid,
>
> - &TempPciDevicePath,
>
> - &PciDeviceHandle
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - //
>
> - // Try to connect this handle, so that GOP driver could start on this
>
> - // device and create child handles with GraphicsOutput Protocol installed
>
> - // on them, then we get device paths of these child handles and select
>
> - // them as possible console device.
>
> - //
>
> - gBS->ConnectController (PciDeviceHandle, NULL, NULL, FALSE);
>
> -
>
> - Status = gBS->LocateHandleBuffer (
>
> - ByProtocol,
>
> - &gEfiGraphicsOutputProtocolGuid,
>
> - NULL,
>
> - &GopHandleCount,
>
> - &GopHandleBuffer
>
> - );
>
> - if (!EFI_ERROR (Status)) {
>
> - //
>
> - // Add all the child handles as possible Console Device
>
> - //
>
> - for (Index = 0; Index < GopHandleCount; Index++) {
>
> - Status = gBS->HandleProtocol (GopHandleBuffer[Index],
> &gEfiDevicePathProtocolGuid, (VOID*)&TempDevicePath);
>
> - if (EFI_ERROR (Status)) {
>
> - continue;
>
> - }
>
> - if (CompareMem (
>
> - PciDevicePath,
>
> - TempDevicePath,
>
> - GetDevicePathSize (PciDevicePath) - END_DEVICE_PATH_LENGTH
>
> - ) == 0) {
>
> - //
>
> - // In current implementation, we only enable one of the child handles
>
> - // as console device, i.e. sotre one of the child handle's device
>
> - // path to variable "ConOut"
>
> - // In future, we could select all child handles to be console device
>
> - //
>
> -
>
> - *GopDevicePath = TempDevicePath;
>
> -
>
> - //
>
> - // Delete the PCI device's path that added by
>
> - // GetPlugInPciVgaDevicePath(). Add the integrity GOP device path.
>
> - //
>
> - EfiBootManagerUpdateConsoleVariable (ConOutDev, NULL,
> PciDevicePath);
>
> - EfiBootManagerUpdateConsoleVariable (ConOutDev, TempDevicePath,
> NULL);
>
> - }
>
> - }
>
> - gBS->FreePool (GopHandleBuffer);
>
> - }
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -/**
>
> - Add PCI display to ConOut.
>
> -
>
> - @param[in] DeviceHandle Handle of the PCI display device.
>
> -
>
> - @retval EFI_SUCCESS The PCI display device has been added to ConOut.
>
> -
>
> - @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
>
> - from DeviceHandle.
>
> -**/
>
> -EFI_STATUS
>
> -PreparePciDisplayDevicePath (
>
> - IN EFI_HANDLE DeviceHandle
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> - EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;
>
> -
>
> - DevicePath = NULL;
>
> - GopDevicePath = NULL;
>
> - Status = gBS->HandleProtocol (
>
> - DeviceHandle,
>
> - &gEfiDevicePathProtocolGuid,
>
> - (VOID*)&DevicePath
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - GetGopDevicePath (DevicePath, &GopDevicePath);
>
> - DevicePath = GopDevicePath;
>
> -
>
> - EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -/**
>
> - Add PCI Serial to ConOut, ConIn, ErrOut.
>
> -
>
> - @param[in] DeviceHandle Handle of the PCI serial device.
>
> -
>
> - @retval EFI_SUCCESS The PCI serial device has been added to ConOut,
> ConIn,
>
> - ErrOut.
>
> -
>
> - @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
>
> - from DeviceHandle.
>
> -**/
>
> -EFI_STATUS
>
> -PreparePciSerialDevicePath (
>
> - IN EFI_HANDLE DeviceHandle
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> -
>
> - DevicePath = NULL;
>
> - Status = gBS->HandleProtocol (
>
> - DeviceHandle,
>
> - &gEfiDevicePathProtocolGuid,
>
> - (VOID*)&DevicePath
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
>
> - DevicePath = AppendDevicePathNode (DevicePath,
> (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
>
> -
>
> - EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
>
> - EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -EFI_STATUS
>
> -VisitAllInstancesOfProtocol (
>
> - IN EFI_GUID *Id,
>
> - IN PROTOCOL_INSTANCE_CALLBACK CallBackFunction,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - UINTN HandleCount;
>
> - EFI_HANDLE *HandleBuffer;
>
> - UINTN Index;
>
> - VOID *Instance;
>
> -
>
> - //
>
> - // Start to check all the PciIo to find all possible device
>
> - //
>
> - HandleCount = 0;
>
> - HandleBuffer = NULL;
>
> - Status = gBS->LocateHandleBuffer (
>
> - ByProtocol,
>
> - Id,
>
> - NULL,
>
> - &HandleCount,
>
> - &HandleBuffer
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - for (Index = 0; Index < HandleCount; Index++) {
>
> - Status = gBS->HandleProtocol (HandleBuffer[Index], Id, &Instance);
>
> - if (EFI_ERROR (Status)) {
>
> - continue;
>
> - }
>
> -
>
> - Status = (*CallBackFunction) (
>
> - HandleBuffer[Index],
>
> - Instance,
>
> - Context
>
> - );
>
> - }
>
> -
>
> - gBS->FreePool (HandleBuffer);
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -
>
> -EFI_STATUS
>
> -EFIAPI
>
> -VisitingAPciInstance (
>
> - IN EFI_HANDLE Handle,
>
> - IN VOID *Instance,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_PCI_IO_PROTOCOL *PciIo;
>
> - PCI_TYPE00 Pci;
>
> -
>
> - PciIo = (EFI_PCI_IO_PROTOCOL*) Instance;
>
> -
>
> - //
>
> - // Check for all PCI device
>
> - //
>
> - Status = PciIo->Pci.Read (
>
> - PciIo,
>
> - EfiPciIoWidthUint32,
>
> - 0,
>
> - sizeof (Pci) / sizeof (UINT32),
>
> - &Pci
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - return (*(VISIT_PCI_INSTANCE_CALLBACK)(UINTN) Context) (
>
> - Handle,
>
> - PciIo,
>
> - &Pci
>
> - );
>
> -
>
> -}
>
> -
>
> -
>
> -
>
> -EFI_STATUS
>
> -VisitAllPciInstances (
>
> - IN VISIT_PCI_INSTANCE_CALLBACK CallBackFunction
>
> - )
>
> -{
>
> - return VisitAllInstancesOfProtocol (
>
> - &gEfiPciIoProtocolGuid,
>
> - VisitingAPciInstance,
>
> - (VOID*)(UINTN) CallBackFunction
>
> - );
>
> -}
>
> -
>
> -
>
> -/**
>
> - Do platform specific PCI Device check and add them to
>
> - ConOut, ConIn, ErrOut.
>
> -
>
> - @param[in] Handle - Handle of PCI device instance
>
> - @param[in] PciIo - PCI IO protocol instance
>
> - @param[in] Pci - PCI Header register block
>
> -
>
> - @retval EFI_SUCCESS - PCI Device check and Console variable update
>
> - successfully.
>
> - @retval EFI_STATUS - PCI Device check or Console variable update fail.
>
> -
>
> -**/
>
> -EFI_STATUS
>
> -EFIAPI
>
> -DetectAndPreparePlatformPciDevicePath (
>
> - IN EFI_HANDLE Handle,
>
> - IN EFI_PCI_IO_PROTOCOL *PciIo,
>
> - IN PCI_TYPE00 *Pci
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> -
>
> - Status = PciIo->Attributes (
>
> - PciIo,
>
> - EfiPciIoAttributeOperationEnable,
>
> - EFI_PCI_DEVICE_ENABLE,
>
> - NULL
>
> - );
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - if (!mDetectVgaOnly) {
>
> - //
>
> - // Here we decide whether it is LPC Bridge
>
> - //
>
> - if ((IS_PCI_LPC (Pci)) ||
>
> - ((IS_PCI_ISA_PDECODE (Pci)) &&
>
> - (Pci->Hdr.VendorId == 0x8086) &&
>
> - (Pci->Hdr.DeviceId == 0x7000)
>
> - )
>
> - ) {
>
> - //
>
> - // Add IsaKeyboard to ConIn,
>
> - // add IsaSerial to ConOut, ConIn, ErrOut
>
> - //
>
> - DEBUG ((EFI_D_INFO, "Found LPC Bridge device\n"));
>
> - PrepareLpcBridgeDevicePath (Handle);
>
> - return EFI_SUCCESS;
>
> - }
>
> - //
>
> - // Here we decide which Serial device to enable in PCI bus
>
> - //
>
> - if (IS_PCI_16550SERIAL (Pci)) {
>
> - //
>
> - // Add them to ConOut, ConIn, ErrOut.
>
> - //
>
> - DEBUG ((EFI_D_INFO, "Found PCI 16550 SERIAL device\n"));
>
> - PreparePciSerialDevicePath (Handle);
>
> - return EFI_SUCCESS;
>
> - }
>
> - }
>
> -
>
> - //
>
> - // Here we decide which display device to enable in PCI bus
>
> - //
>
> - if (IS_PCI_DISPLAY (Pci)) {
>
> - //
>
> - // Add them to ConOut.
>
> - //
>
> - DEBUG ((EFI_D_INFO, "Found PCI display device\n"));
>
> - PreparePciDisplayDevicePath (Handle);
>
> - return EFI_SUCCESS;
>
> - }
>
> -
>
> - return Status;
>
> -}
>
> -
>
> -
>
> -/**
>
> - Do platform specific PCI Device check and add them to ConOut, ConIn,
> ErrOut
>
> -
>
> - @param[in] DetectVgaOnly - Only detect VGA device if it's TRUE.
>
> -
>
> - @retval EFI_SUCCESS - PCI Device check and Console variable update
> successfully.
>
> - @retval EFI_STATUS - PCI Device check or Console variable update fail.
>
> -
>
> -**/
>
> -EFI_STATUS
>
> -DetectAndPreparePlatformPciDevicePaths (
>
> - BOOLEAN DetectVgaOnly
>
> - )
>
> -{
>
> - mDetectVgaOnly = DetectVgaOnly;
>
> - return VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath);
>
> -}
>
> -
>
> -/**
>
> - Connect the predefined platform default console device.
>
> -
>
> - Always try to find and enable PCI display devices.
>
> -
>
> - @param[in] PlatformConsole Predefined platform default console device
> array.
>
> -**/
>
> -VOID
>
> -PlatformInitializeConsole (
>
> - IN PLATFORM_CONSOLE_CONNECT_ENTRY *PlatformConsole
>
> - )
>
> -{
>
> - UINTN Index;
>
> - EFI_DEVICE_PATH_PROTOCOL *VarConout;
>
> - EFI_DEVICE_PATH_PROTOCOL *VarConin;
>
> -
>
> - //
>
> - // Connect RootBridge
>
> - //
>
> - GetEfiGlobalVariable2 (EFI_CON_OUT_VARIABLE_NAME, (VOID **)
> &VarConout, NULL);
>
> - GetEfiGlobalVariable2 (EFI_CON_IN_VARIABLE_NAME, (VOID **)
> &VarConin, NULL);
>
> -
>
> - if (VarConout == NULL || VarConin == NULL) {
>
> - //
>
> - // Do platform specific PCI Device check and add them to ConOut, ConIn,
> ErrOut
>
> - //
>
> - DetectAndPreparePlatformPciDevicePaths (FALSE);
>
> - DetectAndPreparePlatformPciDevicePaths(TRUE);
>
> - //
>
> - // Have chance to connect the platform default console,
>
> - // the platform default console is the minimue device group
>
> - // the platform should support
>
> - //
>
> - for (Index = 0; PlatformConsole[Index].DevicePath != NULL; ++Index) {
>
> - //
>
> - // Update the console variable with the connect type
>
> - //
>
> - if ((PlatformConsole[Index].ConnectType & CONSOLE_IN) ==
> CONSOLE_IN) {
>
> - EfiBootManagerUpdateConsoleVariable (ConIn,
> PlatformConsole[Index].DevicePath, NULL);
>
> - }
>
> - if ((PlatformConsole[Index].ConnectType & CONSOLE_OUT) ==
> CONSOLE_OUT) {
>
> - EfiBootManagerUpdateConsoleVariable (ConOut,
> PlatformConsole[Index].DevicePath, NULL);
>
> - }
>
> - if ((PlatformConsole[Index].ConnectType & STD_ERROR) == STD_ERROR) {
>
> - EfiBootManagerUpdateConsoleVariable (ErrOut,
> PlatformConsole[Index].DevicePath, NULL);
>
> - }
>
> - }
>
> - } else {
>
> - //
>
> - // Only detect VGA device and add them to ConOut
>
> - //
>
> - DetectAndPreparePlatformPciDevicePaths (TRUE);
>
> - }
>
> -}
>
> -
>
> -
>
> -/**
>
> - Configure PCI Interrupt Line register for applicable devices
>
> - Ported from SeaBIOS, src/fw/pciinit.c, *_pci_slot_get_irq()
>
> -
>
> - @param[in] Handle - Handle of PCI device instance
>
> - @param[in] PciIo - PCI IO protocol instance
>
> - @param[in] PciHdr - PCI Header register block
>
> -
>
> - @retval EFI_SUCCESS - PCI Interrupt Line register configured successfully.
>
> -
>
> -**/
>
> -EFI_STATUS
>
> -EFIAPI
>
> -SetPciIntLine (
>
> - IN EFI_HANDLE Handle,
>
> - IN EFI_PCI_IO_PROTOCOL *PciIo,
>
> - IN PCI_TYPE00 *PciHdr
>
> - )
>
> -{
>
> - EFI_DEVICE_PATH_PROTOCOL *DevPathNode;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevPath;
>
> - UINTN RootSlot;
>
> - UINTN Idx;
>
> - UINT8 IrqLine;
>
> - EFI_STATUS Status;
>
> - UINT32 RootBusNumber;
>
> -
>
> - Status = EFI_SUCCESS;
>
> -
>
> - if (PciHdr->Device.InterruptPin != 0) {
>
> -
>
> - DevPathNode = DevicePathFromHandle (Handle);
>
> - ASSERT (DevPathNode != NULL);
>
> - DevPath = DevPathNode;
>
> -
>
> - RootBusNumber = 0;
>
> - if (DevicePathType (DevPathNode) == ACPI_DEVICE_PATH &&
>
> - DevicePathSubType (DevPathNode) == ACPI_DP &&
>
> - ((ACPI_HID_DEVICE_PATH *)DevPathNode)->HID ==
> EISA_PNP_ID(0x0A03)) {
>
> - RootBusNumber = ((ACPI_HID_DEVICE_PATH *)DevPathNode)->UID;
>
> - }
>
> -
>
> - //
>
> - // Compute index into PciHostIrqs[] table by walking
>
> - // the device path and adding up all device numbers
>
> - //
>
> - Status = EFI_NOT_FOUND;
>
> - RootSlot = 0;
>
> - Idx = PciHdr->Device.InterruptPin - 1;
>
> - while (!IsDevicePathEnd (DevPathNode)) {
>
> - if (DevicePathType (DevPathNode) == HARDWARE_DEVICE_PATH &&
>
> - DevicePathSubType (DevPathNode) == HW_PCI_DP) {
>
> -
>
> - Idx += ((PCI_DEVICE_PATH *)DevPathNode)->Device;
>
> -
>
> - //
>
> - // Unlike SeaBIOS, which starts climbing from the leaf device
>
> - // up toward the root, we traverse the device path starting at
>
> - // the root moving toward the leaf node.
>
> - // The slot number of the top-level parent bridge is needed
>
> - // with more than 24 slots on the root bus.
>
> - //
>
> - if (Status != EFI_SUCCESS) {
>
> - Status = EFI_SUCCESS;
>
> - RootSlot = ((PCI_DEVICE_PATH *)DevPathNode)->Device;
>
> - }
>
> - }
>
> -
>
> - DevPathNode = NextDevicePathNode (DevPathNode);
>
> - }
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> - if (RootBusNumber == 0 && RootSlot == 0) {
>
> - return Status; //bugbug: workaround; need SIMICS change B0/D0/F0
> PCI_IntPin reg(0x3D) = 0X0
>
> -// DEBUG((
>
> -// EFI_D_ERROR,
>
> -// "%a: PCI host bridge (00:00.0) should have no interrupts!\n",
>
> -// __FUNCTION__
>
> -// ));
>
> -// ASSERT (FALSE);
>
> - }
>
> -
>
> - //
>
> - // Final PciHostIrqs[] index calculation depends on the platform
>
> - // and should match SeaBIOS src/fw/pciinit.c *_pci_slot_get_irq()
>
> - //
>
> - switch (mHostBridgeDevId) {
>
> - case INTEL_82441_DEVICE_ID:
>
> - Idx -= 1;
>
> - break;
>
> - case INTEL_ICH10_DEVICE_ID:
>
> - //
>
> - // SeaBIOS contains the following comment:
>
> - // "Slots 0-24 rotate slot:pin mapping similar to piix above, but
>
> - // with a different starting index.
>
> - //
>
> - // Slots 25-31 all use LNKA mapping (or LNKE, but A:D = E:H)"
>
> - //
>
> - if (RootSlot > 24) {
>
> - //
>
> - // in this case, subtract back out RootSlot from Idx
>
> - // (SeaBIOS never adds it to begin with, but that would make our
>
> - // device path traversal loop above too awkward)
>
> - //
>
> - Idx -= RootSlot;
>
> - }
>
> - break;
>
> - default:
>
> - ASSERT (FALSE); // should never get here
>
> - }
>
> - Idx %= ARRAY_SIZE (PciHostIrqs);
>
> - IrqLine = PciHostIrqs[Idx];
>
> -
>
> - DEBUG_CODE_BEGIN ();
>
> - {
>
> - CHAR16 *DevPathString;
>
> - STATIC CHAR16 Fallback[] = L"<failed to convert>";
>
> - UINTN Segment, Bus, Device, Function;
>
> -
>
> - DevPathString = ConvertDevicePathToText (DevPath, FALSE, FALSE);
>
> - if (DevPathString == NULL) {
>
> - DevPathString = Fallback;
>
> - }
>
> - Status = PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Function);
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - DEBUG ((EFI_D_VERBOSE, "%a: [%02x:%02x.%x] %s -> 0x%02x\n",
> __FUNCTION__,
>
> - (UINT32)Bus, (UINT32)Device, (UINT32)Function, DevPathString,
>
> - IrqLine));
>
> -
>
> - if (DevPathString != Fallback) {
>
> - FreePool (DevPathString);
>
> - }
>
> - }
>
> - DEBUG_CODE_END ();
>
> -
>
> - //
>
> - // Set PCI Interrupt Line register for this device to PciHostIrqs[Idx]
>
> - //
>
> - Status = PciIo->Pci.Write (
>
> - PciIo,
>
> - EfiPciIoWidthUint8,
>
> - PCI_INT_LINE_OFFSET,
>
> - 1,
>
> - &IrqLine
>
> - );
>
> - }
>
> -
>
> - return Status;
>
> -}
>
> -
>
> -/**
>
> -Write to mask and edge/level triggered registers of master and slave 8259
> PICs.
>
> -
>
> -@param[in] Mask low byte for master PIC mask register,
>
> -high byte for slave PIC mask register.
>
> -@param[in] EdgeLevel low byte for master PIC edge/level triggered register,
>
> -high byte for slave PIC edge/level triggered register.
>
> -
>
> -**/
>
> -VOID
>
> -Interrupt8259WriteMask(
>
> - IN UINT16 Mask,
>
> - IN UINT16 EdgeLevel
>
> -)
>
> -{
>
> - IoWrite8(LEGACY_8259_MASK_REGISTER_MASTER, (UINT8)Mask);
>
> - IoWrite8(LEGACY_8259_MASK_REGISTER_SLAVE, (UINT8)(Mask >> 8));
>
> - IoWrite8(LEGACY_8259_EDGE_LEVEL_TRIGGERED_REGISTER_MASTER,
> (UINT8)EdgeLevel);
>
> - IoWrite8(LEGACY_8259_EDGE_LEVEL_TRIGGERED_REGISTER_SLAVE,
> (UINT8)(EdgeLevel >> 8));
>
> -}
>
> -
>
> -VOID
>
> -PciAcpiInitialization (
>
> - )
>
> -{
>
> - UINTN Pmba;
>
> -
>
> - //
>
> - // Query Host Bridge DID to determine platform type
>
> - //
>
> - mHostBridgeDevId = PcdGet16 (PcdSimicsX58HostBridgePciDevId);
>
> - switch (mHostBridgeDevId) {
>
> - case INTEL_82441_DEVICE_ID:
>
> - Pmba = POWER_MGMT_REGISTER_PIIX4 (PIIX4_PMBA);
>
> - //
>
> - // 00:01.0 ISA Bridge (PIIX4) LNK routing targets
>
> - //
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x60), 0x0b); // A
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x61), 0x0b); // B
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x62), 0x0a); // C
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x63), 0x0a); // D
>
> - break;
>
> - case INTEL_ICH10_DEVICE_ID:
>
> - Pmba = POWER_MGMT_REGISTER_ICH10 (ICH10_PMBASE);
>
> - //
>
> - // 00:1f.0 LPC Bridge LNK routing targets
>
> - //
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x60), 0x0a); // A
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x61), 0x0a); // B
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x62), 0x0b); // C
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x63), 0x0b); // D
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x68), 0x0a); // E
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x69), 0x0a); // F
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x6a), 0x0b); // G
>
> - PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x6b), 0x0b); // H
>
> - break;
>
> - default:
>
> - DEBUG ((EFI_D_ERROR, "%a: Unknown Host Bridge Device ID: 0x%04x\n",
>
> - __FUNCTION__, mHostBridgeDevId));
>
> - ASSERT (FALSE);
>
> - return;
>
> - }
>
> -
>
> - //
>
> - // Initialize PCI_INTERRUPT_LINE for applicable present PCI devices
>
> - //
>
> - VisitAllPciInstances (SetPciIntLine);
>
> -
>
> - //
>
> - // Set ACPI SCI_EN bit in PMCNTRL
>
> - //
>
> - IoOr16 ((PciRead32 (Pmba) & ~BIT0) + 4, BIT0);
>
> - //
>
> - // Set all 8259 interrupts to edge triggered and disabled
>
> - //
>
> - Interrupt8259WriteMask(0xFFFF, 0x0000);
>
> -}
>
> -
>
> -EFI_STATUS
>
> -EFIAPI
>
> -ConnectRecursivelyIfPciMassStorage (
>
> - IN EFI_HANDLE Handle,
>
> - IN EFI_PCI_IO_PROTOCOL *Instance,
>
> - IN PCI_TYPE00 *PciHeader
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> - CHAR16 *DevPathStr;
>
> -
>
> - //
>
> - // Recognize PCI Mass Storage
>
> - //
>
> - if (IS_CLASS1 (PciHeader, PCI_CLASS_MASS_STORAGE)) {
>
> - DevicePath = NULL;
>
> - Status = gBS->HandleProtocol (
>
> - Handle,
>
> - &gEfiDevicePathProtocolGuid,
>
> - (VOID*)&DevicePath
>
> - );
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - //
>
> - // Print Device Path
>
> - //
>
> - DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
>
> - if (DevPathStr != NULL) {
>
> - DEBUG((
>
> - EFI_D_INFO,
>
> - "Found Mass Storage device: %s\n",
>
> - DevPathStr
>
> - ));
>
> - FreePool(DevPathStr);
>
> - }
>
> -
>
> - Status = gBS->ConnectController (Handle, NULL, NULL, TRUE);
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - }
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -
>
> -/**
>
> - This notification function is invoked when the
>
> - EMU Variable FVB has been changed.
>
> -
>
> - @param Event The event that occurred
>
> - @param Context For EFI compatibility. Not used.
>
> -
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -EmuVariablesUpdatedCallback (
>
> - IN EFI_EVENT Event,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - DEBUG ((EFI_D_INFO, "EmuVariablesUpdatedCallback\n"));
>
> - UpdateNvVarsOnFileSystem ();
>
> -}
>
> -
>
> -
>
> -EFI_STATUS
>
> -EFIAPI
>
> -VisitingFileSystemInstance (
>
> - IN EFI_HANDLE Handle,
>
> - IN VOID *Instance,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - EFI_STATUS Status;
>
> - STATIC BOOLEAN ConnectedToFileSystem = FALSE;
>
> -
>
> - if (ConnectedToFileSystem) {
>
> - return EFI_ALREADY_STARTED;
>
> - }
>
> -
>
> - Status = ConnectNvVarsToFileSystem (Handle);
>
> - if (EFI_ERROR (Status)) {
>
> - return Status;
>
> - }
>
> -
>
> - ConnectedToFileSystem = TRUE;
>
> - mEmuVariableEvent =
>
> - EfiCreateProtocolNotifyEvent (
>
> - &gEfiDevicePathProtocolGuid,
>
> - TPL_CALLBACK,
>
> - EmuVariablesUpdatedCallback,
>
> - NULL,
>
> - &mEmuVariableEventReg
>
> - );
>
> - PcdSet64 (PcdEmuVariableEvent, (UINT64)(UINTN) mEmuVariableEvent);
>
> -
>
> - return EFI_SUCCESS;
>
> -}
>
> -
>
> -
>
> -VOID
>
> -PlatformBdsRestoreNvVarsFromHardDisk (
>
> - )
>
> -{
>
> - VisitAllPciInstances (ConnectRecursivelyIfPciMassStorage);
>
> - VisitAllInstancesOfProtocol (
>
> - &gEfiSimpleFileSystemProtocolGuid,
>
> - VisitingFileSystemInstance,
>
> - NULL
>
> - );
>
> -
>
> -}
>
> -
>
> -/**
>
> - Connect with predefined platform connect sequence.
>
> -
>
> - The OEM/IBV can customize with their own connect sequence.
>
> -**/
>
> -VOID
>
> -PlatformBdsConnectSequence (
>
> - VOID
>
> - )
>
> -{
>
> - UINTN Index;
>
> -
>
> - DEBUG ((EFI_D_INFO, "PlatformBdsConnectSequence\n"));
>
> -
>
> - Index = 0;
>
> -
>
> - //
>
> - // Here we can get the customized platform connect sequence
>
> - // Notes: we can connect with new variable which record the
>
> - // last time boots connect device path sequence
>
> - //
>
> - while (gPlatformConnectSequence[Index] != NULL) {
>
> - //
>
> - // Build the platform boot option
>
> - //
>
> - EfiBootManagerConnectDevicePath (gPlatformConnectSequence[Index],
> NULL);
>
> - Index++;
>
> - }
>
> -
>
> - //
>
> - // Just use the simple policy to connect all devices
>
> - //
>
> - DEBUG ((EFI_D_INFO, "EfiBootManagerConnectAll\n"));
>
> - EfiBootManagerConnectAll ();
>
> -
>
> - PciAcpiInitialization ();
>
> -}
>
> -
>
> -/**
>
> - Do the platform specific action after the console is ready
>
> -
>
> - Possible things that can be done in PlatformBootManagerAfterConsole:
>
> -
>
> - > Console post action:
>
> - > Dynamically switch output mode from 100x31 to 80x25 for certain
> senarino
>
> - > Signal console ready platform customized event
>
> - > Run diagnostics like memory testing
>
> - > Connect certain devices
>
> - > Dispatch aditional option roms
>
> - > Special boot: e.g.: USB boot, enter UI
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -PlatformBootManagerAfterConsole (
>
> - VOID
>
> - )
>
> -{
>
> - EFI_BOOT_MODE BootMode;
>
> - EFI_HANDLE Handle;
>
> - EFI_STATUS Status;
>
> -
>
> - DEBUG ((EFI_D_INFO, "PlatformBootManagerAfterConsole\n"));
>
> -
>
> - //
>
> - // Prevent further changes to LockBoxes or SMRAM.
>
> - //
>
> - Handle = NULL;
>
> - Status = gBS->InstallProtocolInterface(&Handle,
>
> - &gEfiDxeSmmReadyToLockProtocolGuid, EFI_NATIVE_INTERFACE,
>
> - NULL);
>
> - ASSERT_EFI_ERROR(Status);
>
> -
>
> - if (PcdGetBool (PcdOvmfFlashVariablesEnable)) {
>
> - DEBUG ((EFI_D_INFO, "PlatformBdsPolicyBehavior: not restoring NvVars "
>
> - "from disk since flash variables appear to be supported.\n"));
>
> - } else {
>
> - //
>
> - // Try to restore variables from the hard disk early so
>
> - // they can be used for the other BDS connect operations.
>
> - //
>
> - PlatformBdsRestoreNvVarsFromHardDisk ();
>
> - }
>
> -
>
> - //
>
> - // Get current Boot Mode
>
> - //
>
> - BootMode = GetBootModeHob ();
>
> - DEBUG ((EFI_D_ERROR, "Boot Mode:%x\n", BootMode));
>
> -
>
> - //
>
> - // Go the different platform policy with different boot mode
>
> - // Notes: this part code can be change with the table policy
>
> - //
>
> - ASSERT (BootMode == BOOT_WITH_FULL_CONFIGURATION);
>
> -
>
> - // Perform some platform specific connect sequence
>
> - //
>
> - PlatformBdsConnectSequence ();
>
> - //
>
> - // Logo show
>
> - //
>
> - EnableBootLogo(PcdGetPtr(PcdLogoFile));
>
> -
>
> - EfiBootManagerRefreshAllBootOption ();
>
> -
>
> - //
>
> - // Register UEFI Shell
>
> - //
>
> - PlatformRegisterFvBootOption (
>
> - PcdGetPtr (PcdShellFile), L"EFI Internal Shell", LOAD_OPTION_ACTIVE
>
> - );
>
> -
>
> - RemoveStaleFvFileOptions ();
>
> -}
>
> -
>
> -/**
>
> - This notification function is invoked when an instance of the
>
> - EFI_DEVICE_PATH_PROTOCOL is produced.
>
> -
>
> - @param Event The event that occurred
>
> - @param Context For EFI compatibility. Not used.
>
> -
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -NotifyDevPath (
>
> - IN EFI_EVENT Event,
>
> - IN VOID *Context
>
> - )
>
> -{
>
> - EFI_HANDLE Handle;
>
> - EFI_STATUS Status;
>
> - UINTN BufferSize;
>
> - EFI_DEVICE_PATH_PROTOCOL *DevPathNode;
>
> - ATAPI_DEVICE_PATH *Atapi;
>
> -
>
> - //
>
> - // Examine all new handles
>
> - //
>
> - for (;;) {
>
> - //
>
> - // Get the next handle
>
> - //
>
> - BufferSize = sizeof (Handle);
>
> - Status = gBS->LocateHandle (
>
> - ByRegisterNotify,
>
> - NULL,
>
> - mEfiDevPathNotifyReg,
>
> - &BufferSize,
>
> - &Handle
>
> - );
>
> -
>
> - //
>
> - // If not found, we're done
>
> - //
>
> - if (EFI_NOT_FOUND == Status) {
>
> - break;
>
> - }
>
> -
>
> - if (EFI_ERROR (Status)) {
>
> - continue;
>
> - }
>
> -
>
> - //
>
> - // Get the DevicePath protocol on that handle
>
> - //
>
> - Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid,
> (VOID **)&DevPathNode);
>
> - ASSERT_EFI_ERROR (Status);
>
> -
>
> - while (!IsDevicePathEnd (DevPathNode)) {
>
> - //
>
> - // Find the handler to dump this device path node
>
> - //
>
> - if (
>
> - (DevicePathType(DevPathNode) == MESSAGING_DEVICE_PATH) &&
>
> - (DevicePathSubType(DevPathNode) == MSG_ATAPI_DP)
>
> - ) {
>
> - Atapi = (ATAPI_DEVICE_PATH*) DevPathNode;
>
> - PciOr16 (
>
> - PCI_LIB_ADDRESS (
>
> - 0,
>
> - 1,
>
> - 1,
>
> - (Atapi->PrimarySecondary == 1) ? 0x42: 0x40
>
> - ),
>
> - BIT15
>
> - );
>
> - }
>
> -
>
> - //
>
> - // Next device path node
>
> - //
>
> - DevPathNode = NextDevicePathNode (DevPathNode);
>
> - }
>
> - }
>
> -
>
> - return;
>
> -}
>
> -
>
> -
>
> -VOID
>
> -InstallDevicePathCallback (
>
> - VOID
>
> - )
>
> -{
>
> - DEBUG ((EFI_D_INFO, "Registered NotifyDevPath Event\n"));
>
> - mEfiDevPathEvent = EfiCreateProtocolNotifyEvent (
>
> - &gEfiDevicePathProtocolGuid,
>
> - TPL_CALLBACK,
>
> - NotifyDevPath,
>
> - NULL,
>
> - &mEfiDevPathNotifyReg
>
> - );
>
> -}
>
> -
>
> -/**
>
> - This function is called each second during the boot manager waits the
>
> - timeout.
>
> -
>
> - @param TimeoutRemain The remaining timeout.
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -PlatformBootManagerWaitCallback (
>
> - UINT16 TimeoutRemain
>
> - )
>
> -{
>
> - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black;
>
> - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White;
>
> - UINT16 Timeout;
>
> -
>
> - Timeout = PcdGet16 (PcdPlatformBootTimeOut);
>
> -
>
> - Black.Raw = 0x00000000;
>
> - White.Raw = 0x00FFFFFF;
>
> -
>
> - BootLogoUpdateProgress (
>
> - White.Pixel,
>
> - Black.Pixel,
>
> - L"Start boot option",
>
> - White.Pixel,
>
> - (Timeout - TimeoutRemain) * 100 / Timeout,
>
> - 0
>
> - );
>
> -}
>
> -
>
> -/**
>
> - The function is called when no boot option could be launched,
>
> - including platform recovery options and options pointing to applications
>
> - built into firmware volumes.
>
> -
>
> - If this function returns, BDS attempts to enter an infinite loop.
>
> -**/
>
> -VOID
>
> -EFIAPI
>
> -PlatformBootManagerUnableToBoot (
>
> - VOID
>
> - )
>
> -{
>
> - // BUGBUG- will do it if need
>
> -}
>
> diff --git
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.h
> b/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.h
> deleted file mode 100644
> index 01ba20d2da..0000000000
> ---
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Bds
> Platform.h
> +++ /dev/null
> @@ -1,172 +0,0 @@
> -/** @file
>
> - Platform BDS customizations include file.
>
> -
>
> - Copyright (c) 2006 - 2019 Intel Corporation. All rights reserved. <BR>
>
> -
>
> - SPDX-License-Identifier: BSD-2-Clause-Patent
>
> -**/
>
> -
>
> -#ifndef _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
>
> -#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
>
> -
>
> -
>
> -#include <PiDxe.h>
>
> -
>
> -#include <IndustryStandard/Pci.h>
>
> -#include <IndustryStandard/Acpi.h>
>
> -#include <IndustryStandard/SmBios.h>
>
> -#include <IndustryStandard/PeImage.h>
>
> -
>
> -#include <Library/DebugLib.h>
>
> -#include <Library/BaseMemoryLib.h>
>
> -#include <Library/UefiBootServicesTableLib.h>
>
> -#include <Library/UefiRuntimeServicesTableLib.h>
>
> -#include <Library/MemoryAllocationLib.h>
>
> -#include <Library/BaseLib.h>
>
> -#include <Library/PcdLib.h>
>
> -#include <Library/PciLib.h>
>
> -#include <Library/UefiBootManagerLib.h>
>
> -#include <Library/BootLogoLib.h>
>
> -#include <Library/HobLib.h>
>
> -#include <Library/UefiLib.h>
>
> -#include <Library/DxeServicesTableLib.h>
>
> -#include <Library/DevicePathLib.h>
>
> -#include <Library/IoLib.h>
>
> -#include <Library/NvVarsFileLib.h>
>
> -
>
> -#include <Protocol/Decompress.h>
>
> -#include <Protocol/PciIo.h>
>
> -#include <Protocol/FirmwareVolume2.h>
>
> -#include <Protocol/SimpleFileSystem.h>
>
> -#include <Protocol/PciRootBridgeIo.h>
>
> -#include <Protocol/S3SaveState.h>
>
> -#include <Protocol/DxeSmmReadyToLock.h>
>
> -#include <Protocol/LoadedImage.h>
>
> -
>
> -#include <Guid/Acpi.h>
>
> -#include <Guid/SmBios.h>
>
> -#include <Guid/Mps.h>
>
> -#include <Guid/HobList.h>
>
> -#include <Guid/GlobalVariable.h>
>
> -#include <Guid/EventGroup.h>
>
> -
>
> -#include <SimicsPlatforms.h>
>
> -
>
> -extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];
>
> -extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;
>
> -extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;
>
> -extern UART_DEVICE_PATH gUartDeviceNode;
>
> -extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;
>
> -
>
> -#define PCI_DEVICE_PATH_NODE(Func, Dev) \
>
> - { \
>
> - { \
>
> - HARDWARE_DEVICE_PATH, \
>
> - HW_PCI_DP, \
>
> - { \
>
> - (UINT8) (sizeof (PCI_DEVICE_PATH)), \
>
> - (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
>
> - } \
>
> - }, \
>
> - (Func), \
>
> - (Dev) \
>
> - }
>
> -
>
> -#define PNPID_DEVICE_PATH_NODE(PnpId) \
>
> - { \
>
> - { \
>
> - ACPI_DEVICE_PATH, \
>
> - ACPI_DP, \
>
> - { \
>
> - (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
>
> - (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
>
> - }, \
>
> - }, \
>
> - EISA_PNP_ID((PnpId)), \
>
> - 0 \
>
> - }
>
> -
>
> -#define gPciIsaBridge \
>
> - PCI_DEVICE_PATH_NODE(0, 0x1f)
>
> -
>
> -#define gP2PBridge \
>
> - PCI_DEVICE_PATH_NODE(0, 0x1e)
>
> -
>
> -#define gPnpPs2Keyboard \
>
> - PNPID_DEVICE_PATH_NODE(0x0303)
>
> -
>
> -#define gPnp16550ComPort \
>
> - PNPID_DEVICE_PATH_NODE(0x0501)
>
> -
>
> -#define gUart \
>
> - { \
>
> - { \
>
> - MESSAGING_DEVICE_PATH, \
>
> - MSG_UART_DP, \
>
> - { \
>
> - (UINT8) (sizeof (UART_DEVICE_PATH)), \
>
> - (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \
>
> - } \
>
> - }, \
>
> - 0, \
>
> - 115200, \
>
> - 8, \
>
> - 1, \
>
> - 1 \
>
> - }
>
> -
>
> -#define gPcAnsiTerminal \
>
> - { \
>
> - { \
>
> - MESSAGING_DEVICE_PATH, \
>
> - MSG_VENDOR_DP, \
>
> - { \
>
> - (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
>
> - (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
>
> - } \
>
> - }, \
>
> - DEVICE_PATH_MESSAGING_PC_ANSI \
>
> - }
>
> -
>
> -#define PCI_CLASS_SCC 0x07
>
> -#define PCI_SUBCLASS_SERIAL 0x00
>
> -#define PCI_IF_16550 0x02
>
> -#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC,
> PCI_SUBCLASS_SERIAL, PCI_IF_16550)
>
> -#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE,
> PCI_CLASS_BRIDGE_ISA_PDECODE, 0)
>
> -
>
> -typedef struct {
>
> - EFI_DEVICE_PATH_PROTOCOL *DevicePath;
>
> - UINTN ConnectType;
>
> -} PLATFORM_CONSOLE_CONNECT_ENTRY;
>
> -
>
> -#define CONSOLE_OUT BIT0
>
> -#define CONSOLE_IN BIT1
>
> -#define STD_ERROR BIT2
>
> -extern PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
>
> -
>
> -//
>
> -// Platform BDS Functions
>
> -//
>
> -
>
> -VOID
>
> -PlatformInitializeConsole (
>
> - IN PLATFORM_CONSOLE_CONNECT_ENTRY *PlatformConsole
>
> - );
>
> -
>
> -/**
>
> - Use SystemTable ConOut to stop video based Simple Text Out consoles from
> going
>
> - to the video device. Put up LogoFile on every video device that is a console.
>
> -
>
> - @param[in] LogoFile The file name of logo to display on the center of the
> screen.
>
> -
>
> - @retval EFI_SUCCESS ConsoleControl has been flipped to graphics and
> logo displayed.
>
> - @retval EFI_UNSUPPORTED Logo not found.
>
> -
>
> -**/
>
> -EFI_STATUS
>
> -EFIAPI
>
> -EnableBootLogo(
>
> - IN EFI_GUID *LogoFile
>
> -);
>
> -
>
> -#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
>
> diff --git
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformBootManagerLib.inf
> b/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformBootManagerLib.inf
> deleted file mode 100644
> index 3fb76c3564..0000000000
> ---
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformBootManagerLib.inf
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -## @file
>
> -# Platform BDS customizations library.
>
> -#
>
> -# Copyright (c) 2007 - 2019 Intel Corporation. All rights reserved. <BR>
>
> -#
>
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
>
> -#
>
> -##
>
> -
>
> -[Defines]
>
> - INF_VERSION = 0x00010005
>
> - BASE_NAME = PlatformBootManagerLib
>
> - FILE_GUID = 8AE4756F-0C71-4C06-84D4-4C71F204D514
>
> - MODULE_TYPE = DXE_DRIVER
>
> - VERSION_STRING = 1.0
>
> - LIBRARY_CLASS = PlatformBootManagerLib|DXE_DRIVER
>
> -
>
> -#
>
> -# The following information is for reference only and not required by the build
> tools.
>
> -#
>
> -# VALID_ARCHITECTURES = IA32 X64 EBC
>
> -#
>
> -
>
> -[Sources]
>
> - BdsPlatform.c
>
> - PlatformData.c
>
> - BdsPlatform.h
>
> -
>
> -[Packages]
>
> - MdePkg/MdePkg.dec
>
> - MdeModulePkg/MdeModulePkg.dec
>
> - SimicsOpenBoardPkg/OpenBoardPkg.dec
>
> - OvmfPkg/OvmfPkg.dec
>
> - SimicsIch10Pkg/Ich10Pkg.dec
>
> -
>
> -[LibraryClasses]
>
> - BaseLib
>
> - MemoryAllocationLib
>
> - UefiBootServicesTableLib
>
> - BaseMemoryLib
>
> - DebugLib
>
> - PcdLib
>
> - UefiBootManagerLib
>
> - BootLogoLib
>
> - DevicePathLib
>
> - PciLib
>
> - NvVarsFileLib
>
> - DxeLoadLinuxLib
>
> - UefiLib
>
> - LogoLib
>
> -
>
> -[Pcd]
>
> - gSimicsOpenBoardPkgTokenSpaceGuid.PcdEmuVariableEvent
>
> - gSimicsOpenBoardPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
>
> - gSimicsOpenBoardPkgTokenSpaceGuid.PcdSimicsX58HostBridgePciDevId
>
> - gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
>
> - gSimicsOpenBoardPkgTokenSpaceGuid.PcdShellFile
>
> - gSimicsOpenBoardPkgTokenSpaceGuid.PcdLogoFile
>
> -
>
> -[Pcd.IA32, Pcd.X64]
>
> - gEfiMdePkgTokenSpaceGuid.PcdFSBClock
>
> -
>
> -[Protocols]
>
> - gEfiDecompressProtocolGuid
>
> - gEfiPciRootBridgeIoProtocolGuid
>
> - gEfiS3SaveStateProtocolGuid # PROTOCOL
> SOMETIMES_CONSUMED
>
> - gEfiDxeSmmReadyToLockProtocolGuid # PROTOCOL
> SOMETIMES_PRODUCED
>
> - gEfiLoadedImageProtocolGuid # PROTOCOL
> SOMETIMES_PRODUCED
>
> - gEfiFirmwareVolume2ProtocolGuid # PROTOCOL
> SOMETIMES_CONSUMED
>
> -
>
> -[Guids]
>
> - gEfiEndOfDxeEventGroupGuid
>
> diff --git
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformData.c
> b/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformData.c
> deleted file mode 100644
> index 768843a8bf..0000000000
> ---
> a/Platform/Intel/SimicsOpenBoardPkg/Library/PlatformBootManagerLib/Pla
> tformData.c
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -/** @file
>
> - Defined the platform specific device path which will be used by
>
> - platform Bbd to perform the platform policy connect.
>
> -
>
> - Copyright (c) 2004 - 2019 Intel Corporation. All rights reserved. <BR>
>
> -
>
> - SPDX-License-Identifier: BSD-2-Clause-Patent
>
> -**/
>
> -
>
> -#include "BdsPlatform.h"
>
> -
>
> -ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode =
> gPnpPs2Keyboard;
>
> -ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode =
> gPnp16550ComPort;
>
> -UART_DEVICE_PATH gUartDeviceNode = gUart;
>
> -VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal;
>
> -
>
> -//
>
> -// Platform specific keyboard device path
>
> -//
>
> -
>
> -//
>
> -// Predefined platform default console device path
>
> -//
>
> -PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {
>
> - {
>
> - NULL,
>
> - 0
>
> - }
>
> -};
>
> -
>
> -//
>
> -// Predefined platform connect sequence
>
> -//
>
> -EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[] = { NULL };
>
> -
>
> --
> 2.39.1.windows.1
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#105230):
> https://edk2.groups.io/g/devel/message/105230
> Mute This Topic: https://groups.io/mt/99107253/1712937
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe:
> https://edk2.groups.io/g/devel/leave/3759105/1712937/893644498/xyzzy
> [ray.ni@intel.com]
> -=-=-=-=-=-=
>
next prev parent reply other threads:[~2023-05-25 2:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-24 12:28 [PATCH 0/6] Fine tune SimicsOpenBoardPkg Ni, Ray
2023-05-24 12:28 ` [PATCH 1/6] SimicsOpenBoardPkg: Remove un-used PlatformBootManagerLib Ni, Ray
2023-05-24 12:28 ` [PATCH 2/6] SimicsOpenBoardPkg: Remove logic that loads variable from disk file Ni, Ray
2023-05-24 12:28 ` [PATCH 3/6] SimicsOpenBoardPkg: Enable serial terminal Ni, Ray
2023-05-24 12:28 ` [PATCH 4/6] MinPlatform/build_bios.py: Support performance enabled build Ni, Ray
2023-05-24 23:07 ` Chiu, Chasel
2023-05-25 0:44 ` Ni, Ray
2023-05-24 12:28 ` [PATCH 5/6] SimicsOpenBoardPkg: Add "dp" command in performance build Ni, Ray
2023-05-24 12:28 ` [PATCH 6/6] SimicsOpenBoardPkg: Disable DriverBindingSupport perf logging Ni, Ray
[not found] ` <17621420EF808DC9.12947@groups.io>
2023-05-25 2:10 ` Ni, Ray [this message]
[not found] ` <17621421B6E6FB43.8048@groups.io>
2023-05-25 2:10 ` [edk2-devel] [PATCH 2/6] SimicsOpenBoardPkg: Remove logic that loads variable from disk file Ni, Ray
[not found] ` <17621422F0AEB994.8048@groups.io>
2023-05-25 2:11 ` [edk2-devel] [PATCH 6/6] SimicsOpenBoardPkg: Disable DriverBindingSupport perf logging Ni, Ray
[not found] ` <176214229D12BE31.8048@groups.io>
2023-05-25 2:11 ` [edk2-devel] [PATCH 5/6] SimicsOpenBoardPkg: Add "dp" command in performance build Ni, Ray
[not found] ` <17621421D3F4CA3E.12947@groups.io>
2023-05-25 2:11 ` [edk2-devel] [PATCH 3/6] SimicsOpenBoardPkg: Enable serial terminal Ni, Ray
2023-05-26 6:36 ` [edk2-devel] [PATCH 0/6] Fine tune SimicsOpenBoardPkg Zhiguang Liu
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=MN6PR11MB8244F2C78B783D34CABA14A78C469@MN6PR11MB8244.namprd11.prod.outlook.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