From 1c280088ec83160a5f190b3d0ba796b224ee23b3 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Tue, 4 Sep 2007 06:11:47 +0000 Subject: [PATCH] Merge the PI enabling works from the branch First round of PI enabling work: 1) PiPeiCis changes (CONST, EFI_PEI_FILE_HANDLE.. etc) 2) Make use of FirmwareVolume 2 protocol. 3) Verified for Nt32Pkg and real platform for S3. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3772 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/Library/PeiServicesLib.h | 18 +- MdePkg/Include/Library/PiLib.h | 80 ++++++ MdePkg/Include/Pi/PiPeiCis.h | 96 +++---- .../DxeDebugLibSerialPort.inf | 6 +- MdePkg/Library/DxePiLib/DxePiLib.c | 256 ++++++++++++++++++ MdePkg/Library/DxePiLib/DxePiLib.inf | 46 ++++ .../MemoryAllocationLib.c | 10 +- .../PeiMemoryAllocationLib.inf | 1 + MdePkg/Library/PeiPcdLib/PeiPcdLib.c | 16 +- MdePkg/Library/PeiPcdLib/PeiPcdLib.inf | 1 + .../Library/PeiServicesLib/PeiServicesLib.c | 80 +++--- .../PeiSmbusLibSmbus2Ppi/InternalSmbusLib.h | 5 +- .../PeiSmbusLibSmbus2Ppi/PeiSmbusLib.c | 8 +- .../PeiSmbusLibSmbus2Ppi.inf | 1 + .../UefiDebugLibConOut/UefiDebugLibConOut.inf | 9 +- .../UefiDebugLibStdErr/UefiDebugLibStdErr.inf | 8 +- MdePkg/Library/UefiLib/UefiLib.c | 1 + MdePkg/Library/UefiLib/UefiLib.inf | 3 +- MdePkg/Library/UefiLib/UefiLibInternal.h | 4 + MdePkg/MdePkg.dsc | 1 + 20 files changed, 508 insertions(+), 142 deletions(-) create mode 100644 MdePkg/Include/Library/PiLib.h create mode 100644 MdePkg/Library/DxePiLib/DxePiLib.c create mode 100644 MdePkg/Library/DxePiLib/DxePiLib.inf diff --git a/MdePkg/Include/Library/PeiServicesLib.h b/MdePkg/Include/Library/PeiServicesLib.h index eab3eff59e..3d0deb9ba4 100644 --- a/MdePkg/Include/Library/PeiServicesLib.h +++ b/MdePkg/Include/Library/PeiServicesLib.h @@ -30,7 +30,7 @@ EFI_STATUS EFIAPI PeiServicesInstallPpi ( - IN EFI_PEI_PPI_DESCRIPTOR *PpiList + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ); /** @@ -51,8 +51,8 @@ PeiServicesInstallPpi ( EFI_STATUS EFIAPI PeiServicesReInstallPpi ( - IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, - IN EFI_PEI_PPI_DESCRIPTOR *NewPpi + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi ); /** @@ -71,7 +71,7 @@ PeiServicesReInstallPpi ( EFI_STATUS EFIAPI PeiServicesLocatePpi ( - IN EFI_GUID *Guid, + IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi @@ -94,7 +94,7 @@ PeiServicesLocatePpi ( EFI_STATUS EFIAPI PeiServicesNotifyPpi ( - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList ); /** @@ -176,7 +176,7 @@ EFI_STATUS EFIAPI PeiServicesFfsFindNextVolume ( IN UINTN Instance, - IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle ); /** @@ -196,8 +196,8 @@ EFI_STATUS EFIAPI PeiServicesFfsFindNextFile ( IN EFI_FV_FILETYPE SearchType, - IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, - IN OUT EFI_FFS_FILE_HEADER **FileHeader + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ); /** @@ -216,7 +216,7 @@ EFI_STATUS EFIAPI PeiServicesFfsFindSectionData ( IN EFI_SECTION_TYPE SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, + IN EFI_PEI_FILE_HANDLE FileHandle, IN OUT VOID **SectionData ); diff --git a/MdePkg/Include/Library/PiLib.h b/MdePkg/Include/Library/PiLib.h new file mode 100644 index 0000000000..d15a712678 --- /dev/null +++ b/MdePkg/Include/Library/PiLib.h @@ -0,0 +1,80 @@ +/** @file + MDE PI library functions and macros + + Copyright (c) 2007, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __PI_LIB_H__ +#define __PI_LIB_H__ + +#include + +/** + Allocate and fill a buffer with an image identified by a Firmware File GUID name and a Firmware Section type. + The Firmware Volumes to search for the Firmware File can be specified to be either all Firmware Volumes + in the system, or the Firmware Volume which contains the Firmware File specified by an image handle. + + If ImageHandle is NULL, all Firmware Volumes in the system will be searched. If ImageHandle is not NULL, + ImageHandle is interpreted as EFI_PEI_FILE_HANDLE for the implementation of this function for PEI phase. + The input parameter ImageHandle is interpreted as EFI_HANDLE, on which an EFI_LOADED_IMAGE_PROTOCOL + is installed, for the implementation of this function for DXE phase. The search always starts from the FV + identified by ImageHandle. If WithinImageFv is TRUE, search will only be performed on the first FV. If WithinImageFv + is FALSE, search will continue on other FVs if it fails on the first FV. The search order of Firmware Volumes is + deterministic but arbitrary if no new firmware volume is added into the system between each search. + + The search order for the section type specified by SectionType in the Firmware File is using a depth-first + and left-to-right algorithm through all sections. The first section found to match SectionType will be returned. + + If SectionType is EFI_SECTION_PE32, EFI_SECTION_PE32 will be used as Firmware Section type + to read Firmware Section data from the Firmware File. If no such section exists, the function will try + to read a Firmware File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned. + + If SectionType is EFI_SECTION_TE, EFI_SECTION_TE will be used as Firmware Section type to read Firmware Section + data from the Firmware File. If no such section exists, EFI_SECTION_PE32 will be used as Firmware Section type to + read Firmware Section data from the Firmware File. If no such section exists, the function will try to read a Firmware + File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned. + + The data and size is returned by Buffer and Size. The caller is responsible to free the Buffer allocated + by this function. This function can only be called at TPL_NOTIFY and below. + + If ImageHandle is NULL and WithinImage is TRUE, then ASSERT (); + If NameGuid is NULL, then ASSERT(); + If Buffer is NULL, then ASSERT(); + If Size is NULL, then ASSERT(). + + @param NameGuid The GUID name of a Firmware File. + @param SectionType The Firmware Section type. + @param Buffer On output, Buffer contains the the data read from the section in the Firmware File found. + @param Size On output, the size of Buffer. + + @retval EFI_SUCCESS The image is found and data and size is returned. + @retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found. + @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations. + @retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume. + @retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads. + +**/ + +EFI_STATUS +EFIAPI +GetSectionFromFvFile ( + IN CONST VOID* ImageHandle OPTIONAL, + IN CONST EFI_GUID *NameGuid, + IN EFI_SECTION_TYPE SectionType, + OUT VOID **Buffer, + OUT UINTN *Size, + IN BOOLEAN WithImageFv + ) +; + + +#endif + diff --git a/MdePkg/Include/Pi/PiPeiCis.h b/MdePkg/Include/Pi/PiPeiCis.h index ce8dc8a849..4d95c7fbd8 100644 --- a/MdePkg/Include/Pi/PiPeiCis.h +++ b/MdePkg/Include/Pi/PiPeiCis.h @@ -126,8 +126,8 @@ typedef struct _EFI_HOB_LOAD_PEIM { typedef EFI_STATUS (EFIAPI *EFI_PEI_INSTALL_PPI) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PPI_DESCRIPTOR *PpiList + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ); /** @@ -151,9 +151,9 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_REINSTALL_PPI) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, - IN EFI_PEI_PPI_DESCRIPTOR *NewPpi + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi ); /** @@ -172,11 +172,11 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_LOCATE_PPI) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_GUID *Guid, - IN UINTN Instance, - IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, - IN OUT VOID **Ppi + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_GUID *Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL, + IN OUT VOID **Ppi ); /** @@ -197,8 +197,8 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_NOTIFY_PPI) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList ); /** @@ -213,8 +213,8 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_GET_BOOT_MODE) ( - IN EFI_PEI_SERVICES **PeiServices, - OUT EFI_BOOT_MODE *BootMode + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT EFI_BOOT_MODE *BootMode ); /** @@ -229,8 +229,8 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_SET_BOOT_MODE) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_BOOT_MODE BootMode + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_BOOT_MODE BootMode ); /** @@ -246,8 +246,8 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_GET_HOB_LIST) ( - IN EFI_PEI_SERVICES **PeiServices, - IN OUT VOID **HobList + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **HobList ); /** @@ -265,10 +265,10 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_CREATE_HOB) ( - IN EFI_PEI_SERVICES **PeiServices, - IN UINT16 Type, - IN UINT16 Length, - IN OUT VOID **Hob + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT16 Type, + IN UINT16 Length, + IN OUT VOID **Hob ); /** @@ -279,19 +279,19 @@ EFI_STATUS @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. @param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV). - @param FwVolHeader Pointer to the firmware volume header of the volume to return. + @param VolumeHandle On exit, points to the next volumn handle or NULL if it does not exist. @retval EFI_SUCCESS The volume was found. @retval EFI_NOT_FOUND The volume was not found. - @retval EFI_INVALID_PARAMETER FwVolHeader is NULL + @retval EFI_INVALID_PARAMETER VolHandle is NULL **/ typedef EFI_STATUS (EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) ( - IN EFI_PEI_SERVICES **PeiServices, - IN UINTN Instance, - IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Instance, + OUT EFI_PEI_FV_HANDLE *VolumeHandle ); /** @@ -315,10 +315,10 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_FV_FILETYPE SearchType, - IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, - IN OUT EFI_FFS_FILE_HEADER **FileHeader + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ); /** @@ -337,10 +337,10 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_SECTION_TYPE SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, - IN OUT VOID **SectionData + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + IN OUT VOID **SectionData ); /** @@ -358,7 +358,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) ( - IN EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PHYSICAL_ADDRESS MemoryBegin, IN UINT64 MemoryLength ); @@ -381,7 +381,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_ALLOCATE_PAGES) ( - IN EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_MEMORY_TYPE MemoryType, IN UINTN Pages, IN OUT EFI_PHYSICAL_ADDRESS *Memory @@ -402,7 +402,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_ALLOCATE_POOL) ( - IN EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_SERVICES **PeiServices, IN UINTN Size, OUT VOID **Buffer ); @@ -470,12 +470,12 @@ VOID typedef EFI_STATUS (EFIAPI *EFI_PEI_REPORT_STATUS_CODE) ( - IN EFI_PEI_SERVICES **PeiServices, - IN EFI_STATUS_CODE_TYPE Type, - IN EFI_STATUS_CODE_VALUE Value, - IN UINT32 Instance, - IN EFI_GUID *CallerId OPTIONAL, - IN EFI_STATUS_CODE_DATA *Data OPTIONAL + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN CONST EFI_GUID *CallerId OPTIONAL, + IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL ); /** @@ -578,7 +578,7 @@ typedef EFI_STATUS (EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) ( IN CONST EFI_PEI_FILE_HANDLE FileHandle, - OUT EFI_FV_FILE_INFO *FileInfo + OUT EFI_FV_FILE_INFO *FileInfo ); @@ -636,8 +636,8 @@ typedef struct { typedef EFI_STATUS (EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) ( - IN CONST EFI_PEI_FV_HANDLE *VolumeHandle, - OUT EFI_FV_INFO *VolumeInfo + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_FV_INFO *VolumeInfo ); /** @@ -668,7 +668,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) ( - IN CONST EFI_PEI_FILE_HANDLE FileHandle + IN EFI_PEI_FILE_HANDLE FileHandle ); diff --git a/MdePkg/Library/DxeDebugLibSerialPort/DxeDebugLibSerialPort.inf b/MdePkg/Library/DxeDebugLibSerialPort/DxeDebugLibSerialPort.inf index b9d40dc03e..a4d6f2b23a 100644 --- a/MdePkg/Library/DxeDebugLibSerialPort/DxeDebugLibSerialPort.inf +++ b/MdePkg/Library/DxeDebugLibSerialPort/DxeDebugLibSerialPort.inf @@ -41,10 +41,8 @@ PrintLib BaseLib -[FixedPcd.common] - gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask - [Pcd.common] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel + gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask diff --git a/MdePkg/Library/DxePiLib/DxePiLib.c b/MdePkg/Library/DxePiLib/DxePiLib.c new file mode 100644 index 0000000000..3261e08ade --- /dev/null +++ b/MdePkg/Library/DxePiLib/DxePiLib.c @@ -0,0 +1,256 @@ +/** @file + Mde PI library functions. + + Copyright (c) 2007, Intel Corporation
+ All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include + + +/** + Internal function which read the image specified by Firmware File GUID name and + the Firmware Section tyep from a specified Firmware Volume + + + @param Fv The Firmware Volume Protocol instance. + @param NameGuid The GUID name of a Firmware File. + @param SectionType The Firmware Section type. + @param Buffer On output, Buffer contains the the data read from the section in the Firmware File found. + @param Size On output, the size of Buffer. + + @retval EFI_SUCCESS The image is found and data and size is returned. + @retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found. + @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations. + @retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume. + @retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads. + +**/ +STATIC +EFI_STATUS +GetImageFromFv ( + IN EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv, + IN CONST EFI_GUID *NameGuid, + IN EFI_SECTION_TYPE SectionType, + OUT VOID **Buffer, + OUT UINTN *Size + ) +{ + EFI_STATUS Status; + EFI_FV_FILETYPE FileType; + EFI_FV_FILE_ATTRIBUTES Attributes; + UINT32 AuthenticationStatus; + + // + // Read desired section content in NameGuid file + // + *Buffer = NULL; + *Size = 0; + Status = Fv->ReadSection ( + Fv, + NameGuid, + SectionType, + 0, + Buffer, + Size, + &AuthenticationStatus + ); + + if (EFI_ERROR (Status) && (SectionType == EFI_SECTION_TE)) { + // + // Try reading PE32 section, since the TE section does not exist + // + *Buffer = NULL; + *Size = 0; + Status = Fv->ReadSection ( + Fv, + NameGuid, + EFI_SECTION_PE32, + 0, + Buffer, + Size, + &AuthenticationStatus + ); + } + + if (EFI_ERROR (Status) && + ((SectionType == EFI_SECTION_TE) || (SectionType == EFI_SECTION_PE32))) { + // + // Try reading raw file, since the desired section does not exist + // + *Buffer = NULL; + *Size = 0; + Status = Fv->ReadFile ( + Fv, + NameGuid, + Buffer, + Size, + &FileType, + &Attributes, + &AuthenticationStatus + ); + } + + return Status; +} + +/** + Allocate and fill a buffer with an image identified by a Firmware File GUID name and a Firmware Section type. + The Firmware Volumes to search for the Firmware File can be specified to be either all Firmware Volumes + in the system, or the Firmware Volume which contains the Firmware File specified by an image handle. + + If ImageHandle is NULL, all Firmware Volumes in the system will be searched. If ImageHandle is not NULL, + ImageHandle is interpreted as EFI_PEI_FILE_HANDLE for the implementation of this function for PEI phase. + The input parameter ImageHandle is interpreted as EFI_HANDLE, on which an EFI_LOADED_IMAGE_PROTOCOL + is installed, for the implementation of this function for DXE phase. The search always starts from the FV + identified by ImageHandle. If WithinImageFv is TRUE, search will only be performed on the first FV. If WithinImageFv + is FALSE, search will continue on other FVs if it fails on the first FV. The search order of Firmware Volumes is + deterministic but arbitrary if no new firmware volume is added into the system between each search. + + The search order for the section type specified by SectionType in the Firmware File is using a depth-first + and left-to-right algorithm through all sections. The first section found to match SectionType will be returned. + + If SectionType is EFI_SECTION_PE32, EFI_SECTION_PE32 will be used as Firmware Section type + to read Firmware Section data from the Firmware File. If no such section exists, the function will try + to read a Firmware File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned. + + If SectionType is EFI_SECTION_TE, EFI_SECTION_TE will be used as Firmware Section type to read Firmware Section + data from the Firmware File. If no such section exists, EFI_SECTION_PE32 will be used as Firmware Section type to + read Firmware Section data from the Firmware File. If no such section exists, the function will try to read a Firmware + File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned. + + The data and size is returned by Buffer and Size. The caller is responsible to free the Buffer allocated + by this function. This function can only be called at TPL_NOTIFY and below. + + If ImageHandle is NULL and WithinImage is TRUE, then ASSERT (); + If NameGuid is NULL, then ASSERT(); + If Buffer is NULL, then ASSERT(); + If Size is NULL, then ASSERT(). + + @param NameGuid The GUID name of a Firmware File. + @param SectionType The Firmware Section type. + @param Buffer On output, Buffer contains the the data read from the section in the Firmware File found. + @param Size On output, the size of Buffer. + + @retval EFI_SUCCESS The image is found and data and size is returned. + @retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found. + @retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations. + @retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume. + @retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads. + +**/ + +EFI_STATUS +EFIAPI +GetSectionFromFvFile ( + IN CONST VOID *ImageHandle, + IN CONST EFI_GUID *NameGuid, + IN EFI_SECTION_TYPE SectionType, + OUT VOID **Buffer, + OUT UINTN *Size, + IN BOOLEAN WithinImageFv + ) +{ + EFI_STATUS Status; + EFI_HANDLE *HandleBuffer; + UINTN HandleCount; + UINTN Index; + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; + EFI_FIRMWARE_VOLUME2_PROTOCOL *ImageFv; + EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv; + + ASSERT (NameGuid != NULL); + ASSERT (Buffer != NULL); + ASSERT (Size != NULL); + ASSERT (!(ImageHandle == NULL && WithinImageFv)); + + Status = EFI_NOT_FOUND; + ImageFv = NULL; + if (ImageHandle != NULL) { + Status = gBS->HandleProtocol ( + (EFI_HANDLE *) ImageHandle, + &gEfiLoadedImageProtocolGuid, + (VOID **) &LoadedImage + ); + if (EFI_ERROR (Status)) { + return Status; + } + Status = gBS->HandleProtocol ( + LoadedImage->DeviceHandle, + &gEfiFirmwareVolume2ProtocolGuid, + (VOID **) &ImageFv + ); + if (!EFI_ERROR (Status)) { + Status = GetImageFromFv (ImageFv, NameGuid, SectionType, Buffer, Size); + } + } + + if (Status == EFI_SUCCESS || WithinImageFv) { + return Status; + } + + HandleBuffer = NULL; + Status = gBS->LocateHandleBuffer ( + ByProtocol, + &gEfiFirmwareVolume2ProtocolGuid, + NULL, + &HandleCount, + &HandleBuffer + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Find desired image in all Fvs + // + for (Index = 0; Index < HandleCount; ++Index) { + Status = gBS->HandleProtocol ( + HandleBuffer[Index], + &gEfiFirmwareVolume2ProtocolGuid, + (VOID**)&Fv + ); + + if (EFI_ERROR (Status)) { + goto Done; + } + + if (ImageFv != NULL && Fv == ImageFv) { + continue; + } + + Status = GetImageFromFv (Fv, NameGuid, SectionType, Buffer, Size); + + if (!EFI_ERROR (Status)) { + goto Done; + } + } + + // + // Not found image + // + if (Index == HandleCount) { + Status = EFI_NOT_FOUND; + } + +Done: + + if (HandleBuffer != NULL) { + FreePool(HandleBuffer); + } + + return Status; +} + diff --git a/MdePkg/Library/DxePiLib/DxePiLib.inf b/MdePkg/Library/DxePiLib/DxePiLib.inf new file mode 100644 index 0000000000..e459e046a1 --- /dev/null +++ b/MdePkg/Library/DxePiLib/DxePiLib.inf @@ -0,0 +1,46 @@ +#/** @file +# Component description file library instance for PiLib for DXE phase. +# +# Library to abstract utility functions that is related to PI Specification. +# +# Copyright (c) 2007, Intel Corporation. +# +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DxePiLib + FILE_GUID = EE680C58-FFC0-4a5d-858F-66FF9C84BC9F + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = PiLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources.common] + DxePiLib.c + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + MemoryAllocationLib + DebugLib + +[Protocols] + gEfiFirmwareVolume2ProtocolGuid # ALWAYS_CONSUMED + diff --git a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c index 57a4009461..b1f6157bf5 100644 --- a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c +++ b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -44,14 +45,12 @@ InternalAllocatePages ( { EFI_STATUS Status; EFI_PHYSICAL_ADDRESS Memory; - EFI_PEI_SERVICES **PeiServices; if (Pages == 0) { return NULL; } - PeiServices = GetPeiServicesTablePointer (); - Status = (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, &Memory); + Status = PeiServicesAllocatePages (MemoryType, Pages, &Memory); if (EFI_ERROR (Status)) { Memory = 0; } @@ -353,12 +352,9 @@ AllocatePool ( ) { EFI_STATUS Status; - EFI_PEI_SERVICES **PeiServices; VOID *Buffer; - PeiServices = GetPeiServicesTablePointer (); - - Status = (*PeiServices)->AllocatePool (PeiServices, AllocationSize, &Buffer); + Status = PeiServicesAllocatePool (AllocationSize, &Buffer); if (EFI_ERROR (Status)) { Buffer = NULL; } diff --git a/MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf b/MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf index 3a867a3345..6001d6a5f5 100644 --- a/MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf +++ b/MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf @@ -43,4 +43,5 @@ DebugLib BaseMemoryLib PeiServicesTablePointerLib + PeiServicesLib diff --git a/MdePkg/Library/PeiPcdLib/PeiPcdLib.c b/MdePkg/Library/PeiPcdLib/PeiPcdLib.c index 4e66531979..ea65581ebc 100644 --- a/MdePkg/Library/PeiPcdLib/PeiPcdLib.c +++ b/MdePkg/Library/PeiPcdLib/PeiPcdLib.c @@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include +#include #include #include #include @@ -41,19 +42,8 @@ GetPcdPpiPtr ( { EFI_STATUS Status; PCD_PPI *PcdPpi; - EFI_PEI_SERVICES **PeiServices; - - - PeiServices = GetPeiServicesTablePointer (); - - Status = (**PeiServices).LocatePpi ( - PeiServices, - &gPcdPpiGuid, - 0, - NULL, - (VOID **)&PcdPpi - ); - + + Status = PeiServicesLocatePpi (&gPcdPpiGuid, 0, NULL, (VOID **)&PcdPpi); ASSERT_EFI_ERROR (Status); return PcdPpi; diff --git a/MdePkg/Library/PeiPcdLib/PeiPcdLib.inf b/MdePkg/Library/PeiPcdLib/PeiPcdLib.inf index dc9ca4c169..f48f929a44 100644 --- a/MdePkg/Library/PeiPcdLib/PeiPcdLib.inf +++ b/MdePkg/Library/PeiPcdLib/PeiPcdLib.inf @@ -42,6 +42,7 @@ [LibraryClasses] BaseMemoryLib PeiServicesTablePointerLib + PeiServicesLib DebugLib diff --git a/MdePkg/Library/PeiServicesLib/PeiServicesLib.c b/MdePkg/Library/PeiServicesLib/PeiServicesLib.c index cdcb857185..c5b12be721 100644 --- a/MdePkg/Library/PeiServicesLib/PeiServicesLib.c +++ b/MdePkg/Library/PeiServicesLib/PeiServicesLib.c @@ -34,12 +34,12 @@ EFI_STATUS EFIAPI PeiServicesInstallPpi ( - IN EFI_PEI_PPI_DESCRIPTOR *PpiList + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->InstallPpi (PeiServices, PpiList); } @@ -61,13 +61,13 @@ PeiServicesInstallPpi ( EFI_STATUS EFIAPI PeiServicesReInstallPpi ( - IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, - IN EFI_PEI_PPI_DESCRIPTOR *NewPpi + IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->ReInstallPpi (PeiServices, OldPpi, NewPpi); } @@ -87,15 +87,15 @@ PeiServicesReInstallPpi ( EFI_STATUS EFIAPI PeiServicesLocatePpi ( - IN EFI_GUID *Guid, + IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->LocatePpi (PeiServices, Guid, Instance, PpiDescriptor, Ppi); } @@ -116,12 +116,12 @@ PeiServicesLocatePpi ( EFI_STATUS EFIAPI PeiServicesNotifyPpi ( - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->NotifyPpi (PeiServices, NotifyList); } @@ -140,9 +140,9 @@ PeiServicesGetBootMode ( IN OUT EFI_BOOT_MODE *BootMode ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->GetBootMode (PeiServices, BootMode); } @@ -160,9 +160,9 @@ PeiServicesSetBootMode ( IN EFI_BOOT_MODE BootMode ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->SetBootMode (PeiServices, BootMode); } @@ -181,9 +181,9 @@ PeiServicesGetHobList ( IN OUT VOID **HobList ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->GetHobList (PeiServices, HobList); } @@ -206,9 +206,9 @@ PeiServicesCreateHob ( IN OUT VOID **Hob ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->CreateHob (PeiServices, Type, Length, Hob); } @@ -228,13 +228,13 @@ EFI_STATUS EFIAPI PeiServicesFfsFindNextVolume ( IN UINTN Instance, - IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); - return (*PeiServices)->FfsFindNextVolume (PeiServices, Instance, FwVolHeader); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); + return (*PeiServices)->FfsFindNextVolume (PeiServices, Instance, VolumeHandle); } /** @@ -254,14 +254,14 @@ EFI_STATUS EFIAPI PeiServicesFfsFindNextFile ( IN EFI_FV_FILETYPE SearchType, - IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, - IN OUT EFI_FFS_FILE_HEADER **FileHeader + IN EFI_PEI_FV_HANDLE VolumeHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); - return (*PeiServices)->FfsFindNextFile (PeiServices, SearchType, FwVolHeader, FileHeader); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); + return (*PeiServices)->FfsFindNextFile (PeiServices, SearchType, VolumeHandle, FileHandle); } /** @@ -280,13 +280,13 @@ EFI_STATUS EFIAPI PeiServicesFfsFindSectionData ( IN EFI_SECTION_TYPE SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, + IN EFI_PEI_FILE_HANDLE FfsFileHeader, IN OUT VOID **SectionData ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->FfsFindSectionData (PeiServices, SectionType, FfsFileHeader, SectionData); } @@ -309,9 +309,9 @@ PeiServicesInstallPeiMemory ( IN UINT64 MemoryLength ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->InstallPeiMemory (PeiServices, MemoryBegin, MemoryLength); } @@ -337,9 +337,9 @@ PeiServicesAllocatePages ( IN OUT EFI_PHYSICAL_ADDRESS *Memory ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory); } @@ -361,9 +361,9 @@ PeiServicesAllocatePool ( OUT VOID **Buffer ) { - EFI_PEI_SERVICES **PeiServices; + CONST EFI_PEI_SERVICES **PeiServices; - PeiServices = GetPeiServicesTablePointer (); + PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer (); return (*PeiServices)->AllocatePool (PeiServices, Size, Buffer); } @@ -380,7 +380,7 @@ PeiServicesResetSystem ( VOID ) { - EFI_PEI_SERVICES **PeiServices; + EFI_PEI_SERVICES **PeiServices; PeiServices = GetPeiServicesTablePointer (); return (*PeiServices)->ResetSystem (PeiServices); diff --git a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/InternalSmbusLib.h b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/InternalSmbusLib.h index 81104db727..acd7ab7a25 100644 --- a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/InternalSmbusLib.h +++ b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/InternalSmbusLib.h @@ -24,6 +24,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #include #define SMBUS_LIB_SLAVE_ADDRESS(SmBusAddress) (((SmBusAddress) >> 1) & 0x7f) @@ -41,14 +42,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. This internal function retrieves Smbus PPI from PPI database. - @param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation. + @param VOID @return The pointer to Smbus PPI. **/ EFI_PEI_SMBUS2_PPI * InternalGetSmbusPpi ( - EFI_PEI_SERVICES **PeiServices + VOID ); /** diff --git a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLib.c b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLib.c index 103e5ed5c6..d78682a694 100644 --- a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLib.c +++ b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLib.c @@ -26,13 +26,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ EFI_PEI_SMBUS2_PPI * InternalGetSmbusPpi ( - EFI_PEI_SERVICES **PeiServices + VOID ) { EFI_STATUS Status; EFI_PEI_SMBUS2_PPI *SmbusPpi; - Status = (*PeiServices)->LocatePpi (PeiServices, &gEfiPeiSmbus2PpiGuid, 0, NULL, (VOID **) &SmbusPpi); + Status = PeiServicesLocatePpi (&gEfiPeiSmbus2PpiGuid, 0, NULL, (VOID **) &SmbusPpi); ASSERT_EFI_ERROR (Status); ASSERT (SmbusPpi != NULL); @@ -70,12 +70,10 @@ InternalSmBusExec ( ) { EFI_PEI_SMBUS2_PPI *SmbusPpi; - EFI_PEI_SERVICES **PeiServices; RETURN_STATUS ReturnStatus; EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress; - PeiServices = GetPeiServicesTablePointer (); - SmbusPpi = InternalGetSmbusPpi (PeiServices); + SmbusPpi = InternalGetSmbusPpi (); SmbusDeviceAddress.SmbusDeviceAddress = SMBUS_LIB_SLAVE_ADDRESS (SmBusAddress); ReturnStatus = SmbusPpi->Execute ( diff --git a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLibSmbus2Ppi.inf b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLibSmbus2Ppi.inf index 1e0a9f225e..05a6ae2315 100644 --- a/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLibSmbus2Ppi.inf +++ b/MdePkg/Library/PeiSmbusLibSmbus2Ppi/PeiSmbusLibSmbus2Ppi.inf @@ -42,6 +42,7 @@ [LibraryClasses] BaseMemoryLib PeiServicesTablePointerLib + PeiServicesLib DebugLib [Ppis] diff --git a/MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf b/MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf index 074ba24519..0a51c142c4 100644 --- a/MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf +++ b/MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf @@ -46,13 +46,8 @@ PrintLib UefiBootServicesTableLib - - -[FixedPcd.common] - gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask - - [Pcd.common] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel + gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask diff --git a/MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf b/MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf index 67aeb066b6..de03bc64c6 100644 --- a/MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf +++ b/MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf @@ -44,12 +44,8 @@ PrintLib UefiBootServicesTableLib - -[FixedPcd.common] - gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask - - [Pcd.common] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel + gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask diff --git a/MdePkg/Library/UefiLib/UefiLib.c b/MdePkg/Library/UefiLib/UefiLib.c index 28f5c7d883..12a717aa27 100644 --- a/MdePkg/Library/UefiLib/UefiLib.c +++ b/MdePkg/Library/UefiLib/UefiLib.c @@ -1209,3 +1209,4 @@ FreeUnicodeStringTable ( return EFI_SUCCESS; } + diff --git a/MdePkg/Library/UefiLib/UefiLib.inf b/MdePkg/Library/UefiLib/UefiLib.inf index eac192817c..7aa1812d0b 100644 --- a/MdePkg/Library/UefiLib/UefiLib.inf +++ b/MdePkg/Library/UefiLib/UefiLib.inf @@ -67,9 +67,10 @@ gEfiDriverConfigurationProtocolGuid # SOMETIMES_CONSUMED gEfiDriverDiagnosticsProtocolGuid # SOMETIMES_CONSUMED gEfiDriverDiagnostics2ProtocolGuid # SOMETIMES_CONSUMED + gEfiFirmwareVolume2ProtocolGuid # ALWAYS_CONSUMED -[FixedPcd.common] +[Pcd.common] gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize [FeaturePcd.common] diff --git a/MdePkg/Library/UefiLib/UefiLibInternal.h b/MdePkg/Library/UefiLib/UefiLibInternal.h index 82ba4c439e..b21e5d1559 100644 --- a/MdePkg/Library/UefiLib/UefiLibInternal.h +++ b/MdePkg/Library/UefiLib/UefiLibInternal.h @@ -21,6 +21,9 @@ #include #include #include +#include +#include + #include #include #include @@ -32,4 +35,5 @@ #include #include + #endif diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc index e78f66d042..c7c8d97715 100644 --- a/MdePkg/MdePkg.dsc +++ b/MdePkg/MdePkg.dsc @@ -72,6 +72,7 @@ MdePkg/Library/PeiHobLib/PeiHobLib.inf MdePkg/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf MdePkg/Library/DxePcdLib/DxePcdLib.inf + MdePkg/Library/DxePiLib/DxePiLib.inf MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf MdePkg/Library/DxeSmbusLib/DxeSmbusLib.inf MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf -- 2.39.2